cilium을 설치한 후 Kubernetes 노드에 연결할 수 없으며 로컬 네트워크에 연결할 수 없습니다.

cilium을 설치한 후 Kubernetes 노드에 연결할 수 없으며 로컬 네트워크에 연결할 수 없습니다.

약간의 소개입니다. 저는 kubernetes를 처음 접했기 때문에 조금 거칠게 다뤘습니다. 내 문제를 스케치하겠습니다.

TLDR: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 패키지를 얻을 수 있습니다.

섬모가 없는 이 설정에서는 모든 것에 잘 연결할 수 있습니다. 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

며칠 후 이 Freshmind로 다시 돌아오는 것은 좀 쉬웠습니다....

기본 설정은 포드 네트워크와 내부 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   

관련 정보