安装 cilium 后,Kubernetes 节点无法访问且无法访问本地网络

安装 cilium 后,Kubernetes 节点无法访问且无法访问本地网络

简单介绍一下,我对 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   

相关内容