真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ubuntu16.04下安裝kubernetes1.6之kube-dns的示例分析

這篇文章將為大家詳細(xì)講解有關(guān)ubuntu 16.04 下安裝kubernetes 1.6 之kube-DNS的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供寧國(guó)企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、H5頁(yè)面制作、小程序制作等業(yè)務(wù)。10年已為寧國(guó)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

 1 前言

如果說(shuō)service解決了pod 服務(wù)發(fā)現(xiàn)和負(fù)載均衡的問(wèn)題,那么kube-dns則是為了解決service的發(fā)現(xiàn)問(wèn)題而誕生的。試想下這樣一個(gè)場(chǎng)景,當(dāng)不知道service ip 的情況下,應(yīng)用程序如果想要訪(fǎng)問(wèn)后端服務(wù),只有用kubectl get svc -n namespace來(lái)查詢(xún)service對(duì)應(yīng)的IP和端口,再改配置,這樣每新建一個(gè)服務(wù)就要改一次配置,也是夠折騰的。那么這個(gè)問(wèn)題如果解決,這就是本文所要將的內(nèi)容。

 2 使用kube-dns發(fā)現(xiàn)service

kube-dns插件提供了三個(gè)容器功能如下:

 kubedns容器

監(jiān)視kubernetes service資源并更新DNS記錄
替換etcd,使用TreeCache數(shù)據(jù)結(jié)構(gòu)保存DNS記錄并實(shí)現(xiàn)skydns的backend接口
接入skydns,對(duì)dnsmasq提供DNS查詢(xún)服務(wù)

 dnsmasq容器

對(duì)集群提供DNS查詢(xún)服務(wù)
設(shè)置kubedns為upstream
提供DNS緩存,降低kubedns負(fù)載,提高性能

 exechealthz容器

定期檢查kubedns和dnsmasq的監(jiān)控狀態(tài)
為kubernetes的活性檢測(cè)提供HTTP API

 3 kubedns,dnsmasq,exechealthz原理圖

ubuntu 16.04 下安裝kubernetes 1.6 之kube-dns的示例分析

 4 kube-dns插件安裝

kube-dns的安裝其實(shí)就是啟動(dòng)三個(gè)容器:kubedns,dnsmasq,exechealthz
先創(chuàng)建一個(gè)kube-dns service
cat kubedns-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: kube-dns
  namespace: kube-system
  labels:
    k8s-app: kube-dns
spec:
  selector:
    k8s-app: kube-dns
  clusterIP: 10.10.10.10  #和各個(gè)節(jié)點(diǎn)的kubelet啟動(dòng)參數(shù)的--cluster-dns保持一致**
  ports:
  - name: dns
    port: 53
    protocol: UDP
  - name: dns-tcp
    port: 53
    protocol: TCP

創(chuàng)建kube-dns RC,創(chuàng)建三個(gè)容器

cat kubedns-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: kube-dns-v6
  namespace: kube-system
  labels:
    k8s-app: kube-dns
    version: v6
    kubernetes.io/cluster-service: "true"
