
ちょっとした紹介ですが、私は 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