kubernetes1.3的dns搭建

本文介绍了在CentOS 7.64位系统上,使用Kubernetes 1.3版本搭建DNS服务的过程。在搭建过程中遇到使用service名验证时的问题,但仅通过IP地址可以验证成功。主要步骤包括复制ubuntu目录下的deployAddons.sh脚本到centos目录,该脚本用于部署DNS和dashboard插件。在1.3版本中,DNS服务的镜像与先前版本不同,采用的是三种特定的镜像。
摘要由CSDN通过智能技术生成

       上周进行了1.3的DNS服务的搭建,根据网友的提供进行验证,但是似乎有点问题,只有用ip的时候,可以验证通过,但是用service名验证似乎存在问题,这个后面具体再说。

       我的搭建版本是1.3,系统是centos7,64位。下面我来说下我的部署方法:

       首先根据kubernetes的安装包的解压环境,进入目录/opt/kubernetes/cluster进入目录,然后进入ubuntu目录,copy此目录下的deployAddons.sh脚本,到上级目录的centos目录下,此处的命令如下:

cd /opt/kubernetes/cluster/ubuntu
cp deployAddons.sh ../centos/

很多人可能奇怪我为什么要copy这个脚本,我也是根据网上资料看的,但是资料部署的是ubuntu环境下的,我猜想大概思想一样。然后我查看了copy的脚本,这个脚本就是用来部署k8s的两个常用插件:dns和dashboard的里边内容就是根据你的相关值,去替换yaml文件中对应的占位符,然后生成yaml文件,来生成相关的svc以及service,就跟网上大多数资料中的 skydns-svc.yaml,skydns-rc.yaml文件一样,这里我要提下,1.3的dns服务,和之前的版本的有点区别,不再是skydns,kube2sky以及etcd这种,而是使用以下三种镜像,如果你能看懂deployAddons.sh这个脚本,就可以从它里边引用找到对应的yaml文件,从而看到所需的镜像文件,我的所需如下三种:

gcr.io/google_containers/kubedns-amd64:1.5
gcr.io/google_containers/kube-dnsmasq-amd64:1.3
gcr.io/google_containers/exechealthz-amd64:1.1

至于这种具体的变化我可能还不能很清楚的解释,单纯从部署环境的角度,你所需要准备的就是这些。还有就是需要修改下centos文件夹下的config-default文件,新增如下配置:
# Optional: Install cluster DNS.
ENABLE_CLUSTER_DNS="${KUBE_ENABLE_CLUSTER_DNS:-true}"
# DNS_SERVER_IP must be a IP in SERVICE_CLUSTER_IP_RANGE
DNS_SERVER_IP=${DNS_SERVER_IP:-"10.254.0.10"}
DNS_DOMAIN=${DNS_DOMAIN:-"cluster.local"}
DNS_REPLICAS=${DNS_REPLICAS:-1}


接下来需要利用deployAddons.sh生成yaml文件,具体如下:
# PROVIDER=centos
# ./deployAddons.sh  
可以看到如下信息,说明创建完成
Creating kube-system namespace...
The namespace 'kube-system' is successfully created.

Deploying DNS on Kubernetes
replicationcontroller "kube-dns-v17.1" created
service "kube-dns" created
Kube-dns rc and service is successfully deployed.
我们通过kubectl来查看一下(注意:由于DNS服务被创建在了一个名为kube-system的namespace中,kubectl执行时要指定namespace名字,否则将无法查到dns service):
# kubectl --namespace=kube-system get services
NAME                   CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
kube-dns               10.254.0.10    <none>        53/UDP,53/TCP   1m

root@tb:~/opt/kubernetes/cluster/centos# kubectl --namespace=kube-system get pods
NAME                                    READY     STATUS              RESTARTS   AGE
kube-dns-v17.1-n4tnj                    0/3       ErrImagePull        0          4m

在此,我要提下,如果pod状态出现ErrImagePull,或者ErrImage等相关信息,先检查下镜像文件等是否存在,以及是否和yaml配置文件一致。可以通过describe或者logs来查看具体信息,具体命令如下:
kubectl  --namespace=kube-system logs  kube-dns-v17.1-n4tnj
或者
kubectl  --namespace=kube-system describe pods  kube-dns-v17.1-n4tnj

我们可以在/home/kubernetes/cluster/centos目录下发现生成了两个yaml文件。我们发现多了两个文件:skydns-rc.yaml和skydns-svc.yaml,这两个文件就是deployAddons.sh执行时根据config-default.sh中的配置生成的两个k8s service描述文件,问题就出在skydns-rc.yaml中。查看对应的images是否和你的镜像文件名一致,也需要注意版本信息是够对应。如果有误,修改后yaml文件后,先删除dns服务,执行如下:
kubectl --namespace=kube-system delete rc/kube-dns-v17.1 svc/kube-dns
   replicationcontroller "kube-dns-v17.1" deleted
   service "kube-dns" deleted
然后注释掉脚本deployAddons.sh中的下面两行:
#sed -e "s/\\\$DNS_REPLICAS/${DNS_REPLICAS}/g;s/\\\$DNS_DOMAIN/${DNS_DOMAIN}/g;" "${KUBE_ROOT}/cluster/saltbase/salt/kube-dns/skydns-rc.yaml.sed" > skydns-rc.yaml
#sed -e "s/\\\$DNS_SERVER_IP/${DNS_SERVER_IP}/g" "${KUBE_ROOT}/cluster/saltbase/salt/kube-dns/skydns-svc.yaml.sed" > skydns-svc.yaml
并且修改skydns-rc.yaml文件,修改具体如下:
args:
        # command = "/kube-dns"
        - --domain=cluster.local.
        - --dns-port=10053
        - --kube-master-url=http://27.10.9.101:8080   # 新增一行
再次执行脚本deployAddons.sh,查看日志等信息,发现无错误,现在需要考虑如何验证dns服务是否正常
DNS Server启动完成后,还需要配置kubelet:
--cluster_dns=10.254.0.10  #DNS service ip
 --cluster_domain=cluster.local #default local domain 
之后进行kubelet服务重启
如何通过DNS查找service服务???
该工作是使用一个带有nslookup工具的Pod来验证DNS服务是否工作正常:
# cat busybox.yaml
apiVersion: v1
kind: Pod
metadata:
  name: busybox
spec:
  containers:
  - name: busybox
    image: 27.10.9.101:5000/busybox
    command:
    - sleep
    - "3600"
运行kubectl create -f busybox.yaml完成创建。
在容器运行成功启动之后,通过kubectl exec <service_name> nslookup进行测试:
# kubectl exec busybox -- nslookup kubernetes
我执行这个失败了报错:nslookup: can't resolve 'kubernetes'
但是我换成ip就可以了,目前还有点疑问,等我后续理明白之后,再来解释,关于我的搭建也是根据大家的贡献奉献,特此感谢。
kubectl exec busybox -- nslookup 10.254.0.1
Server:    8.8.8.8
Address 1: 8.8.8.8
 Name:      10.254.0.1
 Address 1: 10.254.0.1
(这个我也不明白到底对不对???)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值