我正在覆盖pod的dns策略,因为我面对的是pod的默认/etc/resolv.conf的issue。另一个问题是,由于pod的默认/etc/resolv.conf,pod无法连接到smtp服务器服务器
因此,希望应用于部署/pod的策略是:
dnsConfig:
nameservers:
- <ip-of-the-node>
options:
- name: ndots
value: '5'
searches:
- monitoring.svc.cluster.local
- svc.cluster.local
- cluster.local
dnsPolicy: None在上面的配置中,nameservers需要是部署pod的节点的IP。因为我有三个工作节点,所以我不能将值硬编码为特定工作节点的IP。我不喜欢将pod配置为部署到特定节点,因为如果资源不足以使pod部署到特定节点,pod可能会保持挂起状态。
如何让nameservers获取部署pod的节点的IP地址值?
或者是否可以用某种类型的通用参数来更新nameservers,以便pod能够连接到smtp服务器。
发布于 2020-10-13 01:38:59
dnsConfig指定了support up to 3 IP addresses,因此理论上您可以在nameservers字段中对其进行硬编码。但是,作为一种变通方法,您可以将节点ip地址作为env variable and then pass it to the 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.hostIPfieldPath: status.hostIP获取部署pod的节点的IP地址,并将其保存为环境变量。然后将其写入/etc/resolv.conf。
https://stackoverflow.com/questions/64308334
复制相似问题