Google Kubernetes Engine

Google Kubernetes Engine (GKE)

Cilium을 Google GKE에서 실행하면 Google Cloud의 네이티브 네트워킹 계층이 주소 관리와 IP 포워딩에 사용돼요. 이 글에서는 GKE 모드의 아키텍처와 구성, 트러블슈팅 방법을 알아볼게요.

출처: Google Kubernetes Engine

본문

Cilium을 Google GKE에서 실행하면 Google Cloud의 네이티브 네트워킹 계층이 주소 관리와 IP 포워딩에 활용됩니다.

아키텍처

GKE 구성 모드에서 실행되는 Cilium은 Kubernetes hostscope IPAM 모드를 활용합니다. 활성화된 주소 패밀리(IPv4/IPv6)가 요구하는 대로 Cilium 에이전트가 Kubernetes 노드 리소스에 spec.podCIDR 또는 spec.podCIDRs 가 채워질 때까지 기다리도록 구성합니다. 이 IPAM 모드에 대한 추가 세부 사항은 Kubernetes Host Scope를 참고하세요.

해당 데이터패스는 Google Cloud 섹션에 설명되어 있습니다.

Google Kubernetes Engine (GKE)에 Cilium을 설치하는 방법은 Cilium Quick Installation 시작 가이드를 참고하세요.

구성

GKE IPAM 모드는 Helm 옵션 ipam.mode=kubernetes 또는 ConfigMap 옵션 ipam: kubernetes 를 설정해 활성화할 수 있어요.

트러블슈팅

노출된 PodCIDR 필드 검증

Kubernetes 노드에 podCIDR 필드 값이 있는지 확인하세요:

$ kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.podCIDR}{"\n"}{end}'
gke-cluster4-default-pool-b195a3f3-k431     10.4.0.0/24
gke-cluster4-default-pool-b195a3f3-zv3p     10.4.1.0/24

Cilium 상태 확인

문제의 노드에서 cilium status 를 실행하고 IPAM에 사용된 CIDR이 Kubernetes 노드에 발표된 PodCIDR과 일치하는지 검증하세요:

$ kubectl -n kube-system get pods -o wide | grep gke-cluster4-default-pool-b195a3f3-k431
cilium-lv4xd                       1/1     Running   0          3h8m   10.164.0.112   gke-cluster4-default-pool-b195a3f3-k431   <none>           <none>

$ kubectl -n kube-system exec -ti cilium-lv4xd -- cilium-dbg status
KVStore:                Disabled
Kubernetes:             Ok   1.14+ (v1.14.10-gke.27) [linux/amd64]
Kubernetes APIs:        ["CustomResourceDefinition", "cilium/v2::CiliumClusterwideNetworkPolicy", "cilium/v2::CiliumEndpoint", "cilium/v2::CiliumNetworkPolicy", "cilium/v2::CiliumNode", "core/v1::Endpoint", "core/v1::Namespace", "core/v1::Pods", "core/v1::Service", "networking.k8s.io/v1::NetworkPolicy"]
KubeProxyReplacement:   Probe   []
Cilium:                 Ok      OK
NodeMonitor:            Disabled
Cilium health daemon:   Ok
IPAM:                   IPv4: 7/255 allocated from 10.4.0.0/24,
Controller Status:      36/36 healthy
Proxy Status:           OK, ip 10.4.0.190, 0 redirects active on ports 10000-20000
Hubble:                 Disabled
Cluster health:         2/2 reachable   (2020-04-23T13:46:36Z)

더 알아보기 (Learn more)