IP 주소 관리 (IPAM) 공개 API 서브넷이 있는 각 Google Distributed Cloud (GDC) 오프라인 영역에 할당된 전역 루트 서브넷이 있습니다. 전역 루트 서브넷은 조직 인프라 클러스터 및 워크로드 VM을 비롯한 테넌트 조직 내의 모든 클러스터를 부트스트랩하기 위해 각 영역으로 분할되는 루트 IP 주소 범위 (CIDR) 풀을 호스팅합니다. IP 주소 범위의 일부는 루트 서브넷에서 애니캐스트 IP 주소 풀로 사용할 수 있습니다.
조직을 만든 후 GDC 유니버스의 서브넷에 대해 다음 운영 작업을 완료할 수 있습니다.
새 영역의 루트 범위 전역 서브넷 만들기
각 영역에는 루트 범위 전역 서브넷이 있어야 합니다. GDC 유니버스의 초기 조직 부트스트랩 단계에서 각 영역에는 전역 서브넷이 자동으로 생성됩니다. 하지만 초기 설치 후 새 영역이 추가되면 새 영역의 루트 범위 전역 서브넷을 수동으로 만들어야 합니다.
새 영역의 네트워크 루트 범위 서브넷의 CIDR 범위 정의
CIDR 범위를 정의하기 위한 조직 설치 안내와 마찬가지로 CIDR 범위는 서로 겹칠 수 없으며 zone-infra-cidr 및 기존 루트 전역 서브넷과 겹칠 수 없습니다. 기존 루트 전역 서브넷은 맞춤 리소스 사양에 ipam.gdc.goog/usage: network-root-range 라벨이 있는 서브넷입니다.
zone-infra-cidr는 각 영역에 있으며 고객이 정의한 경우 고객 인테이크 설문지 (CIQ)에서 가져올 수 있습니다.
zone-infra-cidr를 가져오려면 다음을 실행합니다.kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG get cidrclaim -n gpc-system zone-infra-cidrCIDR 범위를 확인합니다.
조직에 할당할 이름과 일치하는 이름의 네임스페이스가 있어야 합니다. 이 네임스페이스가 있는지 확인합니다.
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get namespace ORG_NAME기존 루트 전역 서브넷을 가져옵니다.
전역 루트 관리자 클러스터의 경우 다음을 실행합니다.
kubectl –kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get subnet \ -n ORG_NAME -l ipam.gdc.goog/usage=network-root-range전역 조직 관리자 API 서버의 경우 다음을 실행합니다.
kubectl –kubeconfig GLOBAL_ORG_API_SERVER_KUBECONFIG get subnet \ -n platform -l ipam.gdc.goog/usage=network-root-range출력의 모든 CIDR 범위를 기록해 둡니다.
새로 계획된 CIDR 범위가 이전 CIDR 범위와 겹치지 않는지 확인합니다.
새 CIDR 범위가 새 영역에 유효한지 확인한 후 CIDR 범위가 다음 규칙을 준수하는지 확인합니다.
| CIDR 범위 필드입니다. | 최소 크기 | VPC/VRF | 전역 API 서버 |
|---|---|---|---|
zoneInfraVPCCIDR |
17 | 인프라 VPC | 전역 루트 |
zoneDefaultVPCCIDR |
18 | 기본 VPC | 글로벌 조직 |
zoneOrgAdminExternalCIDR |
23 | 관리 네트워크 세그먼트 | 전역 루트 |
zoneOrgDataExternalCIDR |
23 | 데이터 네트워크 세그먼트 | 전역 루트 |
전역 루트 관리 API 서버에서 서브넷 만들기
전역 루트 관리자 API 서버에서 서브넷을 만들려면 다음 단계를 완료하세요.
유니버스에서 영역을 나열하고 새 영역 이름을 찾습니다.
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get zone -A조직의 새 영역에 대한 영역 네트워크 루트 범위
infra-vpc서브넷을 만듭니다.kubectl apply -f --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: infra-vpc ipam.gdc.goog/usage: zone-network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: infra-vpc-NEW_ZONE_NAME-root-cidr namespace: ORG_NAME spec: ipv4Request: cidr: zoneInfraVPCCIDR zone: NEW_ZONE_NAME propagationStrategy: SingleZone type: Root EOF조직의 새 영역에 대한 영역 네트워크 루트 범위 데이터 네트워크 세그먼트 서브넷을 만듭니다.
kubectl apply -f --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/network-segment: data ipam.gdc.goog/usage: zone-network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: data-external-NEW_ZONE_NAME-root-cidr namespace: ORG_NAME spec: ipv4Request: cidr: zoneOrgDataExternalCIDR zone: NEW_ZONE_NAME propagationStrategy: SingleZone type: Root EOF조직의 새 영역에 대한 영역 네트워크 루트 범위 관리 네트워크 세그먼트 서브넷을 만듭니다.
kubectl apply -f --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/network-segment: admin ipam.gdc.goog/usage: zone-network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: admin-external-NEW_ZONE_NAME-root-cidr namespace: ORG_NAME spec: ipv4Request: cidr: zoneOrgAdminExternalCIDR zone: NEW_ZONE_NAME propagationStrategy: SingleZone type: Root EOF
전역 조직 관리자 API 서버에서 서브넷 만들기
API 서버가 실행된 후 조직의 전역 조직 관리자 API 서버에서 platform 네임스페이스 내에 기본 VPC 서브넷을 만들어야 합니다.
다음 Subnet 커스텀 리소스를 만들고 적용합니다.
kubectl apply -f --kubeconfig=GLOBAL_ORG_API_SERVER_KUBECONFIG - <<EOF
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: default-vpc
ipam.gdc.goog/usage: zone-network-root-range
name: default-vpc-NEW_ZONE_NAME-root-cidr
namespace: platform
spec:
type: Root
ipv4Request:
cidr: zoneDefaultVPCCIDR
zone: NEW_ZONE_NAME
propagationStrategy: SingleZone
EOF
업스케일 서브넷
공개 Subnet 리소스는 자동 업스케일링을 지원하지 않습니다. 고객 관리 VPC 또는 네트워크 세그먼트에 CIDR 범위를 추가하려면 새 서브넷을 만들고 특정 라벨로 그룹화해야 합니다. 루트 관리자 클러스터에 대한 액세스가 필요하므로 고객이 서브넷을 독립적으로 확장할 수 없습니다.
서브넷 그룹화 규칙
서브넷은 라벨별로 여러 카테고리로 그룹화됩니다.
| 카테고리 | 라벨 |
|---|---|
| 기본 VPC | ipam.gdc.goog/vpc: default-vpc |
| 인프라 VPC | ipam.gdc.goog/vpc: infra-vpc |
| 관리 네트워크 세그먼트 | ipam.gdc.goog/network-segment: admin |
| 데이터 네트워크 세그먼트 | ipam.gdc.goog/network-segment: data |
초기 부트스트랩 중에 조직 인테이크 설문지 (OIQ)에 CIDR 범위 4개가 지정되었습니다. 이러한 4개의 전역 서브넷은 고객 조직 생성 중에 전역 API 서버에서 생성되었습니다.
이러한 전역 서브넷은 조직의 모든 영역에 걸쳐 각 카테고리의 루트 수준 CIDR 범위입니다. 모든 루트 수준 전역 서브넷에는 ipam.gdc.goog/usage: network-root-range 라벨이 있습니다.
각 영역에 대해 루트 수준 서브넷에서 잘라낸 하위 전역 서브넷이 전역 API 서버에 생성됩니다. 각 하위 전역 서브넷은 특정 영역의 카테고리에 대한 CIDR 범위를 호스팅하고 ipam.gdc.goog/usage: zone-network-root-range 라벨이 있습니다. 영역의 하위 전역 서브넷은 특정 영역에 자동으로 전파됩니다.
일반적인 업스케일링 사용 사례
기존 서브넷을 확장하기 위해 추가 서브넷을 가장 효율적으로 할당하려면 각 서브넷 카테고리에 권장되는 사용 사례를 고려하세요. 업스케일링 프로세스를 시작하기 전에 업스케일링할 카테고리를 결정합니다.
기본 VPC
default-vpc의 서브넷은 주로 공유 서비스 클러스터, 사용자 클러스터, 조직의 클러스터 노드 IP 주소 및 워크로드 IP 주소용 default-vpc-default-node-subnet의 포드 및 서비스 CIDR을 할당하는 데 사용됩니다.
사용자 클러스터를 만들지 못하는 것은 서브넷 업스케일링이 필요할 수 있는 일반적인 시나리오입니다.
사용자 클러스터의 포드 또는 서비스 CIDR의 상위 서브넷을 찾을 수 없어 사용자 클러스터 생성이 실패할 수 있습니다. 이 실패에 대한 샘플 메시지는 다음과 유사합니다.
could not find parent for subnet platform/user-vm-1-service-cidr
이 문제는 서브넷을 확장해야 하는 필요성과 직접적으로 관련된 여러 가지 이유로 인해 발생할 수 있습니다. 다음 단계를 고려하여 확인하세요.
Cluster커스텀 리소스의.spec.clusterNetwork섹션에서podCIDRSize및serviceCIDRSize필드를 확인합니다.kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get cluster \ -n platform USER_CLUSTER_NAME -oyaml결과는 다음과 유사합니다.
Example: spec: clusterNetwork: podCIDRSize: 20 serviceCIDRSize: 20기존 서브넷의 상위 서브넷을 찾습니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet -n platform -l \ ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=zone-network-root-range결과는 다음과 유사합니다.
Example: NAME PARENT READY IPV4 CIDR IPV6 CIDR default-vpc-zone0-cidr True 198.51.100.0/18상위 서브넷에서 할당한 모든 서브넷을 찾습니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet -n platform -l \ ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage!=zone-network-root-range결과는 다음과 유사합니다.
Example: default-vpc-default-node-subnet {"name":"default-vpc-zone0-cidr","namespace":"platform"} True 198.51.100.0/23 g-org-1-shared-service-pod-cidr {"name":"default-vpc-zone0-cidr","namespace":"platform"} True 198.51.16.0/20 g-org-1-shared-service-service-cidr {"name":"default-vpc-zone0-cidr","namespace":"platform"} True 198.51.2.0/23 user-vm-1-pod-cidr {"name":"default-vpc-zone0-cidr","namespace":"platform"} True 198.51.8.0/21 user-vm-1-service-cidr {"name":"default-vpc-zone0-cidr","namespace":"platform"} True 198.51.4.0/23 user-vm-2-pod-cidr {"name":"default-vpc-zone0-cidr","namespace":"platform"} True 198.51.32.0/21 user-vm-2-service-cidr {"name":"default-vpc-zone0-cidr","namespace":"platform"} True 198.51.6.0/23
이 예시에서 /18 상위 CIDR은 /23 CIDR 4개, /20 CIDR 1개, /21 CIDR 2개를 할당했으며 새 사용자 클러스터는 podCIDRSize에 /20 CIDR을 요청하고 serviceCIDRSize에 /20 CIDR을 요청하므로 충분하지 않습니다.
이 경우 기본 VPC의 카테고리에 서브넷을 추가해야 합니다.
인프라 VPC
infra-vpc의 서브넷은 주로 조직 인프라 클러스터 및 경계 클러스터의 조직 포드 및 서비스 CIDR과 경계 클러스터의 노드 IP 주소를 할당하는 데 사용됩니다.
이는 내부 GDC 인프라 설정에 속하며 각 조직에는 조직 인프라 클러스터 하나와 경계 클러스터 하나만 있으므로 일반적으로 infra-vpc에는 업스케일 작업이 필요하지 않습니다.
관리 네트워크 세그먼트
관리 네트워크 세그먼트의 서브넷은 주로 조직 관리 가상 라우팅 및 전달 (VRF)에서 IP 주소를 할당하는 데 사용됩니다. 조직에 기본 노드 서브넷 또는 게이트웨이 정보가 있는 서브넷이 생성되어 있습니다. 이 기본 서브넷은 조직 인프라 클러스터 노드 IP 주소와 경계 클러스터 노드 IP 주소의 IP 주소를 할당합니다.
관리자 네트워크 세그먼트는 내부 GDC 인프라 설정에 속하고 각 조직은 조직 인프라 클러스터 하나와 경계 클러스터 하나만 가질 수 있으므로 일반적으로 이 서브넷은 업스케일링할 필요가 없습니다.
데이터 네트워크 세그먼트
데이터 네트워크 세그먼트의 서브넷은 주로 조직 데이터 VRF에서 IP 주소를 할당하는 데 사용됩니다. 조직에 기본 노드 서브넷 또는 게이트웨이 정보가 있는 서브넷이 생성되어 있습니다. 이 기본 서브넷은 조직 인프라 클러스터 노드 IP 주소와 경계 클러스터 노드 IP 주소의 IP 주소를 할당합니다.
데이터 네트워크 세그먼트는 내부 GDC 인프라 설정에 속하고 각 조직은 조직 인프라 클러스터 하나와 경계 클러스터 하나만 가질 수 있으므로 일반적으로 이 서브넷은 스케일업할 필요가 없습니다.
카테고리에 서브넷 추가
서브넷 유형에 따라 카테고리에 서브넷을 추가할 수 있습니다. 다음 유형은 서브넷을 더 추가할 수 있습니다.
- 인프라 VPC
- 관리 네트워크 세그먼트
- 데이터 네트워크 세그먼트
- 기본 VPC
서브넷을 추가할 서브넷 유형을 확인한 후 해당 서브넷 유형에 대해 다음 단계를 완료합니다.
전역 루트 관리자 API 서버에서 루트 서브넷 유형을 가져오고
subnet.status.ipv4Allocation.cidr에서 CIDRmaskSize필드를 확인합니다.kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get subnet -n ORG_NAME \ -l ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage=network-root-range다음을 바꿉니다.
GLOBAL_ROOT_ADMIN_KUBECONFIG: 루트 관리자 클러스터의 kubeconfig 파일 경로입니다.ORG_NAME: 조직 이름SUBNET_TYPE: 서브넷 유형(예:vpc=infra-vpc,network-segment=admin,network-segment=data,vpc=default-vpc)
이 값을 나중에 참조할 총 CIDR로 기록합니다.
루트 서브넷의 모든 하위 서브넷을 가져오고
subnet.status.ipv4Allocation.cidr에서 각 CIDRmaskSize필드를 확인합니다.kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get subnet -n ORG_NAME \ -l ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage!=network-root-range각 값을 사용된 CIDR로 기록해 둡니다. 나중에 참조할 예정입니다.
총 CIDR과 사용된 CIDR을 기반으로 서브넷의 사용 가능한 CIDR을 계산합니다. 사용 가능한 CIDR이 새 서브넷을 할당하기에 충분히 크지 않으면 새 네트워크 루트 범위 전역 서브넷을 추가합니다. 그런 다음 다음 단계로 진행합니다.
전역 루트 관리자 API 서버에서 새 서브넷을 만듭니다.
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/SUBNET_TYPE_LABEL ipam.gdc.goog/usage: zone-network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: SUBNET_NAME namespace: ORG_NAME spec: ipv4Request: prefixLength: CIDR_PREFIX_LENGTH zone: ZONE_NAME propagationStrategy: SingleZone type: Branch parentReference: name: PARENT_SUBNET_NAME namespace: ORG_NAME EOF다음을 바꿉니다.
GLOBAL_ROOT_ADMIN_KUBECONFIG: 루트 관리자 클러스터의 kubeconfig 파일 경로입니다.SUBNET_TYPE_LABEL: 서브넷 유형입니다.vpc: infra-vpc,network-segment: admin,network-segment: data,vpc: default-vpc중 하나여야 합니다.SUBNET_NAME: 새 서브넷의 이름입니다.ORG_NAME: 조직 이름CIDR_PREFIX_LENGTH: 새 서브넷의 프리픽스 길이입니다(예:20).ZONE_NAME: 서브넷의 영역 이름입니다(예:zone1).PARENT_SUBNET_NAME: 상위 서브넷의 이름입니다(예:infra-vpc-root-cidr,admin-external-root-cidr,data-external-root-cidr,default-vpc-root-cidr).
상태
Ready유형이true인지 확인하여 서브넷이 준비되었는지 확인합니다.조직의 전역 API 서버에 전역 서브넷이 생성되었으며 준비되었는지 확인합니다.
kubectl --kubeconfig GLOBAL_ORG_ADMIN_KUBECONFIG get subnet -n NAMESPACE -l \ ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage=zone-network-root-rangeNAMESPACE을 서브넷의 네임스페이스로 바꿉니다.
infra-vpc서브넷에는infra-network를 사용하고 다른 서브넷 유형에는platform를 사용합니다.영역 서브넷이 루트 관리자 클러스터의 조직 네임스페이스에 생성되었고 준비되었는지 확인합니다.
kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG get subnet -n ORG_NAME \ -l ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage=zone-network-root-range영역 서브넷이
platform네임스페이스의 관리 API 서버에 생성되었으며 준비되었는지 확인합니다.kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet -n NAMESPACE \ -l ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage=zone-network-root-range
지정한 영역에서 조직의 서브넷 업스케일이 완료되었습니다. 관리자는 새 서브넷에서 더 많은 하위 서브넷을 만들 수 있습니다.
새 네트워크 루트 범위 전역 서브넷 추가
ipam.gdc.goog/usage: network-root-range 라벨이 지정된 전역 서브넷은 이 카테고리의 모든 영역의 CIDR을 호스팅합니다. 모두 사용된 경우 전역 API 서버에서 새 network-root-range 서브넷을 만들어야 합니다. 필요한 경우 여러 루트 전역 서브넷을 만들 수 있습니다.
새 network-root-range 서브넷을 만들려면 다음 단계를 완료하세요.
새 네트워크 루트 범위 전역 서브넷의 YAML 파일(예:
subnet-network-root.yaml)을 만듭니다.apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/SUBNET_TYPE ipam.gdc.goog/usage: network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: SUBNET_NAME namespace: ORG_NAME spec: ipv4Request: cidr: NEW_CIDR type: Root다음을 바꿉니다.
SUBNET_TYPE: 서브넷 유형으로,vpc: infra-vpc,network-segment: admin,network-segment: data,vpc: default-vpc중 하나여야 합니다.API_SERVER_ANNOTATION: 이 서브넷이 다른 API 서버로 피벗해야 함을 식별하는 주석입니다.infra-vpc또는 관리자 및 datanet 작업 세그먼트의 경우ipam.gdc.goog/pivot-destination: global-org를 사용합니다. 새default-vpc루트 범위를 추가하는 경우 이 주석을 설정하지 마세요.SUBNET_NAME: 새 서브넷의 이름입니다.ORG_NAME: 조직 이름NEW_CIDR: 서브넷의 새 CIDR입니다. 이 CIDR은 동일한 전역 루트 관리 API 서버에 있는ipam.gdc.goog/usage: network-root-range라벨이 있는 기존 서브넷의 CIDR과 중복될 수 없습니다.