클러스터 범위

클러스터 범위 (기본) (Cluster Scope (Default))

클러스터 범위 IPAM 모드는 각 노드에 per-node PodCIDR을 할당하고 각 노드에서 호스트 범위 할당자로 IP를 할당해요. Kubernetes가 per-node PodCIDR을 할당하는 대신 Cilium operator가 v2.CiliumNode 리소스로 관리한다는 점이 특징입니다.

출처: Cluster Scope (Default)

본문

클러스터 범위 IPAM 모드는 각 노드에 per-node PodCIDR을 할당하고 각 노드에서 호스트 범위 할당자로 IP를 할당합니다. 따라서 Kubernetes Host Scope 모드와 유사해요. 차이점은 Kubernetes v1.Node 리소스를 통해 per-node PodCIDR을 할당하는 대신, Cilium operator가 v2.CiliumNode 리소스를 통해 per-node PodCIDR을 관리한다는 것입니다. 이 모드의 장점은 Kubernetes가 per-node PodCIDR을 제공하도록 구성되지 않아도 된다는 점이에요.

아키텍처

이것은 Kubernetes가 PodCIDR을 제공하도록 구성할 수 없거나 더 많은 제어가 필요할 때 유용합니다.

이 모드에서 Cilium 에이전트는 시작 시 v2.CiliumNode 의 리소스 필드에 설정된 리소스를 통해 모든 활성화된 주소 패밀리에 대해 podCIDRs 범위가 Cilium Node v2.CiliumNode 객체로 제공될 때까지 기다립니다:

Field Description
spec.ipam.podCIDRs IPv4 및/또는 IPv6 PodCIDR 범위

구성

이 모드를 Cilium에서 활성화하는 실용적인 튜토리얼은 CRD-Backed by Cilium Cluster-Pool IPAM을 참고하세요.

클러스터 풀 확장

clusterPoolIPv4PodCIDRList 목록의 기존 요소는 변경하지 마세요. 변경하면 예기치 않은 동작이 발생합니다. 풀이 고갈되면 대신 목록에 새 요소를 추가하세요. 최소 마스크 길이는 /30 이며, 권장 최소 마스크 길이는 /29 이상입니다. 새 요소를 추가해야 하는 이유는 할당자가 CIDR 블록당 네트워크와 브로드캐스트 주소를 위해 2개의 IP를 예약하기 때문이에요. clusterPoolIPv4MaskSize 를 변경하는 것도 불가능합니다.

트러블슈팅

할당 오류 찾기

status.ipam.operator-status 필드의 Error 필드를 확인하세요:

kubectl get ciliumnodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.ipam.operator-status}{"\n"}{end}'

충돌하는 노드 CIDR 확인

10.0.0.0/8 은 기본 pod CIDR입니다. 노드 네트워크가 같은 범위에 있으면 다른 노드에 대한 연결을 잃게 돼요. 모든 egress 트래픽이 다른 노드보다 특정 노드의 Pod를 대상으로 한다고 가정되기 때문이죠.

두 가지 방법으로 해결할 수 있어요:

  • clusterPoolIPv4PodCIDRList 를 충돌하지 않는 CIDR로 명시적으로 설정
  • 노드에 다른 CIDR 사용

더 알아보기 (Learn more)