Как включить coredns для обнаружения dns на kubernetes версии 1.14? - PullRequest
1 голос
/ 29 апреля 2019

У меня проблема с обнаружением службы (DNS) в kubernetes 1.14 версия в ubuntu bionic .

Прямо сейчас мои 2 модуля общаются с использованием IP-адресов. Как включить coredns для обнаружения службы (DNS)?

Вот вывод kubectl для службы и модулей из пространства имен kube-system:


    kubectl get pods,svc --namespace=kube-system | grep dns
    pod/coredns-fb8b8dccf-6plz2          1/1     Running            0          6d23h
    pod/coredns-fb8b8dccf-thxh6          1/1     Running            0          6d23h

    service/kube-dns        ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP   6d23h

Я установил kubernetes на главном узле (Ubuntu Bionic Machine), используя следующие шаги


    apt-get update
    apt-get install     apt-transport-https     ca-certificates     curl     gnupg-agent     software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
    add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    apt-get update
    apt-get install docker-ce docker-ce-cli containerd.io
    apt-get update && apt-get install -y apt-transport-https curl
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

    cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    deb https://apt.kubernetes.io/ kubernetes-xenial main
    EOF

    apt-get update
    apt-get install -y kubelet kubeadm kubectl
    kubectl version
    apt-mark hold kubelet kubeadm kubectl
    kubeadm config images pull
    swapoff -a
    kubeadm init

    mkdir -p $HOME/.kube
    cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    chown $(id -u):$(id -g) $HOME/.kube/config
    sysctl net.bridge.bridge-nf-call-iptables=1
    kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
    kubectl get pods --all-namespaces

Это на рабочем узле

    Docker is already installed, so directly installing kubernetes on worker node
    apt-get update && apt-get install -y apt-transport-https curl
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
    cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    deb https://apt.kubernetes.io/ kubernetes-xenial main
    EOF

    apt-get update
    apt-get install -y kubelet kubeadm kubectl
    kubectl version
    apt-mark hold kubelet kubeadm kubectl
    swapoff -a
    Now joined worker node to master

Ответ: -

Я думаю, что по умолчанию все настроено правильно. Я неправильно понял, что могу вызывать сервер, работающий в одном модуле, из другого модуля, используя имя контейнера и порт, которые я указал в спецификации, но вместо этого я должен использовать службу название и порт.

Ниже приведены мои спецификации развертывания и службы: -

Спецификация развертывания: -

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: node-server1-deployment
    spec:
      replicas: 1
      template:
    metadata:
      labels:
        app: node-server1
    spec:
      hostname: node-server1
      containers:
      - name: node-server1
        image: bvenkatr/node-server1:1
        ports:
        - containerPort: 5551

Спецификация услуги:

    kind: Service
    apiVersion: v1
    metadata:
      name: node-server1-service
    spec:
      selector:
         app: node-server1
      ports:
      - protocol: TCP
        port: 5551

1 Ответ

1 голос
/ 02 мая 2019

Начиная с Kubernetes v1.12, CoreDNS является рекомендуемым DNS-сервером, заменяющим kube-dns. В Kubernetes CoreDNS устанавливается со следующей конфигурацией Corefile по умолчанию:

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           upstream
           fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        proxy . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }

Больше информации вы можете найти здесь .

Вы можете проверить свой env, запустив:

kubectl get cm coredns -n kube-system -o yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system

и: представление конфигурации kubeadm DNS: Тип: CoreDNS

во время kubeadm init вы должны заметить:

[addons] Applied essential addon: CoreDNS

Если вы переходите с kube-dns на CoreDNS, обязательно установите CoreDNS feature gate на true во время обновления. Например, вот как будет выглядеть обновление v1.11.0: kubeadm upgrade apply v1.11.0 --feature-gates=CoreDNS=true

В Kubernetes версии 1.13 и более поздних версия функциональный шлюз CoreDNS удален, а CoreDNS используется по умолчанию. Больше информации здесь .

Вы можете увидеть, правильно ли работает ваш модуль coredns, запустив:

kubectl logs <your coredns pod> -n kube-system
.:53
2019-05-02T13:32:41.438Z [INFO] CoreDNS-1.3.1
CoreDNS-1.3.1
.
.
...