Связь между узлами не работает с Kubernetes с Calico

Я новичок в Kubernetes, даже если мне не кажется, что после того, как я потратил десятки часов, пытаясь настроить рабочий Kubernetes.

Параметры грани:

  • 1 мастер и 3 узла
  • настроен с использованием kubeadm
  • kubernetes версии 1.12.1, Calico 3.2
  • Первичные IP-адреса хостов - 192.168.1.0/21x (актуально, потому что это конфликтует с подсетью модуля по умолчанию, поэтому я установил --pod-network-cidr = 10.10.0.0 / 16 )

Установка с использованием kubeadm init и присоединение пока работали. Все поды работают, только coredns продолжает давать сбой, но здесь это не имеет значения.

Установка Calico

Затем я начинаю с , устанавливая с помощью хранилища данных etcd и , устанавливая с помощью кубернетов api datastore 50 узлов или меньше

kubectl apply -f https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/rbac.yaml

curl https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/hosted/calico.yaml -O
# modify calico.yaml  # Here, I feel a lack of documentation: Which etcd is needed? The one of kubernetes or a new one? See below
kubectl apply -f calico.yaml

kubectl apply -f https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml

curl https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml -O
# modify calico.yaml (here, I have to change the range of CALICO_IPV4POOL_CIDR)
sed -i 's/192.168.0.0/10.10.0.0/' calico.yaml
kubectl apply -f calico.yaml

Тест

Теперь, Я использую следующее определение для тестирования:

apiVersion: v1
kind: Pod
metadata:
  name: www1
  labels:
    service:      testwww
spec:
  containers:
  - name: meinserver
    image: erkules/nginxhostname
    ports:
    - containerPort: 80
---
apiVersion: v1
kind: Pod
metadata:
  name: www2
  labels:
    service:      testwww
spec:
  containers:
  - name: meinserver
    image: erkules/nginxhostname
---
kind: Service
apiVersion: v1
metadata:
  name: www-np
spec:
  type: NodePort
  selector:
    service: testwww
  ports:
  - name: http1
    protocol: TCP
    nodePort: 30333
    port: 8080
    targetPort: 80

Как я тестирую:

curl http://192.168.1.211:30333  # master, no success
curl http://192.168.1.212:30333  # node, no success
curl http://192.168.1.213:30333  # node, only works 50%, with www1 (which is on this node)
curl http://192.168.1.214:30333  # node, only works 50%, with www2 (which is on this node)

Вышеуказанные команды работают только в том случае, если (случайно выбранный) модуль находится на узле, которому принадлежит указанный IP-адрес. Я ожидал 100% успеха на всех узлах.

Я видел больший успех при использовании etcd-сервера kubernetes (pod / etcd-master1). В этом случае все вышеперечисленные команды работали. Но pod / calico-kube-controllers в этом случае не запустился, потому что он работал на рабочем узле и, следовательно, не имел доступа к etcd.

В руководстве по началу работы я нашел инструкцию по установке дополнительного etcd:

kubectl apply -f https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/hosted/etcd.yaml

Это странно: эта строка есть только в « начало работы », но не в « установке ». Но бязь по умолчанию. yaml уже содержит правильный clusterIp именно этого сервера etcd (кстати, как этот IP-адрес статический? Он генерируется хешем?). В любом случае: при этом все узлы Calico работали без ошибок, но у меня было описанное поведение, при котором не все NodePorts работали. И еще меня волнует etcd, который открыт для всех, а это не то, что я хочу.

Итак, есть основные вопросы:

  • Какой сервер etcd лучше использовать? Отдельный или Kubernetes? Правильный ли сервер etcd использовать? Отдельный или Kubernetes? Правильный ли сервер etcd использовать? Отдельный или Kubernetes?
    • Если это должен быть Kubernetes, почему контроллеры pod / calico-kube по умолчанию не настроены для работы на главном сервере, у которого есть доступ к etcd?
    • Если я должен обслуживать собственный etcd для calico , почему это не задокументировано в разделе «установка», почему у меня возникают эти проблемы с NodePort?

