Kubernetes-dnsサービス構築

6846 ワード

DNSサービスは独立したシステムサービスではなくaddonであり、プラグインとしてインストールされており、kubernetesクラスタでは必要ありません(ただしインストールは非常に推奨されています).クラスタ上で動作するアプリケーションと見なすことができるが,このアプリケーションは比較的特殊であるにすぎない.
DNSには、1.3より前にetcd+kube 2 sky+skydns、1.3より後にkubedns+dnsmasqの2つの構成がある.
最初のステップは、すべてのnodeノードに次の構成を追加します.
vi /etc/kubernetes/kubelet
KUBELET_ARGS="--cluster_dns=10.254.0.10 --cluster_domain=cluster.local"
systemctl restart kubelet kube-proxy

インストール前の準備
k 8 s-dnsのダウンロードに必要なyamlドキュメントgithubのダウンロードパス:kubernetes/cluster/addons/dns/
kubedns-svc.yaml.sed
kubedns-controller.yaml.sed
kubedns-cm.yaml
kubedns-sa.yaml

dnsサービスの準備には3つのimagesが必要です
docker save gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.4 >dns.tar
docker save gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.4 >dnsmasq.tar
docker save gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.4 >sidecar.tar
docker load < dns.tar 
docker load < dnsmasq.tar
docker load < sidecar.tar
docker tag gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.4  harbor.biglittleant.cn/udoctor/k8s-dns-kube-dns-amd64:1.14.4
docker push harbor.biglittleant.cn/udoctor/k8s-dns-kube-dns-amd64:1.14.4

docker tag gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.4 harbor.biglittleant.cn/udoctor/k8s-dns-dnsmasq-nanny-amd64:1.14.4
docker push harbor.biglittleant.cn/udoctor/k8s-dns-dnsmasq-nanny-amd64:1.14.4

docker tag gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.4 harbor.biglittleant.cn/udoctor/k8s-dns-sidecar-amd64:1.14.4
docker push harbor.biglittleant.cn/udoctor/k8s-dns-sidecar-amd64:1.14.4

