我观察到,当 exec 到 pod 时,我的集群中的 pod 无法安装软件包。在调试时,我意识到这是由于/etc/resolv.conf 条目造成的。
/etc/resolv.conf 来自其中一个 pod的条目是:
nameserver 192.168.27.116
search ui-container.svc.cluster.local svc.cluster.local cluster.local 192.168.27.116.nip.io
options ndots:5
Run Code Online (Sandbox Code Playgroud)
在这里,如果我192.168.27.116.nip.io从所有 master、worker 节点的 resolv.conf 中删除一个条目,那么 pod 将能够连接到 Internetapt-get update并apt-get install正常工作。这只是一个临时解决方法,因为不建议更新 resolv.conf。因为我观察到 resolv.conf 内容在节点重新启动时被重新设置为原始内容。
是因为options ndots:5在/etc/resolv.conf吗?
我怎样才能解决这个问题?
我正在覆盖 pod 的 dns 策略,因为我面临着pod 的默认问题/etc/resolv.conf。另一个问题是由于/etc/resolv.confpod 的默认设置,pod无法连接到 smtp 服务器
因此,需要应用于部署/pod 的 dnspolicy 是:
dnsConfig:
nameservers:
- <ip-of-the-node>
options:
- name: ndots
value: '5'
searches:
- monitoring.svc.cluster.local
- svc.cluster.local
- cluster.local
dnsPolicy: None
Run Code Online (Sandbox Code Playgroud)
在上面的配置中,nameservers需要是部署 pod 的节点的 IP。由于我有三个工作节点,我无法将值硬编码到特定工作节点的 IP。我不希望将 pod 配置为部署到特定节点,因为如果资源不足以让 pod 部署到特定节点,则 pod 可能会保持挂起状态。
如何nameservers获取部署 pod 的节点的 IP 地址的值?
或者是否可以nameservers使用某种通用参数更新pod,以便 pod 能够连接到 smtp 服务器。
我从https://gist.github.com/thomasdarimont/145dc9aa857b831ff2eff221b79d179a引用了一个与 key-cloak 登录集成的示例 hello-world 烧瓶应用程序
我的 client-secrets.json 如下:
{
"web": {
"issuer": "https://keycloak-keycloak.router.default.svc.cluster.local.167.254.224.26.nip.io/auth/realms/myrealm",
"auth_uri": "https://keycloak-keycloak.router.default.svc.cluster.local.167.254.224.26.nip.io/auth/realms/myrealm/protocol/openid-connect/auth",
"client_id": "myclient",
"client_secret": "****",
"redirect_uris": [
"https://167.254.224.26:30397/*"
],
"userinfo_uri": "https://keycloak-keycloak.router.default.svc.cluster.local.167.254.224.26.nip.io/auth/realms/myrealm/protocol/openid-connect/userinfo",
"token_uri": "https://keycloak-keycloak.router.default.svc.cluster.local.167.254.224.26.nip.io/auth/realms/myrealm/protocol/openid-connect/token",
"token_introspection_uri": "https://keycloak-keycloak.router.default.svc.cluster.local.167.254.224.26.nip.io/auth/realms/myrealm/protocol/openid-connect/token/introspect"
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行python app.py它运行成功但是一旦我浏览应用程序 url 并单击登录,它就会带我到 keycloack 登录页面,在我输入我的凭据后,我收到以下错误
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/usr/local/lib/python3.7/site-packages/flask/app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.7/site-packages/flask/_compat.py", line 35, in reraise
raise …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下命令在 openshift 3.11 中部署 mongodb 社区操作员
git clone https://github.com/mongodb/mongodb-kubernetes-operator.git
cd mongodb-kubernetes-operator
oc new-project mongodb
oc create -f deploy/crds/mongodb.com_mongodb_crd.yaml -n mongodb
oc create -f deploy/operator/role.yaml -n mongodb
oc create -f deploy/operator/role_binding.yaml -n mongodb
oc create -f deploy/operator/service_account.yaml -n mongodb
oc apply -f deploy/openshift/operator_openshift.yaml -n mongodb
oc apply -f deploy/crds/mongodb.com_v1_mongodb_openshift_cr.yaml -n mongodb
Run Code Online (Sandbox Code Playgroud)
Operator pod 已成功运行,但 mongodb 副本集 pods 没有出现。错误如下
[kubenode@master mongodb-kubernetes-operator]$ oc get pods
NAME READY STATUS RESTARTS AGE
example-openshift-mongodb-0 1/2 CrashLoopBackOff 4 2m
mongodb-kubernetes-operator-66bfcbcf44-9xvj7 1/1 Running 0 2m
[kubenode@master mongodb-kubernetes-operator]$ oc …Run Code Online (Sandbox Code Playgroud)