cilium をインストールした後、Kubernetes ノードにアクセスできず、ローカル ネットワークにアクセスできない

cilium をインストールした後、Kubernetes ノードにアクセスできず、ローカル ネットワークにアクセスできない

ちょっとした紹介ですが、私は Kubernetes にかなり不慣れなので、少し不慣れです。私の問題を概説させてください。

要約:kubernetes に cilium をインストールした後、ローカル ネットワーク上の他のマシンにアクセスできなくなりました

サブネットが 2 つあります。

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 がなぜそうなっているのかわかりません。ポッド ネットワークから自動的に取得されるだけだと思いますが、別のサブネットを指定するための正確な設定はわかりません。

ルートにも関係があるような気がします。cilium も 10.0.0.0/8 内の範囲を使用しているため、内部的に奇妙なルートになっているようですが、確認方法や修正方法がわかりません...。何度も試してみましたが、同じことが起きているようなので、助けを求めます。

答え1

数日後にこの Freshminded に戻ってみると、それはかなり簡単でした...

デフォルト設定では、ポッド ネットワークと内部 Kubernetes ネットワークは 10.0.0.0/8 を使用します。これらのルートは基本的に自分のルートを混乱させ、接続が失われます。

これを修正するために、helm パッケージをインストールするときに Ipam に次の値を指定して、10.0.0.0/8 ではなく 172.16.0.0/12 を使用するようにしました。

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

関連情報