VPC 클러스터: Kubernetes LoadBalancer 서비스가 IP 없이 실패하는 이유는 무엇입니까?
가상 사설 클라우드
VPC 클러스터에 Kubernetes LoadBalancer 서비스를 생성하여 앱을 공개했지만, 서브넷에 사용 가능한 IP 주소가 없어 서비스 프로비저닝에 실패했습니다.
사용자가 VPC 클러스터에서 Kubernetes LoadBalancer 서비스를 작성하여 앱을 노출했습니다.
oc describe svc <kubernetes_lb_service_name>을 실행하면 이벤트 섹션에 다음 중 하나와 유사한 경고 메시지가 표시됩니다.
The subnet with ID(s) '<subnet_id>' has insufficient available ipv4 addresses.
클러스터에서 Kubernetes LoadBalancer 서비스를 작성하면 VPC 로드 밸런서가 VPC에 자동으로 작성됩니다.
VPC 로드 밸런서는 Kubernetes LoadBalancer 서비스의 유동 IP 주소를 앱에 액세스할 수 있는 호스트 이름 뒤에 배치합니다.
VPC 클러스터에서 작업자 노드 및 서비스 모두 동일한 서브넷의 IP 주소가 지정됩니다. 트래픽 라우팅은 서브넷 간에 사용으로 설정되므로 구역의 서브넷에 있는 모든 IP 주소가 작업자 노드 또는 서비스에 의해 사용되는 경우 다른 구역의 서브넷에서 IP 주소를 사용하므로 해당 구역에 새 작업자 노드 또는 서비스를 계속 작성할 수 있습니다. 그러나 모든 서브넷에 있는 모든 IP 주소가 사용 중이면 새 Kubernetes LoadBalancer 서비스를 성공적으로 프로비저닝할 수 없습니다.
VPC 서브넷을 작성한 후에는 크기를 조정하거나 해당 IP 범위를 변경할 수 없습니다.
대신, 작업자 노드가 있는 하나 이상의 구역에 더 큰 VPC 서브넷을 작성해야 합니다. 그런 다음, 더 큰 서브넷을 사용하여 새로운 워커 풀을 생성합니다.
-
클러스터의 워커 노드가 있는 하나 이상의 존에 속하며, 동일한 VPC 내에 새로운 VPC 서브넷을 생성합니다. 클러스터에서 작성하려는 작업자 노드 및 서비스의 수를 모두 지원할 수 있는 서브넷을 작성해야 합니다. 각 VPC 서브넷의 기본 CIDR 크기는
/24이며, 253개의 작업자 노드와 서비스를 지원할 수 있습니다. 클러스터의 VPC 및 존을 확인하려면ibmcloud oc cluster get --cluster <cluster_name_or_ID>을 실행하세요. -
클러스터에 새 작업자 풀을 작성하십시오.
ibmcloud oc worker-pool create vpc-gen2 --name <name> --cluster <cluster_name_or_ID> --flavor <flavor> --size-per-zone <number_of_worker_nodes> --label <key>=<value> -
이전 단계에서 생성한 새 서브넷의 ID를 사용하여 해당 영역을 워커 풀에 추가합니다. 각 영역 및 서브넷에 대해 이 명령을 반복하십시오.
ibmcloud oc zone add vpc-gen2 --zone <zone> --subnet-id <subnet_id> --cluster <cluster_name_or_ID> --worker-pool <worker_pool_name> -
몇 분 후에
LoadBalancer서비스가 새 서브넷 중 하나에 프로비저닝되었는지 확인하십시오. 서비스 프로비저닝이 성공적으로 완료되면, ‘이벤트’ 섹션에는 ‘Warning’ 또는 ‘Error’ 이벤트가 표시되지 않습니다.oc describe svc <kubernetes_lb_service_name>