
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