[toc]
安装DNS后,pod就可以通过dns来解析service,从而实现通信
kubernetes 版本:
kubectl version
我当前的版本是1.9.0
1、kubectl dns 的安装
1.1 在官网下载配置文件
https://github.com/kubernetes/kubernetes
具体路径是cluster/addons/dns/kube-dns
可能版本不一样,路径略有不同
该路径下有三个相似的配置文件:
kube-dns.yaml.base
kube-dns.yaml.in
kube-dns.yaml.sed
在此,我们使用kube-dns.yaml.sed配置文件作为模板;
1.2 需要修改其中的两个属性
- $DNS_SERVER_IP 指定的是k8s dns的ip, 默认是apiserver ip
- $DNS_DOMAIN,替换为cluster.local(与kube-apiserver定义的一致)
1.3 具体修改命令,可以使用sed命令
将kube-dns.yaml.sed配置文件,拷贝到k8s集群所在的某个服务器中
- 对配置文件重命名
- move kube-dns.yaml.sed kube-dns.yaml
- 批量修改属性
- sed -i ‘s/$DNS_SERVER_IP/10.10.10.2/g‘ kube-dns.yaml
- sed -i ‘s/$DNS_DOMAIN/cluster.local/g‘ kube-dns.yaml
1.4 启动dns服务
kubectl create -f kube-dns.yaml
2 测试dns服务
2.1 创建一个pod和service
配置文件curl.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: curl
namespace: kube-system
spec:
replicas: 1
template:
metadata:
labels:
app: curl
spec:
containers:
- name: curl
image: appropriate/curl
command: ["sleep"]
args: ["5000"]
---
apiVersion: v1
kind: Service
metadata:
name: curl
namespace: kube-system
labels:
app: curl
spec:
type: ClusterIP
selector:
app: curl
ports:
- port: 80
targetPort: 80
name: http
protocol: TCP
2.2 创建一个dns测试工具pod
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: tools-dns
namespace: default
spec:
replicas: 1
template:
metadata:
labels:
app: tools-dns
spec:
containers:
- name: tools-dns
image: tutum/dnsutils:latest
command: ["sleep"]
args: ["5000"]
2.3 查看刚才创建测试pod, tools-dns
kubectl get pod
2.4 进入容器后,使用下面的命令来进行查询
kubectl exec -it tools-dns-5665d49688-8jrnw /bin/bash
- 查看A记录(就是地址记录IPv4)
- nslookup -query=a _http._tcp.curl.kube-system
- 查看srv记录(一个域名系统(DNS)资源记录,用于标识承载特定服务的计算机)
- nslookup -query=srv _http._tcp.curl.kube-system
(说明:service = 10(优先级) 100(比重) 80(端口) curl.kube-system.svc.cluster.local(主机名).)
- nslookup -query=srv _http._tcp.curl.kube-system
2.5 测试中发现的问题:
1、 如果发现镜像有问题的话,需要更新镜像,
如“k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64:1.14.10” 改成“ index.tenxcloud.com/jimmy/k8s-dns-dnsmasq-nanny-amd64:1.14.1”
将"k8s.gcr.io/k8s-dns-sidecar-amd64:1.14.10" 改成"index.tenxcloud.com/jimmy/k8s-dns-sidecar-amd64:1.14.1"
将" k8s.gcr.io/k8s-dns-kube-dns-amd64:1.14.10" 替换为"index.tenxcloud.com/jimmy/k8s-dns-kube-dns-amd64:1.14.1
2、如果发现"Liveness probe failed: Get http://172.17.97.2:10054/healthcheck/kubedns: dial tcp 172.17.97.2:10054: getsockopt: connection refused"问题,需要将"SRV"改成"A"
参考文献:
https://blog.csdn.net/kozazyh/article/details/79443852
原文地址:http://blog.51cto.com/xingej/2130490
时间: 2024-11-01 21:58:53