Btw: Я был ответом, который рекомендовал изменить правило iptables по умолчанию с DROP на ACCEPT. Но это уродливый хакер, который, вероятно, обходит все функции безопасности Calico

Запрошенные сведения (вариант с дополнительными etcd)

$ kubectl get all --all-namespaces=true -o wide; kubectl get nodes -o wide
NAMESPACE     NAME                                          READY   STATUS             RESTARTS   AGE   IP                NODE      NOMINATED NODE
default       pod/www1                                      1/1     Running            0          8s    192.168.104.9     node2     <none>
default       pod/www2                                      1/1     Running            0          8s    192.168.166.136   node1     <none>
kube-system   pod/calico-etcd-46g2q                         1/1     Running            0          22m   192.168.1.211     master1   <none>
kube-system   pod/calico-kube-controllers-f4dcbf48b-88795   1/1     Running            10         23h   192.168.1.212     node0     <none>
kube-system   pod/calico-node-956lj                         2/2     Running            6          21h   192.168.1.213     node1     <none>
kube-system   pod/calico-node-mhtvg                         2/2     Running            5          21h   192.168.1.211     master1   <none>
kube-system   pod/calico-node-s9njn                         2/2     Running            6          21h   192.168.1.214     node2     <none>
kube-system   pod/calico-node-wjqlk                         2/2     Running            6          21h   192.168.1.212     node0     <none>
kube-system   pod/coredns-576cbf47c7-4tcx6                  0/1     CrashLoopBackOff   15         24h   192.168.137.86    master1   <none>
kube-system   pod/coredns-576cbf47c7-hjpgv                  0/1     CrashLoopBackOff   15         24h   192.168.137.85    master1   <none>
kube-system   pod/etcd-master1                              1/1     Running            17         24h   192.168.1.211     master1   <none>
kube-system   pod/kube-apiserver-master1                    1/1     Running            2          24h   192.168.1.211     master1   <none>
kube-system   pod/kube-controller-manager-master1           1/1     Running            3          24h   192.168.1.211     master1   <none>
kube-system   pod/kube-proxy-22mb9                          1/1     Running            2          23h   192.168.1.212     node0     <none>
kube-system   pod/kube-proxy-96tn7                          1/1     Running            2          23h   192.168.1.213     node1     <none>
kube-system   pod/kube-proxy-vb4pq                          1/1     Running            2          24h   192.168.1.211     master1   <none>
kube-system   pod/kube-proxy-vq7qj                          1/1     Running            2          23h   192.168.1.214     node2     <none>
kube-system   pod/kube-scheduler-master1                    1/1     Running            2          24h   192.168.1.211     master1   <none>
kube-system   pod/kubernetes-dashboard-77fd78f978-h8czs     1/1     Running            2          23h   192.168.180.9     node0     <none>

NAMESPACE     NAME                           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE   SELECTOR
default       service/kubernetes             ClusterIP   10.96.0.1        <none>        443/TCP          24h   <none>
default       service/www-np                 NodePort    10.99.149.53     <none>        8080:30333/TCP   8s    service=testwww
kube-system   service/calico-etcd            ClusterIP   10.96.232.136    <none>        6666/TCP         21h   k8s-app=calico-etcd
kube-system   service/calico-typha           ClusterIP   10.105.199.162   <none>        5473/TCP         23h   k8s-app=calico-typha
kube-system   service/kube-dns               ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP    24h   k8s-app=kube-dns
kube-system   service/kubernetes-dashboard   ClusterIP   10.96.235.235    <none>        443/TCP          23h   k8s-app=kubernetes-dashboard

NAMESPACE     NAME                         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                     AGE   CONTAINERS                IMAGES                                                 SELECTOR
kube-system   daemonset.apps/calico-etcd   1         1         1       1            1           node-role.kubernetes.io/master=   21h   calico-etcd               quay.io/coreos/etcd:v3.3.9                             k8s-app=calico-etcd
kube-system   daemonset.apps/calico-node   4         4         4       4            4           beta.kubernetes.io/os=linux       23h   calico-node,install-cni   quay.io/calico/node:v3.2.3,quay.io/calico/cni:v3.2.3   k8s-app=calico-node
kube-system   daemonset.apps/kube-proxy    4         4         4       4            4           <none>                            24h   kube-proxy                k8s.gcr.io/kube-proxy:v1.12.1                          k8s-app=kube-proxy

