Kubernetes-Knoten sind nach der Installation von Cilium nicht erreichbar und können das lokale Netzwerk nicht erreichen

Kubernetes-Knoten sind nach der Installation von Cilium nicht erreichbar und können das lokale Netzwerk nicht erreichen

Eine kleine Einführung. Ich bin ziemlich neu bei Kubernetes, daher kenne ich mich nicht so gut aus. Lassen Sie mich mein Problem skizzieren.

Kurz zusammengefasst:Nach der Installation von Cilium auf Kubernetes kann ich von keinem anderen Rechner in meinen lokalen Netzwerken aus auf diesen zugreifen.

Ich habe zwei Subnetze:

10.0.0.0/24 > Für alle meine anderen virtuellen Maschinen (DNS, Ansible)

10.8.0.0/24 > Für meinen K8s-Cluster

Ich habe 3 Knoten, 1 Controller, 2 Worker. Und es dient hauptsächlich zum Testen und Herumspielen damit.

Ich habe den Cluster mit

kubeadm init --skip-phases=addon/kube-proxy (I also wanted to use cilium for the proxy)

Danach richte ich nur noch Helm ein, damit ich problemlos an das Cilium-Paket komme.

In diesem Setup ohne Cilium kann ich mich problemlos mit allem verbinden. DNS, Ansible, kein Problem.

Nach der Installation von Cilium über Helm mit den folgenden Werten:

- name: helm install cilium
  kubernetes.core.helm:
    name: cilium
    chart_ref: cilium/cilium 
    chart_version: 1.11.5
    release_namespace: kube-system
    values:
      k8sServiceHost: 10.8.0.1
      k8sServicePort: 6443
      kubeProxyReplacement: strict

Ich kann von keinem anderen Rechner mehr eine Verbindung zu meinen Knoten herstellen und meine Knoten können beispielsweise nichts innerhalb meines lokalen Subnetzes 10.0.0.0/24 erreichen.

wenn ich versuche, NSlookup zu machen

nslookup google.com 10.0.0.1
;; connection timed out; no servers could be reached

Wenn ich jedoch eine IP außerhalb des Bereichs 10.0.0.0/8 verwende

nslookup google.com 8.8.8.8
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   google.com
Address: 142.250.179.174
Name:   google.com
Address: 2a00:1450:400e:802::200e

es funktioniert sofort

Alle Dienste scheinen einwandfrei zu laufen, wenn Sie

beim Benutzen:

Cilium status 

Wenn ich mir alle Dienste anschaue, scheinen sie auch in Ordnung zu sein

    /¯¯\
 /¯¯\__/¯¯\    Cilium:         OK
 \__/¯¯\__/    Operator:       OK
 /¯¯\__/¯¯\    Hubble:         disabled
 \__/¯¯\__/    ClusterMesh:    disabled
    \__/

DaemonSet         cilium             Desired: 3, Ready: 3/3, Available: 3/3
Deployment        cilium-operator    Desired: 2, Ready: 2/2, Available: 2/2
Containers:       cilium             Running: 3
                  cilium-operator    Running: 2
Cluster Pods:     3/3 managed by Cilium
Image versions    cilium             quay.io/cilium/cilium:v1.11.5@sha256:79e66c3c2677e9ecc3fd5b2ed8e4ea7e49cf99ed6ee181f2ef43400c4db5eef0: 3
                  cilium-operator    quay.io/cilium/operator-generic:v1.11.5@sha256:8ace281328b27d4216218c604d720b9a63a8aec2bd1996057c79ab0168f9d6d8: 2
kube-system   cilium-2xhvn                                       1/1     Running   0               78m   10.8.0.3     kube-worker02   <none>           <none>
kube-system   cilium-hk8f7                                       1/1     Running   1 (2m23s ago)   78m   10.8.0.1     kube-master00   <none>           <none>
kube-system   cilium-m26jx                                       1/1     Running   0               78m   10.8.0.2     kube-worker01   <none>           <none>
kube-system   cilium-operator-5484444455-4g7pz                   1/1     Running   1 (2m29s ago)   78m   10.8.0.3     kube-worker02   <none>           <none>
kube-system   cilium-operator-5484444455-9v5dv                   1/1     Running   1 (2m24s ago)   78m   10.8.0.2     kube-worker01   <none>           <none>
kube-system   coredns-6d4b75cb6d-v6gzl                           1/1     Running   1 (2m23s ago)   80m   10.0.0.106   kube-master00   <none>           <none>
kube-system   coredns-6d4b75cb6d-w42pk                           1/1     Running   1 (2m23s ago)   80m   10.0.0.28    kube-master00   <none>           <none>
kube-system   etcd-kube-master00                                 1/1     Running   1 (2m23s ago)   80m   10.8.0.1     kube-master00   <none>           <none>
kube-system   kube-apiserver-kube-master00                       1/1     Running   1 (2m23s ago)   80m   10.8.0.1     kube-master00   <none>           <none>
kube-system   kube-controller-manager-kube-master00              1/1     Running   1 (2m23s ago)   80m   10.8.0.1     kube-master00   <none>           <none>
kube-system   kube-scheduler-kube-master00                       1/1     Running   1 (2m23s ago)   80m   10.8.0.1     kube-master00   <none>           <none>

Ich weiß nicht, warum die IPs der Core-DNS so sind. Ich denke, es kommt einfach automatisch vom Pod-Netzwerk, ich kenne die genaue Einstellung nicht, um ein anderes Subnetz anzugeben.

Ich habe das Gefühl, dass es auch etwas mit Routen zu tun hat, dass es intern seltsam weiterleitet, da Cilium auch Bereiche innerhalb von 10.0.0.0/8 verwendet, aber ich habe keine Ahnung, wie ich das überprüfen oder beheben kann … und ich habe immer wieder damit herumgespielt, aber es scheint immer das Gleiche zu passieren, also bitte ich um Hilfe!

Antwort1

Als ich ein paar Tage später zu Freshminded zurückkam, war es ziemlich einfach …

Die Standardeinstellung ist, dass Pod-Netzwerke und interne Kubernetes-Netzwerke 10.0.0.0/8 verwenden. Diese Routen bringen grundsätzlich meine eigenen Routen durcheinander und verursachen Verbindungsverluste.

Um dies zu beheben, habe ich Ipam bei der Installation des Helm-Pakets die folgenden Werte zugewiesen, sodass es 172.16.0.0/12 anstelle von 10.0.0.0/8 verwendet.

      ipam:
        mode: "cluster-pool"
        operator:
          clusterPoolIPv4PodCIDR: "172.16.0.0/12"
          clusterPoolIPv4PodCIDRList: ["172.16.0.0/12"]
          clusterPoolIPv4MaskSize: 24   

verwandte Informationen