Kubernetes 如何在dnsConfig中将节点ip设置为名称服务器?
我正在覆盖pod的dns策略,因为我面临一个pod的默认值Kubernetes 如何在dnsConfig中将节点ip设置为名称服务器?,kubernetes,openshift,kubernetes-pod,openshift-origin,okd,Kubernetes,Openshift,Kubernetes Pod,Openshift Origin,Okd,我正在覆盖pod的dns策略,因为我面临一个pod的默认值/etc/resolv.conf。另一个问题是,由于pod的默认值/etc/resolv.conf,pod无法连接到smtp服务器 因此,需要应用于部署/吊舱的DNS策略为: dnsConfig: nameservers: - <ip-of-the-node> options: - name: ndots value:
/etc/resolv.conf
。另一个问题是,由于pod的默认值/etc/resolv.conf
,pod无法连接到smtp服务器
因此,需要应用于部署/吊舱的DNS策略为:
dnsConfig:
nameservers:
- <ip-of-the-node>
options:
- name: ndots
value: '5'
searches:
- monitoring.svc.cluster.local
- svc.cluster.local
- cluster.local
dnsPolicy: None
dnsConfig:
名称服务器:
-
选项:
-姓名:ndots
值:“5”
搜索:
-monitoring.svc.cluster.local
-svc.cluster.local
-集群本地
外交部:没有
在上述配置中,nameservers
需要是部署pod的节点的IP。因为我有三个工作节点,所以我无法将值硬编码到特定工作节点的IP。我不希望将pod配置为部署到特定节点,因为如果资源不足,pod无法部署到特定节点,pod可能会保持挂起状态
如何使名称服务器
获得部署pod的节点的IP地址值
或者是否可以使用某种通用参数更新名称服务器
,以便pod能够连接到smtp服务器。dnsConfig
已指定,因此理论上可以在名称服务器
字段中硬编码。但是,作为一种解决方法,您可以将节点ip地址作为一个地址传递。例如:
spec:
containers:
- name: envar-demo-container
command: ["/bin/sh"]
args: ["-c", "printenv NODE_IP >> /etc/resolv.conf"]
image: nginx
env:
- name: NODE_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
fieldPath:status.hostIP
获取部署pod的节点的IP地址,并将其保存为环境变量。然后将其写入/etc/resolv.conf
哇,感谢您的解决方案,一旦我使用上述更改进行更新,我就会收到一个错误:/bin/sh:cannotcreate/etc/resolv.conf:Permission denied
。Im使用imagegrafana:7.1.5
,它具有securityContextfsGroup
和runAsUser
作为472
运行pod,我已尝试更新securityContextrunAsUser:0
,但不幸的是,grafana pod因此更改而崩溃。您可以创建一个pod安全策略并运行privileged
pod