This is a stable feature in Kubernetes, and has been since version v1.33. It was first available in the v1.27 release. You can no longer disable or opt out of this feature or behavior (it is locked); if you explicitly set a value for the associated feature gate MultiCIDRServiceAllocator, Kubernetes ignores it but does not report any error.
이 문서는 클러스터에 할당된 기본 서비스 IP 범위를 재구성하는 방법을 다룬다.
쿠버네티스 클러스터가 필요하고, kubectl 커맨드-라인 툴이 클러스터와 통신할 수 있도록 설정되어 있어야 한다. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 적어도 2개 포함된 클러스터에서 실행하는 것을 추천한다. 만약, 아직 클러스터를 가지고 있지 않다면, minikube를 사용해서 생성하거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있다.
쿠버네티스 서버의 버전은 다음과 같거나 더 높아야 함. 버전: v1.33.버전 확인을 위해서, 다음 커맨드를 실행 kubectl version.
이 문서는 쿠버네티스 클러스터 내 서비스 IP 주소 범위를 관리하는 방법을 설명하며, 이는 클러스터가 서비스에 대해 지원하는 IP 패밀리에도 영향을 준다.
서비스 ClusterIPs에 사용 가능한 IP 패밀리는 kube-apiserver의 --service-cluster-ip-range
플래그에 의해 결정된다. 서비스 IP 주소 할당에 대해 더 잘 이해하려면
가상 IP 및 서비스 프록시 문서를 참고한다.
쿠버네티스 1.33부터, 클러스터에 대해 설정된 서비스 IP 패밀리는
kubernetes라는 이름의 ServiceCIDR 오브젝트로 반영된다. kubernetes ServiceCIDR
오브젝트는 최초로 실행된 kube-apiserver 인스턴스가 자신에게 설정된 --service-cluster-ip-range 플래그를
기반으로 생성한다. 일관된 클러스터 동작을 보장하기 위해, 모든 kube-apiserver 인스턴스는 동일한 --service-cluster-ip-range 값으로 설정되어야 하며, 이는 기본 쿠버네티스 ServiceCIDR 오브젝트와 일치해야 한다.
서비스 CIDR 재구성은 다음과 같은 시나리오로 구분할 수 있다.
기존 서비스 CIDR 확장: 이는 kube-apiserver를 재구성할 필요 없이 새 ServiceCIDR 오브젝트를 추가하여 동적으로 수행할 수 있다. 자세한 내용은 [서비스 IP 범위 확장] (https://kubernetes.io/ko/docs/tasks/network/extend-service-ip-ranges/) 문서를 참고한다.
단일 스택에서 기본 서비스 CIDR을 유지한 채 이중 스택으로 전환: 이는 원래의 IP 패밀리를 기본으로 유지하면서 보조 IP 패밀리(IPv4 전용 클러스터에 IPv6 추가, 또는 IPv6 전용 클러스터에 IPv4 추가)를 도입하는 것을 의미한다. 이를 위해 kube-apiserver 구성을 업데이트해야 하며 이 추가된 IP 패밀리를 처리해야 하는 다양한 클러스터 컴포넌트들도 함께 수정해야 한다. 이러한 컴포넌트에는 kube-proxy, CNI 또는 네트워크 플러그인, 서비스 메시 구현체, DNS 서비스 등이 포함되지만 이에 국한되지는 않는다.
이중 스택에서 기본 서비스 CIDR을 유지한 채 단일 스택으로 전환: 이는 이중 스택 클러스터에서 보조 IP 패밀리를 제거하고, 원래의 기본 IP 패밀리를 유지한 채 단일 IP 패밀리로 되돌리는 것을 의미한다. 컴포넌트를 새 IP 패밀리에 맞게 재구성하는 것뿐 아니라, 제거된 IP 패밀리를 사용하도록 명시적으로 설정된 서비스들을 처리해야 할 수도 있다.
기본 서비스 CIDR를 변경하는 경우: 기본
ServiceCIDR 전체를 교체하는 것은 복잡한 작업이다. 새로운
ServiceCIDR이 기존 범위와 겹치지 않는다면 [기존 서비스들의
재번호 부여와 kubernetes.default 서비스의 변경]
(#illustrative-reconfiguration-steps)이 필요하다.
기본 IP 패밀리 자체가 변경되는 경우에는 훨씬 더 복잡해지며,
새로운 기본 IP 패밀리에 맞추기 위해 (kubelet, 네트워크 플러그인 등)
여러 클러스터 구성 요소를 변경해야 할 수도 있다.
기본 서비스 CIDR을 재구성하려면 클러스터 운영자, 관리자, 또는 클러스터 라이프사이클을 관리하는 소프트웨어가 수행하는 수동 절차가 필요하다. 일반적으로 다음과 같은 작업을 포함한다.
--service-cluster-ip-range 플래그를 수정한다.kubernetes.default
서비스는 새 서비스 CIDR에서 IP를 할당받도록 삭제 후 재생성해야
한다.다음 단계들은 기본 서비스 CIDR을 완전히 교체하고
kubernetes.default 서비스 재생성에 초점을
맞춘 제어된 재구성 절차를 설명한다.
--service-cluster-ip-range 값으로 kube-apiserver를 시작한다.kubernetes 기본 서비스 CIDR을 삭제 대상으로 표시한다(기존 IP와
파이널라이저(finalizer)로 인해 삭제 대기 상태로 남는다). 이렇게 하면 이전 범위에서
새 할당이 이루어지는 것을 방지한다.kubernetes.default 서비스를 삭제한다. 새 kube-apiserver가
이를 새 서비스 CIDR 내에서 재생성한다.