Rak*_*ian 5 openshift openshift-origin kubernetes kubernetes-pod okd
我正在覆盖 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 服务器。
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 次 |
| 最近记录: |