NAMESPACE     NAME                                      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS                IMAGES                                          SELECTOR
kube-system   deployment.apps/calico-kube-controllers   1         1         1            1           23h   calico-kube-controllers   quay.io/calico/kube-controllers:v3.2.3          k8s-app=calico-kube-controllers
kube-system   deployment.apps/calico-typha              0         0         0            0           23h   calico-typha              quay.io/calico/typha:v3.2.3                     k8s-app=calico-typha
kube-system   deployment.apps/coredns                   2         2         2            0           24h   coredns                   k8s.gcr.io/coredns:1.2.2                        k8s-app=kube-dns
kube-system   deployment.apps/kubernetes-dashboard      1         1         1            1           23h   kubernetes-dashboard      k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0   k8s-app=kubernetes-dashboard

NAMESPACE     NAME                                                DESIRED   CURRENT   READY   AGE   CONTAINERS                IMAGES                                          SELECTOR
kube-system   replicaset.apps/calico-kube-controllers-f4dcbf48b   1         1         1       23h   calico-kube-controllers   quay.io/calico/kube-controllers:v3.2.3          k8s-app=calico-kube-controllers,pod-template-hash=f4dcbf48b
kube-system   replicaset.apps/calico-typha-5f646c475c             0         0         0       23h   calico-typha              quay.io/calico/typha:v3.2.3                     k8s-app=calico-typha,pod-template-hash=5f646c475c
kube-system   replicaset.apps/coredns-576cbf47c7                  2         2         0       24h   coredns                   k8s.gcr.io/coredns:1.2.2                        k8s-app=kube-dns,pod-template-hash=576cbf47c7
kube-system   replicaset.apps/kubernetes-dashboard-77fd78f978     1         1         1       23h   kubernetes-dashboard      k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0   k8s-app=kubernetes-dashboard,pod-template-hash=77fd78f978

NAME      STATUS   ROLES    AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE           KERNEL-VERSION      CONTAINER-RUNTIME
master1   Ready    master   24h   v1.12.0   192.168.1.211   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://17.12.1-ce
node0     Ready    <none>   23h   v1.12.0   192.168.1.212   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://17.12.1-ce
node1     Ready    <none>   23h   v1.12.0   192.168.1.213   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://17.12.1-ce
node2     Ready    <none>   23h   v1.12.0   192.168.1.214   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://17.12.1-ce

$ for i in $(seq 20); do timeout 1 curl -so/dev/null http://192.168.1.214:30333 && echo -n x || echo -n -  ;done
x---x-x-x--x-xx-x---

Запрошенные сведения (вариант с существующим etcd)

