Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何在dnsConfig中将节点ip设置为名称服务器?_Kubernetes_Openshift_Kubernetes Pod_Openshift Origin_Okd - Fatal编程技术网

Kubernetes 如何在dnsConfig中将节点ip设置为名称服务器?

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:

我正在覆盖pod的dns策略,因为我面临一个pod的默认值
/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使用image
grafana:7.1.5
,它具有securityContext
fsGroup
runAsUser
作为
472
运行pod,我已尝试更新securityContext
runAsUser:0
,但不幸的是,grafana pod因此更改而崩溃。您可以创建一个pod安全策略并运行
privileged
pod