spec:
  replicas: 1
  selector:
    k8s-app: kube-dns
    version: v6
  template:
    metadata:
    labels:
      k8s-app: kube-dns
      version: v6
  spec:
    containers:
    - name: kubedns
      image: siriuszg/kubedns-amd64:latest
      imagePullPolicy: IfNotPresent
      resources:
        limits:
          cpu: 100m
          memory: 50Mi
        livenessProbe:
          httpGet:
            path: /healthz-kubedns
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 60
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 5
        readinessProbe:
          httpGet:
            path: /readiness
            port: 8081
            scheme: HTTP
          initialDelaySeconds: 3
          timeoutSeconds: 5
        args:
        - --domain=cluster.local.  #和各個(gè)節(jié)點(diǎn)的kubelet中的啟動(dòng)參數(shù)--cluster-domain保持一致,cluster.local后面有個(gè)“.”**
        - --dns-port=10053
        - --kube-master-url=http://192.168.100.20:8080
        ports:
        - containerPort: 10053
          name: dns-local
          protocol: UDP
     - name: kube-dnsmasq
       image: ist0ne/kube-dnsmasq-amd64:latest
       imagePullPolicy: IfNotPresent
       livenessProbe:
         httpGet:
           path: /healthz-dnsmasq
           port: 8080
           scheme: HTTP
         initialDelaySeconds: 60
         timeoutSeconds: 5
         successThreshold: 1
         failureThreshold: 5
       args:
       - --cache-size=1000
       - --no-resolv
       - --server=127.0.0.1#10053
       - --log-facility=-
       ports:
       - containerPort: 53
          name: dns
          protocol: UDP
       - containerPort: 53
         name: dns-tcp
         protocol: TCP
     - name: healthz
       image: ist0ne/exechealthz-amd64:latest
       imagePullPolicy: IfNotPresent
       resources:
         limits:
           memory: 50Mi
         requests:
           cpu: 10m
           memory: 50Mi
       args:
       - --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 >/dev/null
       - --url=/healthz-dnsmasq
       - --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1:10053 >/dev/null
       - --url=/healthz-kubedns
       - --port=8080
       - --quiet
       ports:
       - containerPort: 8080
         protocol: TCP
     dnsPolicy: Default

注意:各個(gè)節(jié)點(diǎn)的kubelet啟動(dòng)參數(shù)中要加上--cluster-dns和--cluster-domain,--cluster-dns的值就是service中的clusterIP: 10.10.10.10,--cluster-domain就是rc中的- --domain=cluster.local
這樣容器啟動(dòng)就自動(dòng)在/etc/resolv.conf中添加如下字段

ubuntu 16.04 下安裝kubernetes 1.6 之kube-dns的示例分析


分別執(zhí)行kubectl create -f kubedns-svc.yaml ,kubectl create -f kubedns-rc.yaml 創(chuàng)建kubedns的service和pod

 5 驗(yàn)證

通過(guò)上述各步的操作,kube-dns的插件就安裝好了,先來(lái)看看我們都安裝了什么,可以通過(guò)kubectl也可以通過(guò)dashboard來(lái)查看我們創(chuàng)建的service,rc和pod,下面的截圖是通過(guò)kubectl來(lái)查看的


ubuntu 16.04 下安裝kubernetes 1.6 之kube-dns的示例分析
從圖中可以看出啟動(dòng)了kube-dns-v6-41d2c這個(gè)pod,啟在192.168.100.93這個(gè)節(jié)點(diǎn)上,分配的IP是172.17.2.5,共啟了3個(gè)容器,這三個(gè)容器共享IP。
從default namespace中找一個(gè)pod,用這個(gè)pod驗(yàn)證kube-dns

ubuntu 16.04 下安裝kubernetes 1.6 之kube-dns的示例分析
選擇 tomcat-gllz3這個(gè)pod,理由是這個(gè)pod中的容器裝有nslookup。

ubuntu 16.04 下安裝kubernetes 1.6 之kube-dns的示例分析
從圖中可以看出所有的service都可以通過(guò)kubedns解析出來(lái)
注意:kubedns的域名規(guī)則是service-name.namespace.svc.domain
service-name 即為某個(gè)service的name
namespace 為該service所在的namespace
svc 為固定字符
domain 為創(chuàng)建kubedns pod時(shí)指定的domain也就是各節(jié)點(diǎn)kubelete啟動(dòng)參數(shù)中的--cluster-domain,本文是cluster.local

關(guān)于“ubuntu 16.04 下安裝kubernetes 1.6 之kube-dns的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。


網(wǎng)站欄目:ubuntu16.04下安裝kubernetes1.6之kube-dns的示例分析
分享網(wǎng)址:http://weahome.cn/article/gdoocs.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部