$ kubectl get all --all-namespaces=true -o wide; kubectl get nodes -o wide
NAMESPACE     NAME                                          READY   STATUS                       RESTARTS   AGE     IP              NODE      NOMINATED NODE
default       pod/www1                                      1/1     Running                      0          9m27s   10.10.2.3       node1     <none>
default       pod/www2                                      1/1     Running                      0          9m27s   10.10.3.3       node2     <none>
kube-system   pod/calico-kube-controllers-f4dcbf48b-qrqnc   0/1     CreateContainerConfigError   1          18m     192.168.1.212   node0     <none>
kube-system   pod/calico-node-j8cwr                         2/2     Running                      2          17m     192.168.1.212   node0     <none>
kube-system   pod/calico-node-qtq9m                         2/2     Running                      2          17m     192.168.1.214   node2     <none>
kube-system   pod/calico-node-qvf6w                         2/2     Running                      2          17m     192.168.1.211   master1   <none>
kube-system   pod/calico-node-rdt7k                         2/2     Running                      2          17m     192.168.1.213   node1     <none>
kube-system   pod/coredns-576cbf47c7-6l9wz                  1/1     Running                      2          21m     10.10.0.11      master1   <none>
kube-system   pod/coredns-576cbf47c7-86pxp                  1/1     Running                      2          21m     10.10.0.10      master1   <none>
kube-system   pod/etcd-master1                              1/1     Running                      19         20m     192.168.1.211   master1   <none>
kube-system   pod/kube-apiserver-master1                    1/1     Running                      2          20m     192.168.1.211   master1   <none>
kube-system   pod/kube-controller-manager-master1           1/1     Running                      1          20m     192.168.1.211   master1   <none>
kube-system   pod/kube-proxy-28qct                          1/1     Running                      1          20m     192.168.1.212   node0     <none>
kube-system   pod/kube-proxy-8ltpd                          1/1     Running                      1          21m     192.168.1.211   master1   <none>
kube-system   pod/kube-proxy-g9wmn                          1/1     Running                      1          20m     192.168.1.213   node1     <none>
kube-system   pod/kube-proxy-qlsxc                          1/1     Running                      1          20m     192.168.1.214   node2     <none>
kube-system   pod/kube-scheduler-master1                    1/1     Running                      5          19m     192.168.1.211   master1   <none>

NAMESPACE     NAME                   TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE     SELECTOR
default       service/kubernetes     ClusterIP   10.96.0.1      <none>        443/TCP          21m     <none>
default       service/www-np         NodePort    10.106.27.58   <none>        8080:30333/TCP   9m27s   service=testwww
kube-system   service/calico-typha   ClusterIP   10.99.14.62    <none>        5473/TCP         17m     k8s-app=calico-typha
kube-system   service/kube-dns       ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP    21m     k8s-app=kube-dns

NAMESPACE     NAME                         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                 AGE   CONTAINERS                IMAGES                                                 SELECTOR
kube-system   daemonset.apps/calico-node   4         4         4       4            4           beta.kubernetes.io/os=linux   18m   calico-node,install-cni   quay.io/calico/node:v3.2.3,quay.io/calico/cni:v3.2.3   k8s-app=calico-node
kube-system   daemonset.apps/kube-proxy    4         4         4       4            4           <none>                        21m   kube-proxy                k8s.gcr.io/kube-proxy:v1.12.1                          k8s-app=kube-proxy

NAMESPACE     NAME                                      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS                IMAGES                                   SELECTOR
kube-system   deployment.apps/calico-kube-controllers   1         1         1            0           18m   calico-kube-controllers   quay.io/calico/kube-controllers:v3.2.3   k8s-app=calico-kube-controllers
kube-system   deployment.apps/calico-typha              0         0         0            0           17m   calico-typha              quay.io/calico/typha:v3.2.3              k8s-app=calico-typha
kube-system   deployment.apps/coredns                   2         2         2            2           21m   coredns                   k8s.gcr.io/coredns:1.2.2                 k8s-app=kube-dns

NAMESPACE     NAME                                                DESIRED   CURRENT   READY   AGE   CONTAINERS                IMAGES                                   SELECTOR
kube-system   replicaset.apps/calico-kube-controllers-f4dcbf48b   1         1         0       18m   calico-kube-controllers   quay.io/calico/kube-controllers:v3.2.3   k8s-app=calico-kube-controllers,pod-template-hash=f4dcbf48b
kube-system   replicaset.apps/calico-typha-5f646c475c             0         0         0       17m   calico-typha              quay.io/calico/typha:v3.2.3              k8s-app=calico-typha,pod-template-hash=5f646c475c
kube-system   replicaset.apps/coredns-576cbf47c7                  2         2         2       21m   coredns                   k8s.gcr.io/coredns:1.2.2                 k8s-app=kube-dns,pod-template-hash=576cbf47c7

NAME      STATUS   ROLES    AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE           KERNEL-VERSION      CONTAINER-RUNTIME
master1   Ready    master   21m   v1.12.0   192.168.1.211   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://17.12.1-ce
node0     Ready    <none>   20m   v1.12.0   192.168.1.212   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://17.12.1-ce
node1     Ready    <none>   20m   v1.12.0   192.168.1.213   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://17.12.1-ce
node2     Ready    <none>   20m   v1.12.0   192.168.1.214   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://17.12.1-ce

