《kubernetes-1.8.0》07-addon-kubedns

本文详细介绍了如何在Kubernetes 1.8.0环境中部署和配置KubeDNS,包括修改配置、准备镜像、创建Deployment、测试DNS解析以及设置DNS自动扩容。通过测试内外部解析验证了KubeDNS的正确性和稳定性。
摘要由CSDN通过智能技术生成

《kubernetes-1.8.0》07-addon-kubedns

《kubernetes 1.8.0 测试环境安装部署》

时间:2017-11-23

一、修改kubedns配置

DNS 组件部署非常简单,直接创建相应的 deployment 等即可:

# 获取文件 当前版本`1.14.7`,可从后续给的百度盘中下载相关文件。
wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/dns/kube-dns.yaml.sed
mv kube-dns.yaml.sed kube-dns.yaml

# 修改配置
sed -i 's/$DNS_DOMAIN/cluster.local/gi' kube-dns.yaml
sed -i 's/$DNS_SERVER_IP/10.254.0.2/gi' kube-dns.yaml

二、准备镜像

鉴于科学上网,提供百度云资源:kubedns 1.14.7 密码:jhxc

cd ~/k8s/images

tar -zxvf kubedns-1.14.7.tar.gz

for IP in `seq 131 134`; do
    scp ./gcr.io_google_containers* root@172.18.169.$IP:~/images 
    ssh root@172.18.169.$IP docker load -i ~/images/gcr.io_google_containers_cluster-proportional-autoscaler-amd64_1.1.2-r2.tar 
    ssh root@172.18.169.$IP docker load -i ~/images/gcr.io_google_containers_k8s-dns-dnsmasq-nanny-amd64_1.14.7.tar
    ssh root@172.18.169.$IP docker load -i ~/images/gcr.io_google_containers_k8s-dns-kube-dns-amd64_1.14.7.tar
    ssh root@172.18.169.$IP docker load -i ~/images/gcr.io_google_containers_k8s-dns-sidecar-amd64_1.14.7.tar
done

三、创建deployment并查看

# 创建:
kubectl create -f kube-dns.yaml

# 查看:
[root@node-131 kubedns]# kubectl get deployment -n kube-system
NAME                       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
...
kube-dns                   1         1         1            1           1m

[root@node-131 kubedns]# kubectl get pods -n kube-system
NAME                                      READY     STATUS    RESTARTS   AGE
...
kube-dns-74dbf45884-bpc9w                 3/3       Running   0          2m

四、测试kubedns

创建两组 Pod 和 Service,进入 Pod 中 curl 另一个 Service 名称看看是否能解析;同时还要测试一下外网能否解析

# 创建测试deply
cat > test.deploy.yml << EOF
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.13.5-alpine
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
EOF

# 创建test.deploy对应service
$cat > test.service.yml << EOF 
kind: Service
apiVersion: v1
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 31000
  type: NodePort
EOF

# 为之前做的demo deploy创建service
$ cat > demo.service.yml << EOF 
kind: Service
apiVersion: v1
metadata:
  name: demo-service
spec:
  selector:
    app: demo
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 31001
  type: NodePort
EOF

# 创建:
$ kubectl create -f test.deploy.yml 
$ kubectl create -f test.service.yml 
$ kubectl create -f demo.service.yml 