プロファイルの変更
  • imagesミラーを上のプライベートウェアハウスミラーに変更します.
  • は、kubedns-controller.yaml$DNS_DOMAINcluster.localに置き換える.
  • は、kubedns-controller.yaml$DNS_SERVER_IP10.254.0.10に置き換える.このIPはあなたのクラスタに構成されたIPセグメントと同じです.
  • はkubednsというミラーの下のargsにおいて- --kube-master-url=http://192.168.56.12:8080増加した.
  • kubernetesのバージョンが1.5.2であるためvolumesのパラメータは無効です.
  • #      tolerations:
    #      - key: "CriticalAddonsOnly"
    #        operator: "Exists"
    #      volumes:
    #      - name: kube-dns-config
    #        configMap:
    #          name: kube-dns
    #          optional: true
    #        volumeMounts:
    #        - name: kube-dns-config
    #          mountPath: /kube-dns-config
    #        volumeMounts:
    #        - name: kube-dns-config
    #          mountPath: /etc/k8s/dns/dnsmasq-nanny
    CLUSTER-IPこのIPはあなたのクラスタ構成のIPです.
    kubectl get services
    NAME          CLUSTER-IP      EXTERNAL-IP   PORT(S)                     AGE
    kubernetes    10.254.0.1              443/TCP                     3d

    k 8 s-dnsクラスタの作成
    kubectl create -f sa/kubedns-sa.yaml
    kubectl create -f sa/kubedns-cm.yaml
    kubectl create -f sa/kubedns-controller.yaml
    kubectl create -f sa/kubedns-svc.yaml

    クラスタノードが正常に構成されているかどうかを確認
    kubectl get pods --namespace=kube-system
    NAME                                    READY     STATUS    RESTARTS   AGE
    kube-dns-3132964191-xh7fh               3/3       Running   0          4h

    kubernetes dnsが使用可能であることを確認しますbusybox.yamlファイルを作成し、解析が正常かどうかを確認するために起動します.
    apiVersion: v1
    kind: Pod
    metadata:
      name: busybox
      namespace: default
    spec:
      containers:
      - image: busybox
        command:
          - sleep
          - "3600"
        imagePullPolicy: IfNotPresent
        name: busybox
      restartPolicy: Always
    kubectl create -f busybox.yaml

    既存のサービスを表示し、解析できるかどうかをテストします.
     kubectl get services 
    NAME          CLUSTER-IP      EXTERNAL-IP   PORT(S)                     AGE
    kubernetes    10.254.0.1              443/TCP                     3d
    kubectl exec -it busybox sh
    kubectl exec -it busybox sh
    / # nslookup kubernetes
    Server:    10.254.0.10
    Address 1: 10.254.0.10 kube-dns.kube-system.svc.cluster.local
    
    Name:      kubernetes
    Address 1: 10.254.0.1 kubernetes.default.svc.cluster.local

    その配置にかかわらず、kubernetesが対外的に提供するDNSサービスは一致している.各サービスには対応するDNSレコードがあり、kubernetesはDNSレコードのフォーマットを以下のように保存します.
    ..svc.各セクションのフィールドの意味:
    service_name:サービス名は、サービスを定義するときに付けた名前namespace:サービスが存在するnamespaceの名前domain:デフォルトのcluster.localなどのドメイン名接尾辞です.
    リファレンスドキュメント
    DNS Pods and Serviceskubernetes概要:kube-dnsとサービス発見配置kubernetes dnsサービス配置kubernetes dnsサービスkubernetesの使用4-kube-dnsk 8 sクラスタをインストールするkubernetes-dashboardとkube-dnsコンポーネント配置インストールサービス発見メカニズムとCluster DNSのインストール(CA認証版なし)serviceaccount/token:no such file or directory
    エラーの要約
    エラー1:ヒントVolumeエラー
    error: error validating "sa/kubedns-controller.yaml": error validating data: [found invalid field tolerations for v1.PodSpec, found invalid field optional for v1.ConfigMapVolumeSource]; if you choose to ignore these errors, turn validation off with --validate=false

    エラー原因
    v1.ConfigMapVolumeSource      kubernetes 1.6       ,yum     1.5.2           。
    vim kubedns-controller.yamlこの書類は全部で3か所編集されています
    #      tolerations:
    #      - key: "CriticalAddonsOnly"
    #        operator: "Exists"
    #      volumes:
    #      - name: kube-dns-config
    #        configMap:
    #          name: kube-dns
    #          optional: true
    #        volumeMounts:
    #        - name: kube-dns-config
    #          mountPath: /kube-dns-config
    #        volumeMounts:
    #        - name: kube-dns-config
    #          mountPath: /etc/k8s/dns/dnsmasq-nanny

    誤報2
    CrashLoopBackOff  Failed to create a kubernetes client: open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory

    エラーの原因は、k 8 s-dnsがセキュリティメカニズムを有効にする必要があるためです.
    KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"

    master-apiserverプロファイルに上記の行を追加します.ただし、サーバがCA認証メカニズムを起動していることに相当します.必要に応じて、記事クラスタCA署名に基づくセキュリティ設定を参照してください
    方法2:master-apiの位置を手動で指定し、kubednsというミラーの下のargsに- --kube-master-url=http://10.10.0.183:8080を追加します.再作成します.
    vim kubedns-controller.yaml
          containers:
          - name: kubedns
            image: harbor.cloudh.net.cn/udoctor/k8s-dns-kube-dns-amd64:1.14.4
            args:
            - --domain=cluster.local.
            - --dns-port=10053
            - --config-dir=/kube-dns-config
            - --v=2
            - --kube-master-url=http://10.10.0.183:8080

    転載先:https://www.cnblogs.com/biglittleant/p/7463535.html