$ for i in $(seq 20); do timeout 1 curl -so/dev/null http://192.168.1.214:30333 && echo -n x || echo -n -  ;done
xxxxxxxxxxxxxxxxxxxx

Обновление: вариант с фланелью

I только что попробовал с фланелью: результат на удивление такой же, как и с дополнительным etcd (модули отвечают только на том же узле). Это подводит меня к вопросу: есть ли что-нибудь о моей ОС? Ubuntu 18.04 с последними обновлениями, устанавливается с помощью debootstrap. Нет брандмауэра ...

Как я его установил:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Результат:

$ kubectl get all --all-namespaces=true -o wide; kubectl get nodes -o wide
NAMESPACE     NAME                                  READY   STATUS    RESTARTS   AGE     IP              NODE      NOMINATED NODE
default       pod/www1                              1/1     Running   0          3m40s   10.10.2.2       node1     <none>
default       pod/www2                              1/1     Running   0          3m40s   10.10.3.2       node2     <none>
kube-system   pod/coredns-576cbf47c7-64wxp          1/1     Running   3          21m     10.10.1.3       node0     <none>
kube-system   pod/coredns-576cbf47c7-7zvqs          1/1     Running   3          21m     10.10.1.2       node0     <none>
kube-system   pod/etcd-master1                      1/1     Running   0          21m     192.168.1.211   master1   <none>
kube-system   pod/kube-apiserver-master1            1/1     Running   0          20m     192.168.1.211   master1   <none>
kube-system   pod/kube-controller-manager-master1   1/1     Running   0          21m     192.168.1.211   master1   <none>
kube-system   pod/kube-flannel-ds-amd64-brnmq       1/1     Running   0          8m22s   192.168.1.214   node2     <none>
kube-system   pod/kube-flannel-ds-amd64-c6v67       1/1     Running   0          8m22s   192.168.1.213   node1     <none>
kube-system   pod/kube-flannel-ds-amd64-gchmv       1/1     Running   0          8m22s   192.168.1.211   master1   <none>
kube-system   pod/kube-flannel-ds-amd64-l9mpl       1/1     Running   0          8m22s   192.168.1.212   node0     <none>
kube-system   pod/kube-proxy-5pmtc                  1/1     Running   0          21m     192.168.1.213   node1     <none>
kube-system   pod/kube-proxy-7ctp5                  1/1     Running   0          21m     192.168.1.212   node0     <none>
kube-system   pod/kube-proxy-9zfhl                  1/1     Running   0          21m     192.168.1.214   node2     <none>
kube-system   pod/kube-proxy-hcs4g                  1/1     Running   0          21m     192.168.1.211   master1   <none>
kube-system   pod/kube-scheduler-master1            1/1     Running   0          20m     192.168.1.211   master1   <none>

NAMESPACE     NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE     SELECTOR
default       service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP          22m     <none>
default       service/www-np       NodePort    10.101.213.118   <none>        8080:30333/TCP   3m40s   service=testwww
kube-system   service/kube-dns     ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP    22m     k8s-app=kube-dns