# 查看:
[root@node-131 deploy]# kubectl get pods -o wide
NAME                                READY     STATUS    RESTARTS   AGE       IP               NODE
demo-deployment-5fc9c54fb4-5pgfk    1/1       Running   1          5h        192.168.177.66   node.132
demo-deployment-5fc9c54fb4-5svgl    1/1       Running   1          5h        192.168.33.194   node.131
demo-deployment-5fc9c54fb4-dfcfd    1/1       Running   1          5h        192.168.188.2    node.133
demo-deployment-5fc9c54fb4-dttvb    1/1       Running   1          5h        192.168.56.66    node.134
nginx-deployment-5d56d45798-24ptc   1/1       Running   0          1m        192.168.33.195   node.131
nginx-deployment-5d56d45798-gjr6s   1/1       Running   0          1m        192.168.188.3    node.133
nginx-deployment-5d56d45798-wtfcg   1/1       Running   0          1m        192.168.177.68   node.132
[root@node-131 deploy]# kubectl get service -o wide
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE       SELECTOR
demo-service    NodePort    10.254.23.220   <none>        80:31001/TCP   1m        app=demo
kubernetes      ClusterIP   10.254.0.1      <none>        443/TCP        22h       <none>
nginx-service   NodePort    10.254.197.49   <none>        80:31000/TCP   1m        app=nginx

# 测试dns解析-pod内部
[root@node-131 deploy]# kubectl exec -ti demo-deployment-5fc9c54fb4-5svgl bash
bash-4.3# curl http://nginx-service
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

# 测试dns解析-访问外网
bash-4.3# curl https://www.baidu.com
<!DOCTYPE html>
<!--STATUS OK--><html> <head>...使用百度前必读</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意见反馈</a>&nbsp;京ICP证030173号&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>

五、部署DNS自动扩容

下载 yaml,然后创建一下即可,不需要修改任何配置(相关镜像已经在二、准备镜像过程中完成):

$ wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/dns-horizontal-autoscaler/dns-horizontal-autoscaler.yaml

$ kubectl create -f dns-horizontal-autoscaler.yaml

查看效果:

[root@node-131 kubedns]# kubectl get pod -o wide -n kube-system
NAME                                      READY     STATUS    RESTARTS   AGE       IP               NODE
calico-kube-controllers-94b7cb897-krckw   1/1       Running   1          5h        172.18.169.131   node.131
calico-node-5dc8z                         2/2       Running   2          5h        172.18.169.132   node.132
calico-node-gm9k8                         2/2       Running   2          5h        172.18.169.133   node.133
calico-node-kt5fk                         2/2       Running   2          5h        172.18.169.134   node.134
calico-node-xds45                         2/2       Running   2          5h        172.18.169.131   node.131
kube-dns-74dbf45884-bpc9w                 3/3       Running   0          16m       192.168.56.67    node.134
kube-dns-74dbf45884-nsr45                 3/3       Running   0          15s       192.168.33.196   node.131
kube-dns-autoscaler-996dcfc9d-t9ddt       1/1       Running   0          16s       192.168.56.68    node.134

查看autoscaling 相关参数:

# 查看kube-dns-autoscaler相关configmap:
$ kubectl get configmap --namespace=kube-system
NAME                                 DATA      AGE
...
kube-dns-autoscaler                  1         2m

# 在线编辑该配置文件:
$  kubectl edit configmap kube-dns-autoscaler --namespace=kube-system
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
  linear: '{"coresPerReplica":256,"nodesPerReplica":16,"preventSinglePointFailure":true}'
kind: ConfigMap
metadata:
  creationTimestamp: 2017-11-23T08:23:25Z
  name: kube-dns-autoscaler
  namespace: kube-system
  resourceVersion: "107837"
  selfLink: /api/v1/namespaces/kube-system/configmaps/kube-dns-autoscaler
  uid: 93970ef3-d027-11e7-8cb4-005056bc52e5
  • coresPerReplica: 满 256 个pod增加一个 dns Replica
  • nodesPerReplica: 满 16 个node增加一个 dns Replica
  • preventSinglePointFailure:是否开启单点故障预防,缺省为true,此时会立即再启一个dns Replica

至此kube-dns以及相关的autoscaler部署完成

本系列其他内容:

参考链接:

https://mritd.me/2017/10/09/set-up-kubernetes-1.8-ha-cluster/

https://kubernetes.io/docs/tasks/administer-cluster/dns-horizontal-autoscaling/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值