该服务在pods的/etc/resolv.conf下分配名称服务器,通常它应从主机/etc/resolv.conf中拾取,我在pods的/etc/resolv.conf下看到不同的名称服务器,是否有任何我可以配置的kbernetes(kubedns)上的配置,以便Pod /etc/resolv.conf具有8.8.8.8
答案 0 :(得分:1)
kube-dns
确实(通过Kubelet)修改了该文件。 kube-dns
监视API服务器并观察对服务和端点的更改,并使DNS记录保持最新。
在Cluster中,您应该使用内部Kubernetes DNS。
DNS是附加控制器,您可以使用任何其他实现。
看看here。
如果您要覆盖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
答案 1 :(得分:0)
从k8s 1.9开始,如果要为Pod设置特定的dns配置,则可以使用dns policy None。
它允许Pod忽略Kubernetes环境中的DNS设置。应该使用Pod Spec中的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
在“部署”部分中具有以下配置:
dnsConfig:
nameservers:
- 8.8.8.8
dnsPolicy: "None"
cat /etc/resolv.conf
nameserver 8.8.8.8
答案 2 :(得分:0)
您有两个选择:
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
通过这种方式,您可以映射dnsConfig
下/etc/resolv.conf
中的任何内容
# cat /etc/resolv.conf
nameserver 8.8.8.8
对于upstreamNameservers
,实际上存在另一种方式,就是“攻击” kube-dn:
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-dns
namespace: kube-system
data:
upstreamNameservers: |
["8.8.8.8", "8.8.4.4"]
但是在这种情况下,您不会在pod内做任何事情(因此/etc/resolv.conf
不会被修改),但是kube-dns
会使用这些名称服务器来解析。
答案 3 :(得分:0)
@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文件内部用作模板。 https://github.com/jenkinsci/kubernetes-plugin/blob/master/examples/中提供了更多示例。