NAMESPACE     NAME                                     DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                     AGE     CONTAINERS     IMAGES                                   SELECTOR
kube-system   daemonset.apps/kube-flannel-ds-amd64     4         4         4       4            4           beta.kubernetes.io/arch=amd64     8m22s   kube-flannel   quay.io/coreos/flannel:v0.10.0-amd64     app=flannel,tier=node
kube-system   daemonset.apps/kube-flannel-ds-arm       0         0         0       0            0           beta.kubernetes.io/arch=arm       8m22s   kube-flannel   quay.io/coreos/flannel:v0.10.0-arm       app=flannel,tier=node
kube-system   daemonset.apps/kube-flannel-ds-arm64     0         0         0       0            0           beta.kubernetes.io/arch=arm64     8m22s   kube-flannel   quay.io/coreos/flannel:v0.10.0-arm64     app=flannel,tier=node
kube-system   daemonset.apps/kube-flannel-ds-ppc64le   0         0         0       0            0           beta.kubernetes.io/arch=ppc64le   8m21s   kube-flannel   quay.io/coreos/flannel:v0.10.0-ppc64le   app=flannel,tier=node
kube-system   daemonset.apps/kube-flannel-ds-s390x     0         0         0       0            0           beta.kubernetes.io/arch=s390x     8m21s   kube-flannel   quay.io/coreos/flannel:v0.10.0-s390x     app=flannel,tier=node
kube-system   daemonset.apps/kube-proxy                4         4         4       4            4           <none>                            22m     kube-proxy     k8s.gcr.io/kube-proxy:v1.12.1            k8s-app=kube-proxy

NAMESPACE     NAME                      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES                     SELECTOR
kube-system   deployment.apps/coredns   2         2         2            2           22m   coredns      k8s.gcr.io/coredns:1.2.2   k8s-app=kube-dns

NAMESPACE     NAME                                 DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES                     SELECTOR
kube-system   replicaset.apps/coredns-576cbf47c7   2         2         2       21m   coredns      k8s.gcr.io/coredns:1.2.2   k8s-app=kube-dns,pod-template-hash=576cbf47c7
NAME      STATUS   ROLES    AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE           KERNEL-VERSION      CONTAINER-RUNTIME
master1   Ready    master   22m   v1.12.1   192.168.1.211   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://17.12.1-ce
node0     Ready    <none>   21m   v1.12.1   192.168.1.212   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://17.12.1-ce
node1     Ready    <none>   21m   v1.12.1   192.168.1.213   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://17.12.1-ce
node2     Ready    <none>   21m   v1.12.1   192.168.1.214   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://17.12.1-ce

$ for i in $(seq 20); do timeout 1 curl -so/dev/null http://192.168.1.214:30333 && echo -n x || echo -n -  ;done
-x--xxxxx-x-x---xxxx
0
задан 11 October 2018 в 03:12
2 ответа

Может быть, вы не установили пакет kubernetes-cni ? Если ни один сетевой провайдер не работает, это очень вероятно. AFAIK также не упоминается в документации, что вам необходимо это сделать.

Также должно быть видно в журнале службы kubelet .

0
ответ дан 4 December 2019 в 15:50

На данный момент я обнаружил 3 проблемы:

версия докера

В своих первых попытках я использовал docker.io из репозиториев Ubuntu по умолчанию (17.12.1-ce). В учебнике https://computingforgeeks.com/how-to-setup-3-node-kubernetes-cluster-on-ubuntu-18-04-with-weave-net-cni/ я обнаружил они рекомендуют что-то другое:

apt-get --purge remove docker docker-engine docker.io
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo 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

Теперь это версия 18.6.1, и она больше не вызывает предупреждений при предполетной проверке kubeadm.

cleanup

Я использовал kubeadm reset и удалил некоторые каталоги при сбросе моих виртуальных машин в ненастроенное состояние. Прочитав несколько отчетов об ошибках, я решил расширить список удаляемых каталогов. Вот что я делаю сейчас:

kubeadm reset
rm -rf /var/lib/cni/ /var/lib/calico/ /var/lib/kubelet/ /var/lib/etcd/ /etc/kubernetes/ /etc/cni/
reboot

Настройка Calico

С внесенными выше изменениями я сразу же смог запустить полнофункциональную настройку (все модули «работают» и работают с завитками). Я выполнил "Вариант с дополнительными etcd".

Все это работало до первой перезагрузки, затем я снова обнаружил

calico-kube-controllers-f4dcbf48b-qrqnc CreateContainerConfigError

Копание в этой проблеме.

$ kubectl -n kube-system describe pod/calico-kube-controllers-f4dcbf48b-dp6n9
Events:
  Type     Reason            Age                     From               Message
  ----     ------            ----                    ----               -------
  Warning  Failed            4m32s (x10 over 9m)     kubelet, node1     Error: Couldn't find key etcd_endpoints in ConfigMap kube-system/calico-config

