我观察到,当 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.conf
pod 的默认设置,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)