
一點介紹,我對 kubernetes 還很陌生,所以我對它有點粗糙。讓我概述一下我的問題。
總而言之:在 kubernetes 上安裝 cilium 後,我無法存取本地網路上的任何其他計算機
我有兩個子網路:
10.0.0.0/24 > 對於我所有其他虛擬機器(DNS、Ansible)
10.8.0.0/24 > 對於我的 K8s 集群
我有 3 個節點,1 個控制器,2 個工作線程。它主要用於測試和使用它。
我使用初始化叢集
kubeadm init --skip-phases=addon/kube-proxy (I also wanted to use cilium for the proxy)
之後,我設置的唯一其他東西是 Helm,這樣我就可以輕鬆獲得 cilium 包。
在這個沒有 cilium 的設定中,我能夠正常連接到一切。 DNS、Ansible 沒問題。
透過 Helm 使用以下值安裝 cilium 後:
- 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
例如,我無法再從任何其他電腦連接到我的節點,而且我的節點無法存取本地子網路 10.0.0.0/24 內的任何內容
當我嘗試執行 NSlookup 時
nslookup google.com 10.0.0.1
;; connection timed out; no servers could be reached
但是,當我對 10.0.0.0/8 範圍之外的 Ip 執行操作時
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
它確實立即起作用
使用時所有服務似乎運作良好
使用時:
Cilium status
當我看到所有的服務時,他們似乎也很好
/¯¯\
/¯¯\__/¯¯\ 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>
我不知道為什麼 core dns 的 ip 是這樣的。我認為這只是自動來自 Pod 網絡,我不知道指定不同子網的確切設置。
我有一種感覺,它也與路由有關,它奇怪地在內部路由,因為cilium 也使用10.0.0.0/8 內的範圍,但我不知道如何驗證或修復它......而且我一直在搞亂它一次又一次地嘗試,但似乎同樣的事情正在發生,所以我尋求幫助!
答案1
幾天後回到這個新鮮事,這有點容易...
預設設定是 pod 網路和內部 kubernetes 網路使用 10.0.0.0/8。這些路線基本上擾亂了我自己的路線,導致連接丟失。
為了解決這個問題,我在安裝 helm 軟體包時為 Ipam 提供了以下值,使其使用 172.16.0.0/12 而不是 10.0.0.0/8。
ipam:
mode: "cluster-pool"
operator:
clusterPoolIPv4PodCIDR: "172.16.0.0/12"
clusterPoolIPv4PodCIDRList: ["172.16.0.0/12"]
clusterPoolIPv4MaskSize: 24