kubernetesでのDNSのインストール導入テスト


[toc]
DNSのインストール後、podはdnsによってサービスを解析し、通信を実現することができる.
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 2つの属性を変更する必要がある
  • $DNS_SERVER_IPはk 8 s dnsのipを指定し、デフォルトはapiserver ip
  • である.
  • $DNS_DOMAIN、cluster.local(kube-apiserver定義と一致)
  • に置き換えます.
    1.3具体的にコマンドを修正し、sedコマンドを使用することができる
    kube-dns.yaml.sedプロファイルをk 8 sクラスタがあるサーバにコピー
  • プロファイルの名前変更
  • 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とサービスの作成
    プロファイル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レコードを表示する(アドレスレコードIPv 4)
  • 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(ホスト名).

  • 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