Затем я понял, что выполнил две инструкции по установке в цепочке которые должны были сделать только один.

kubectl apply -f https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml

curl https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml -O

cp -p calico.yaml calico.yaml_orig
sed -i 's/192.168.0.0/10.10.0.0/' calico.yaml

kubectl apply -f calico.yaml

Результат

$ kubectl get pod,svc,nodes --all-namespaces -owide

NAMESPACE     NAME                                        READY   STATUS    RESTARTS   AGE   IP              NODE      NOMINATED NODE
default       pod/www1                                    1/1     Running   2          71m   10.10.3.4       node1     <none>
default       pod/www2                                    1/1     Running   2          71m   10.10.4.4       node2     <none>
kube-system   pod/calico-node-45sjp                       2/2     Running   4          74m   192.168.1.213   node1     <none>
kube-system   pod/calico-node-bprml                       2/2     Running   4          74m   192.168.1.211   master1   <none>
kube-system   pod/calico-node-hqdsd                       2/2     Running   4          74m   192.168.1.212   master2   <none>
kube-system   pod/calico-node-p8fgq                       2/2     Running   4          74m   192.168.1.214   node2     <none>
kube-system   pod/coredns-576cbf47c7-f2l7l                1/1     Running   2          84m   10.10.2.7       master2   <none>
kube-system   pod/coredns-576cbf47c7-frq5x                1/1     Running   2          84m   10.10.2.6       master2   <none>
kube-system   pod/etcd-master1                            1/1     Running   2          83m   192.168.1.211   master1   <none>
kube-system   pod/kube-apiserver-master1                  1/1     Running   2          83m   192.168.1.211   master1   <none>
kube-system   pod/kube-controller-manager-master1         1/1     Running   2          83m   192.168.1.211   master1   <none>
kube-system   pod/kube-proxy-9jmsk                        1/1     Running   2          80m   192.168.1.213   node1     <none>
kube-system   pod/kube-proxy-gtzvz                        1/1     Running   2          80m   192.168.1.214   node2     <none>
kube-system   pod/kube-proxy-str87                        1/1     Running   2          84m   192.168.1.211   master1   <none>
kube-system   pod/kube-proxy-tps6d                        1/1     Running   2          80m   192.168.1.212   master2   <none>
kube-system   pod/kube-scheduler-master1                  1/1     Running   2          83m   192.168.1.211   master1   <none>
kube-system   pod/kubernetes-dashboard-77fd78f978-9vdqz   1/1     Running   0          24m   10.10.3.5       node1     <none>

NAMESPACE     NAME                           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE   SELECTOR
default       service/kubernetes             ClusterIP   10.96.0.1        <none>        443/TCP          84m   <none>
default       service/www-np                 NodePort    10.107.205.119   <none>        8080:30333/TCP   71m   service=testwww
kube-system   service/calico-typha           ClusterIP   10.99.187.161    <none>        5473/TCP         74m   k8s-app=calico-typha
kube-system   service/kube-dns               ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP    84m   k8s-app=kube-dns
kube-system   service/kubernetes-dashboard   ClusterIP   10.96.168.213    <none>        443/TCP          24m   k8s-app=kubernetes-dashboard

NAMESPACE   NAME           STATUS   ROLES    AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE           KERNEL-VERSION      CONTAINER-RUNTIME
            node/master1   Ready    master   84m   v1.12.1   192.168.1.211   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://18.6.1
            node/master2   Ready    <none>   80m   v1.12.1   192.168.1.212   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://18.6.1
            node/node1     Ready    <none>   80m   v1.12.1   192.168.1.213   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://18.6.1
            node/node2     Ready    <none>   80m   v1.12.1   192.168.1.214   <none>        Ubuntu 18.04 LTS   4.15.0-20-generic   docker://18.6.1


192.168.1.211 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
192.168.1.212 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
192.168.1.213 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
192.168.1.214 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1
ответ дан 4 December 2019 в 15:50

Теги

Похожие вопросы