Rak*_*ian 5 openshift openshift-origin kubernetes kubernetes-pod okd
我正在覆盖 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 服务器。
dnsConfig
支持最多指定 3 个 IP 地址,因此理论上您可以在现场对其进行硬编码nameservers
。但是,作为解决方法,您可以将节点 IP 地址作为env 变量传递,然后将其传递给 pod。例子:
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
Run Code Online (Sandbox Code Playgroud)
fieldPath: status.hostIP
获取部署 pod 的节点的 IP 地址并将其保存为环境变量。然后它被写入/etc/resolv.conf
。
归档时间: |
|
查看次数: |
348 次 |
最近记录: |