이 페이지에서는 서브넷, 부하 분산 등 Google Distributed Cloud connected의 네트워킹 기능을 설명합니다.
Distributed Cloud Edge Network API 사용 설정
연결된 Distributed Cloud 배포에서 네트워킹을 구성하려면 먼저 Distributed Cloud Edge Network API를 사용 설정해야 합니다. 이렇게 하려면 이 섹션의 단계를 완료하세요. 기본적으로 Distributed Cloud(연결형) 서버는 Distributed Cloud Edge Network API가 이미 사용 설정된 상태로 제공됩니다.
콘솔
Google Cloud 콘솔에서 Distributed Cloud Edge Network API 페이지로 이동합니다.
사용 설정을 클릭합니다.
gcloud
다음 명령어를 사용하세요.
gcloud services enable edgenetwork.googleapis.com
Distributed Cloud(연결형)에서 네트워킹 구성
이 섹션에서는 Distributed Cloud 연결 배포에서 네트워킹 구성요소를 구성하는 방법을 설명합니다.
Distributed Cloud 연결 서버에는 다음 제한사항이 적용됩니다.
- 서브네트워크만 구성할 수 있으며
- 서브네트워크는 VLAN ID만 지원하며 CIDR 기반 서브네트워크는 지원되지 않습니다.
Distributed Cloud Connected의 일반적인 네트워크 구성은 다음 단계로 구성됩니다.
선택사항: 필요한 경우 타겟 영역의 네트워크 구성을 초기화합니다.
네트워크를 만듭니다.
네트워크 내에 서브네트워크를 하나 이상 만듭니다.
구성을 테스트합니다.
포드를 네트워크에 연결합니다.
Distributed Cloud 영역의 네트워크 구성 초기화
온프레미스에 Distributed Cloud 연결 하드웨어가 설치된 후 즉시 Distributed Cloud 연결 영역의 네트워크 구성을 초기화해야 합니다. 영역의 네트워크 구성을 초기화하는 것은 일회성 절차입니다.
영역의 네트워크 구성을 초기화하면 default라는 기본 네트워크가 생성됩니다.
이 구성은 Distributed Cloud 연결 배포에 로컬 네트워크로의 기본 업링크 연결을 제공합니다.
자세한 내용은 영역의 네트워크 구성 초기화를 참고하세요.
네트워크 만들기
새 네트워크를 만들려면 네트워크 만들기의 안내를 따르세요. 또한 분산 클라우드 연결 노드가 네트워크에 연결할 수 있도록 네트워크 내에 하나 이상의 서브네트워크를 만들어야 합니다.
하나 이상의 서브네트워크 만들기
서브네트워크를 만들려면 서브네트워크 만들기의 안내를 따르세요. 노드가 네트워크에 액세스할 수 있도록 네트워크에 하나 이상의 서브네트워크를 만들어야 합니다. 생성한 각 서브네트워크에 해당하는 VLAN은 영역의 모든 노드에서 자동으로 사용할 수 있습니다.
구성 테스트
생성한 네트워크 구성요소의 구성을 테스트하려면 다음을 실행하세요.
포드를 네트워크에 연결
포드를 네트워크에 연결하고 고급 네트워크 기능을 구성하려면 네트워크 기능 운영자의 안내를 따르세요. 이 기능은 가상 머신 워크로드에서는 사용할 수 없습니다.
(선택사항) 클러스터 네트워크 격리 구성
Distributed Cloud connected는 클러스터 네트워크 격리를 지원합니다. 네트워크 격리 클러스터에 할당된 노드는 동일한 Distributed Cloud 연결 영역 내의 다른 노드와 통신할 수 없습니다. 클러스터 네트워크 격리를 사용 설정하려면 클러스터를 만들거나 수정할 때 --enable-cluster-isolation 플래그를 사용하세요.
자세한 내용은 클러스터 만들기 및 관리를 참고하세요.
(선택사항) 섬 모드 구성
Distributed Cloud connected는 가상 네트워킹 하위 시스템의 아일랜드 모드를 지원합니다. 아일랜드 모드를 사용하면 포드의 보조 네트워크 인터페이스에서 격리된 IP 주소 범위를 지정할 수 있습니다. 이 격리된 주소 범위는 기본 네트워크 인터페이스 VLAN의 주소 범위와는 독립적입니다. 섬 모드로 구성된 포드에는 이 격리된 '섬' 주소 범위의 주소만 할당됩니다. 자세한 내용은 플랫 모드와 섬(island) 모드 네트워크 모델 비교를 참고하세요.
아일랜드 모드에 지정하는 격리된 IP 주소 범위는 다음 IP 주소 범위와 충돌하지 않아야 합니다.
- 클러스터에 구성된 네트워크의 기본 VLAN CIDR
Network리소스의networking.gke.io/gdce-lb-service-vip-cidrs주석에 지정된 부하 분산기 가상 IP 주소 범위- 클러스터의 다른 네트워크에 대해 아일랜드 모드에 사용되는 IP 주소 범위
아일랜드 모드 구성
포드 수준에서 아일랜드 모드를 구성하려면 해당 Network 커스텀 리소스에 networking.gke.io/gdce-pod-cidr 주석을 추가합니다. 주석 값을 타겟 격리 IP 주소 범위로 설정하고 수정된 Network 리소스를 클러스터에 적용합니다. 예를 들면 다음과 같습니다.
networking.gke.io/gdce-pod-cidr: 172.15.10.32/27
다음 매개변수도 설정해야 합니다.
type은L3로 설정해야 합니다.IPAMMode은Internal로 설정해야 합니다.
예를 들면 다음과 같습니다.
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: my-network
annotations:
# Enable island mode and specify the isolated address range.
networking.gke.io/gdce-pod-cidr: 172.15.10.32/27
# Specify the VLAN ID for this secondary network.
networking.gke.io/gdce-vlan-id: "561"
# Specify the CIDR block for load balancer services on this network.
networking.gke.io/gdce-lb-service-vip-cidrs: 172.20.5.180/30
spec:
# Network type must be L3 for island mode.
type: L3
# IPAMMode must be Internal for island mode.
IPAMMode: Internal
nodeInterfaceMatcher:
interfaceName: gdcenet0.561 # The name for the target network interface.
gateway4: 172.20.5.177 # Gateway IP address; must be unique in this CR.
externalDHCP4: false
dnsConfig:
nameservers:
- 8.8.8.8
아일랜드 모드가 사용 설정되어 있는지 확인하려면 다음을 실행하세요.
테스트 포드를 만들고 클러스터에 적용합니다. 예를 들면 다음과 같습니다.
apiVersion: v1 kind: Pod metadata: name: island-pod-tester annotations: networking.gke.io/interfaces: '[{"interfaceName":"eth1","network":"test-network-vlan561"}]' networking.gke.io/default-interface: "eth1" spec: containers: - name: sample-container image: busybox command: ["/bin/sh", "-c", "sleep 3600"]포드의 IP 주소를 가져옵니다.
kubectl get pod island-pod-tester -o wide이 명령어는 지정한 격리된 주소 범위 내에 있는 포드의 IP 주소를 반환합니다.
ClusterIP 서비스를 사용하여 아일랜드 모드 구성
ClusterIP 서비스를 사용하여 아일랜드 모드를 구성하려면 이전 섹션의 단계를 완료한 후 Network 리소스에 networking.gke.io/gke-gateway-clusterip-cidr 주석을 추가하고 비즈니스 요구사항에 따라 값을 설정합니다. Network 리소스에 지정된 주소 범위는 겹쳐서는 안 됩니다. 예를 들면 다음과 같습니다.
apiVersion: networking.gke.io/v1
kind: Network
metadata:
annotations:
networking.gke.io/gdce-lb-service-vip-cidrs: 172.20.5.180/30
networking.gke.io/gdce-pod-cidr: 172.15.10.32/27
networking.gke.io/gdce-vlan-id: "561"
networking.gke.io/gke-gateway-clusterip-cidr: 10.20.1.0/28
name: test-network-vlan561
spec:
IPAMMode: Internal
dnsConfig:
nameservers:
- 8.8.8.8
externalDHCP4: false
gateway4: 172.20.5.177
nodeInterfaceMatcher:
interfaceName: gdcenet0.561
type: L3
부하 분산
Distributed Cloud는 Layer 2 모드의 MetalLB를 기반으로 하는 번들 네트워크 부하 분산 솔루션과 함께 제공됩니다. 이 솔루션을 사용하면 다음과 같이 가상 IP 주소 (VIP)를 사용하여 Distributed Cloud 영역에서 실행되는 서비스를 외부 세계에 노출할 수 있습니다.
- 네트워크 관리자는 Distributed Cloud를 주문할 때 네트워크 토폴로지를 계획하고 필요한 가상 IPv4 주소 서브넷을 지정합니다. Google은 배송 전에 Distributed Cloud 하드웨어를 적절하게 구성합니다.
다음 사항에 유의하세요.
- 이 VIP 서브네트워크는 Distributed Cloud 영역 내에서 실행되는 모든 Kubernetes 클러스터 간에 공유됩니다.
- 서브네트워크의 첫 번째 (네트워크 ID), 두 번째 (기본 게이트웨이), 마지막 (브로드캐스트 주소) 주소는 핵심 시스템 기능을 위해 예약되어 있습니다. 이러한 주소를 MetalLB 구성의 주소 풀에 할당하지 마세요.
- 각 클러스터는 구성된 VIP 서브넷 내에 있는 별도의 VIP 범위를 사용해야 합니다.
- Distributed Cloud 영역에서 클러스터를 만들 때 클러스터 관리자는 CIDR 표기법을 사용하여 포드 및 ClusterIP 서비스 주소 풀을 지정합니다. 네트워크 관리자가 클러스터 관리자에게 적절한
LoadBalancerVIP 서브넷을 제공합니다. 클러스터가 생성되면 클러스터 관리자가 해당 VIP 풀을 구성합니다. 클러스터를 만들 때
--external-lb-address-pools플래그를 사용하여 VIP 풀을 지정해야 합니다. 이 플래그는 다음 형식의 YAML 또는 JSON 페이로드가 포함된 파일을 허용합니다.addressPools: - name: foo addresses: - 10.2.0.212-10.2.0.221 - fd12::4:101-fd12::4:110 avoid_buggy_ips: true manual_assign: false - name: bar addresses: - 10.2.0.202-10.2.0.203 - fd12::4:101-fd12::4:102 avoid_buggy_ips: true manual_assign: falseVIP 주소 풀을 지정하려면 페이로드에 다음 정보를 제공하세요.
name: 이 VIP 주소 풀을 고유하게 식별하는 설명 이름입니다.addresses: 이 주소 풀에 포함할 IPv4 주소, 주소 범위, 서브넷 목록입니다.avoid_buggy_ips:.0또는.255로 끝나는 IP 주소를 제외합니다.manual_assign: MetalLB 컨트롤러가 자동으로 할당하는 대신 타겟LoadBalancer서비스의 구성에서 이 풀의 주소를 수동으로 할당할 수 있습니다.
VIP 주소 풀 구성에 대한 자세한 내용은 MetalLB 문서의 주소 풀 지정을 참고하세요.
클러스터 관리자가 적절한 Kubernetes
LoadBalancer서비스를 만듭니다.
단일 노드 풀의 Distributed Cloud 노드는 공통 레이어 2 도메인을 공유하므로 MetalLB 부하 분산기 노드이기도 합니다.
리소스 ClusterDNS개
Distributed Cloud(연결형)는 spec.domains 섹션을 사용하여 특정 도메인의 업스트림 네임서버를 구성하기 위한 Google Distributed Cloud ClusterDNS 리소스를 지원합니다. 이 리소스 구성에 대한 자세한 내용은 spec.domains을 참고하세요.