简单介绍一下,我对 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>
我不知道为什么核心 DNS 的 IP 是那样的。我认为它只是自动从 pod 网络发出的,我不知道指定不同子网的确切设置。
我感觉它也与路线有关,由于 cilium 也使用 10.0.0.0/8 内的范围,因此它在内部进行奇怪的路由,但我不知道如何验证或修复它......我一直在一次又一次地尝试,但似乎发生了同样的事情,所以我寻求帮助!
答案1
几天后回到这个 Freshminded,感觉有点简单……
默认设置是 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