GKE-to-GKE Clustermesh 준비
GKE-to-GKE Clustermesh 준비 (GKE-to-GKE Clustermesh Preparation)
이 가이드는 clustermesh 요구사항을 충족하도록 Google Kubernetes Engine(GKE) 클러스터를 설치하고 준비하는 단계별 가이드예요. 비용 효율적인 개발·학습용 환경을 위해 서로 다른 지역에 두 개의 영역(zonal) 단일 노드 GKE 클러스터를 배포합니다.
본문
이 가이드는 clustermesh 기능의 요구사항을 충족하도록 Google Kubernetes Engine (GKE) 클러스터를 설치하고 준비하는 단계별 가이드입니다.
이 가이드는 clustermesh를 배포할 비용 효율적인 환경을 만들기 위한 목적으로 서로 다른 지역에 두 개의 영역(zonal), 단일 노드 GKE 클러스터를 배포하는 방법을 설명해요. 개발/학습 목적으로 이상적입니다.
Note
아래 단계는 gcloud CLI 도구가 필요합니다.
VPC 생성
GCP 프로젝트에 VPC 네트워크를 만듭니다. 값이 이후 단계에서 참조되므로 환경 변수를 권장합니다.
# feel free to choose your own VPC network name
export PROJECT_ID="[GCP_PROJECT_ID]"
export VPC_NETWORK="my-gke-network"
gcloud compute networks create ${VPC_NETWORK} \
--subnet-mode=auto \
--project ${PROJECT_ID}
gcloud compute firewall-rules create ${VPC_NETWORK}-allow-internal \
--network ${VPC_NETWORK} \
--allow tcp,udp,icmp \
--source-ranges "10.128.0.0/9"
클러스터 배포
이후 단계에서 재사용할 값에 대한 추가 환경 변수를 설정합니다.
# us-west1-a can be changed to any available location (`gcloud compute zones list`)
export CLUSTER="gke-1"
export ZONE="us-west1-a"
export POD_CIDR="10.0.0.0/18"
export SERVICES_CIDR="10.1.0.0/20"
아래는 하나의 GKE 클러스터를 배포하는 예시입니다. 더 많은 클러스터를 만들려면 서로 다른 클러스터 이름, 영역, pod CIDR, services CIDR을 사용해 단계를 다시 따르면 됩니다.
Note
예시와 다른 pod 및 services CIDR을 사용할 수 있지만, IP 주소 범위 규칙을 충족하는지 확인하세요. 무엇보다 다른 클러스터의 pods 및 services CIDR과 겹치지 않도록 하세요.
gcloud container clusters create ${CLUSTER} \
--zone ${ZONE} \
--node-locations ${ZONE} \
--network=${VPC_NETWORK} \
--enable-ip-alias \
--cluster-ipv4-cidr=${POD_CIDR} \
--services-ipv4-cidr=${SERVICES_CIDR} \
--machine-type=e2-medium \
--max-nodes=1 \
--num-nodes=1 \
--node-taints node.cilium.io/agent-not-ready=true:NoSchedule \
--project ${PROJECT_ID}
# Get kubectl credentials, the command will merge the new credentials
# with the existing ~/.kube/config
gcloud container clusters get-credentials ${CLUSTER} \
--zone ${ZONE} \
--project ${PROJECT_ID}
노드 테인트는 Cilium이 설치될 때까지 Pod의 배포/시작을 방지하는 데 사용됩니다.
Cilium을 설치합니다.
Important
각 클러스터에 고유한 cluster.id 를 할당해야 합니다.
cilium install 1.20.2 \
--set cluster.id=1 \
--set cluster.name=${CLUSTER}
Cilium 상태를 확인합니다.
cilium status
각 GKE 클러스터에 대해 clustermesh 설정 과정에서 사용할 컨텍스트를 환경 변수에 저장하세요.
GKE 클러스터 컨텍스트는 프로젝트 ID, 위치, 클러스터 이름의 조합입니다.
export CONTEXT1="gke_${PROJECT_ID}_${ZONE}_${CLUSTER}"
VPC 네트워크 피어링
Google Cloud의 VPC는 범위가 전역이므로, 같은 VPC 안의 서브넷은 지역과 무관하게 이미 내부적으로 서로 통신할 수 있어요. 따라서 VPC 피어링이 필요하지 않습니다!
이제 클러스터 간 노드-투-노드 트래픽이 가능해요. clustermesh의 모든 요구사항이 충족됐습니다. clustermesh 활성화는 Cluster Mesh 설정하기에서 설명합니다.
Kubernetes 컨텍스트가 필요한 명령에는 4단계에서 내보낸 환경 변수를 참고하세요.