k8s_基于1.5版本建立dns

2 min read
k8sdockerkubernetes

基于1.5版本建立dns

1 准备工作

因为要用到gcr的镜像,所以给docker配置http代理
创建/etc/systemd/system/docker.service.d/http-proxy.conf文件:(需要自己有vpn,如影梭之类的)

[Service]
Environment="HTTP_PROXY=http://[proxy-addr]:[proxy-port]/" "HTTPS_PROXY=http://[proxy-addr]:[proxy-port]/"
systemctl daemon-reload
systemctl restart docker

使用这个yml进行dns rc的创建,这个文件创建一个rc和一个pod,其中有4个容器。文件大部分内容不需要进行任何修改,只需修改72行master中apiserver的url。

使用这个yml进行dns svc的创建,这个文件大部分内容也不需要修改,只需要修改13行,该svc在集群中的IP要定死,注意该IP需要在你的k8s集群分配的IP池中,如果不知道自己IP池是多少可以查看/etc/kubernetes/apiserver

先不要急于创建上述资源,而是修改/etc/kubernetes/kubelet这个配置文件中的最后一项,其中--cluster_dns指向刚才yml文件中定好的IP

...
KUBELET_ARGS="--cluster_dns=10.254.0.100 --cluster_domain=cluster.local"

重启kubelet服务

systemctl restart kubelet

2 开始创建

kubectl create -f skydns.yml
kubectl create -f skydns-svc.yml

3 测试

创建deployment和svc

kubectl run test --image sunwu51/node --port 1880
kubectl expose deployment test --target-port 1880

进入pod后,运行ping和curl

kubectl exec -it xxxxxx bash
ping test     //没有响应                        
curl test:1880//有结果

说明映射成功,ping没有结果的原因之前有讲过