Kubernetes 如何将/etc/resolv.conf下的自定义名称服务器添加到pod中?
哪个服务在pods的/etc/resolv.conf下分配名称服务器,通常它应该从主机/etc/resolv.conf获取,我在pods的/etc/resolv.conf下看到不同的名称服务器,kberneteskubedns上是否有我可以配置的任何配置,以便pods/etc/resolv.conf具有8.8.8.8kube dns通过Kubelet修改此文件。kube dns监视API服务器,观察服务和端点的更改,并保持dns记录最新。 在集群内,您应该使用内部Kubernetes DNS DNS是附加控制器,您可以使用任何其他实现 看一看 如果你想覆盖kube dnsKubernetes 如何将/etc/resolv.conf下的自定义名称服务器添加到pod中?,kubernetes,kubernetes-helm,kubernetes-pod,Kubernetes,Kubernetes Helm,Kubernetes Pod,哪个服务在pods的/etc/resolv.conf下分配名称服务器,通常它应该从主机/etc/resolv.conf获取,我在pods的/etc/resolv.conf下看到不同的名称服务器,kberneteskubedns上是否有我可以配置的任何配置,以便pods/etc/resolv.conf具有8.8.8.8kube dns通过Kubelet修改此文件。kube dns监视API服务器,观察服务和端点的更改,并保持dns记录最新。 在集群内,您应该使用内部Kubernetes DNS D
apiVersion: v1
kind: Pod
metadata:
namespace: default
name: dns-example
spec:
containers:
- name: test
image: nginx
dnsPolicy: "None"
dnsConfig:
nameservers:
- 1.2.3.4
searches:
- ns1.svc.cluster-domain.example
- my.dns.search.suffix
options:
- name: ndots
value: "2"
- name: edns0
kube dns通过Kubelet修改此文件。kube dns监视API服务器,观察服务和端点的更改,并保持dns记录最新。
在集群内,您应该使用内部Kubernetes DNS
DNS是附加控制器,您可以使用任何其他实现
看一看
如果你想覆盖kube dns
apiVersion: v1
kind: Pod
metadata:
namespace: default
name: dns-example
spec:
containers:
- name: test
image: nginx
dnsPolicy: "None"
dnsConfig:
nameservers:
- 1.2.3.4
searches:
- ns1.svc.cluster-domain.example
- my.dns.search.suffix
options:
- name: ndots
value: "2"
- name: edns0
从K8S1.9开始,如果您想为pod设置特定的dns配置,可以使用 它允许Pod忽略Kubernetes环境中的DNS设置。应使用Pod规范中的dnsConfig字段提供所有DNS设置 默认情况下,名称服务器IP是kube dns的Kubernetes服务IP
cat /etc/resolv.conf
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
kubectl get service -n kube-system
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 2d21h
cat/etc/resolv.conf
nameserver 8.8.8.8从k8s 1.9开始,如果要为pod设置特定的dns配置,可以使用 它允许Pod忽略Kubernetes环境中的DNS设置。应使用Pod规范中的dnsConfig字段提供所有DNS设置 默认情况下,名称服务器IP是kube dns的Kubernetes服务IP
cat /etc/resolv.conf
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
kubectl get service -n kube-system
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 2d21h
cat/etc/resolv.conf
nameserver 8.8.8.8您有两个选项:
1.-将其放在configMap中,并将其映射到/etc/resolv.conf,在这种情况下,它将被configMap中的内容替换
2.-你可以这样做:
apiVersion: v1
kind: Pod
metadata:
namespace: default
name: my-pod
spec:
containers:
- name: nginx
image: nginx
dnsPolicy: "None"
dnsConfig:
nameservers:
- 8.8.8.8
这样,您就可以在/etc/resolv.conf下映射dnsConfig中的任何内容
实际上,还有另一种方法,通过入侵kube dns,用于上游服务器:
但在这种情况下,您不会在pod内执行任何操作,因此/etc/resolv.conf不会被修改,但kube dns将使用这些名称服务器进行解析。您有两种选择:
1.-将其放在configMap中,并将其映射到/etc/resolv.conf,在这种情况下,它将被configMap中的内容替换
2.-你可以这样做:
apiVersion: v1
kind: Pod
metadata:
namespace: default
name: my-pod
spec:
containers:
- name: nginx
image: nginx
dnsPolicy: "None"
dnsConfig:
nameservers:
- 8.8.8.8
这样,您就可以在/etc/resolv.conf下映射dnsConfig中的任何内容
实际上,还有另一种方法,通过入侵kube dns,用于上游服务器:
但在这种情况下,您不会在pod中执行任何操作,因此/etc/resolv.conf不会被修改,但kube dns将使用这些名称服务器进行解析。@venkatesh我认为您指的是jenkins文件中使用的pod模板。 如果是这样的话,试试这个
podTemplate( yaml:"""
apiVersion: v1
kind: Pod
metadata:
name: pod-example
spec:
containers:
- name: ubuntu
image: ubuntu:trusty
command: ["echo"]
args: ["Hello World"]
dnsPolicy: "None"
dnsConfig:
nameservers:
- 8.8.8.8
""")
yaml文件可以直接在jenkins文件中用作模板。
更多示例见。@venkatesh我认为您指的是jenkins文件中使用的podTemplate。 如果是这样的话,试试这个
podTemplate( yaml:"""
apiVersion: v1
kind: Pod
metadata:
name: pod-example
spec:
containers:
- name: ubuntu
image: ubuntu:trusty
command: ["echo"]
args: ["Hello World"]
dnsPolicy: "None"
dnsConfig:
nameservers:
- 8.8.8.8
""")
yaml文件可以直接在jenkins文件中用作模板。
更多的例子见。你能提供任何支持这一理论的信息吗?从未听说过kube dns修改/etc/resolv.conf文件。@当然,这是通过Kubelet间接完成的。我不这么认为。我想说你把kube dns和kube proxy搞混了。我相信kube proxy在当前的实现中只会修改iptables。那么,你读过kube dns直接或间接修改resolv.conf文件的地方吗?因为听起来确实很自信,而且根本没有任何意义。你能提供任何支持这一理论的信息吗?从未听说过kube dns修改/etc/resolv.conf文件。@当然,这是通过Kubelet间接完成的。我不这么认为。我想说你把kube dns和kube proxy搞混了。我相信kube proxy在当前的实现中只会修改iptables。那么,你读过kube dns直接或间接修改resolv.conf文件的地方吗?因为这听起来非常自信,而且根本没有任何意义。谢谢您,是否可以在podTemplatelabel:label,containers:[containerTemplatename:'maven',image:'maven:3.5-jdk-8',command:'cat',ttyEnabled:true]下添加dns配置,感谢您可以在podTemplatelabel:label,containers:[containerTemplatename:'maven',image:'maven:3.5-jdk-8',command:'cat',ttyEnabled:true]下添加dns配置,