Kubernetes 벤더 에 따라 달라지지 않습니다. 그러나 멀티 클러스터 Kubernetes Operator 구현 의 모든 요소를 배포하기 위한 명시적이고 완전한 지침을 제공하기 위해 이 섹션에서는 GCP 에 여러 Kubernetes 클러스터를 배포하는 프로세스 구체적으로 안내합니다.
전제 조건
시작하기 전에 다음 작업을 수행합니다.
GCP 계정을 만듭니다.
GKE(Google Kubernetes 엔진) 클러스터를 만들는 데 사용할 수 있도록 GCP 프로젝트를 준비합니다.
GCP CLI설치합니다.
필요에 따라 업데이트하고 다음
env_variables.sh파일 에 정의된 환경 변수를 설정하다 .
# GCP project name - this is the only parameter that is mandatory to change hereexport MDB_GKE_PROJECT="${MDB_GKE_PROJECT:="### Set your GKE project name here ###"}"
# Adjust the values for each Kubernetes cluster in your deployment.# The deployment script references the following variables to get values for each cluster.export K8S_CLUSTER_0="k8s-mdb-0${K8S_CLUSTER_SUFFIX:-""}"export K8S_CLUSTER_0_ZONE="europe-central2-a"export K8S_CLUSTER_0_NUMBER_OF_NODES=3export K8S_CLUSTER_0_MACHINE_TYPE="e2-standard-4"export K8S_CLUSTER_0_CONTEXT_NAME="gke_${MDB_GKE_PROJECT}_${K8S_CLUSTER_0_ZONE}_${K8S_CLUSTER_0}"
export K8S_CLUSTER_1="k8s-mdb-1${K8S_CLUSTER_SUFFIX:-""}"export K8S_CLUSTER_1_ZONE="europe-central2-b"export K8S_CLUSTER_1_NUMBER_OF_NODES=3export K8S_CLUSTER_1_MACHINE_TYPE="e2-standard-4"export K8S_CLUSTER_1_CONTEXT_NAME="gke_${MDB_GKE_PROJECT}_${K8S_CLUSTER_1_ZONE}_${K8S_CLUSTER_1}"
export K8S_CLUSTER_2="k8s-mdb-2${K8S_CLUSTER_SUFFIX:-""}"export K8S_CLUSTER_2_ZONE="europe-central2-c"export K8S_CLUSTER_2_NUMBER_OF_NODES=1export K8S_CLUSTER_2_MACHINE_TYPE="e2-standard-4"export K8S_CLUSTER_2_CONTEXT_NAME="gke_${MDB_GKE_PROJECT}_${K8S_CLUSTER_2_ZONE}_${K8S_CLUSTER_2}"
# Comment out the following line so that the script does not create preemptible nodes.# DO NOT USE preemptible nodes in production.export GKE_SPOT_INSTANCES_SWITCH="--preemptible"소스 코드
포함된 모든 소스 코드 MongoDB Kubernetes Operator 리포지토리 에서 찾을 수 있습니다.
절차
Kubernetes 클러스터를 생성합니다.
3개의 GKE(Google Kubernetes Engine) 클러스터를 만듭니다. Kubernetes Operator는 이러한 클러스터 중 하나에 배포되고 MongoDB 사용자 지정 리소스는 모든 클러스터에 배포되며 Kubernetes Operator가 managed .
gcloud container clusters create "${K8S_CLUSTER_0}" \ --zone="${K8S_CLUSTER_0_ZONE}" \ --num-nodes="${K8S_CLUSTER_0_NUMBER_OF_NODES}" \ --machine-type "${K8S_CLUSTER_0_MACHINE_TYPE}" \ --tags=mongodb \ "${GKE_SPOT_INSTANCES_SWITCH:-""}"gcloud container clusters create "${K8S_CLUSTER_1}" \ --zone="${K8S_CLUSTER_1_ZONE}" \ --num-nodes="${K8S_CLUSTER_1_NUMBER_OF_NODES}" \ --machine-type "${K8S_CLUSTER_1_MACHINE_TYPE}" \ --tags=mongodb \ "${GKE_SPOT_INSTANCES_SWITCH:-""}"gcloud container clusters create "${K8S_CLUSTER_2}" \ --zone="${K8S_CLUSTER_2_ZONE}" \ --num-nodes="${K8S_CLUSTER_2_NUMBER_OF_NODES}" \ --machine-type "${K8S_CLUSTER_2_MACHINE_TYPE}" \ --tags=mongodb \ "${GKE_SPOT_INSTANCES_SWITCH:-""}"kubeconfig 파일에 자격 증명 저장합니다.
자격 증명 얻고 현재 kubeconfig 파일 에 컨텍스트를 저장합니다. 기본값 으로 이 파일 ~/.kube/config 디렉토리 $KUBECONFIG 에 있으며 환경 변수에 의해 참조됩니다.
gcloud container clusters get-credentials "${K8S_CLUSTER_0}" --zone="${K8S_CLUSTER_0_ZONE}"gcloud container clusters get-credentials "${K8S_CLUSTER_1}" --zone="${K8S_CLUSTER_1_ZONE}"gcloud container clusters get-credentials "${K8S_CLUSTER_2}" --zone="${K8S_CLUSTER_2_ZONE}"모든 kubectl 명령은 다음 변수를 사용하여 이러한 컨텍스트를 참조합니다.
$K8S_CLUSTER_0_CONTEXT_NAME$K8S_CLUSTER_1_CONTEXT_NAME$K8S_CLUSTER_2_CONTEXT_NAME
kubectl 가 Kubernetes 클러스터에 대한 액세스 있는지 확인합니다.
echo "Nodes in cluster ${K8S_CLUSTER_0_CONTEXT_NAME}"kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" get nodesecho; echo "Nodes in cluster ${K8S_CLUSTER_1_CONTEXT_NAME}"kubectl --context "${K8S_CLUSTER_1_CONTEXT_NAME}" get nodesecho; echo "Nodes in cluster ${K8S_CLUSTER_2_CONTEXT_NAME}"kubectl --context "${K8S_CLUSTER_2_CONTEXT_NAME}" get nodesNodes in cluster gke_scratch-kubernetes-team_europe-central2-a_k8s-mdb-0-68c29e4f7014ee0007f0695a-5819NAME STATUS ROLES AGE VERSIONgke-k8s-mdb-0-68c29e4f70-default-pool-daccddb3-f8t9 Ready <none> 29s v1.33.3-gke.1136000gke-k8s-mdb-0-68c29e4f70-default-pool-daccddb3-sf9r Ready <none> 32s v1.33.3-gke.1136000gke-k8s-mdb-0-68c29e4f70-default-pool-daccddb3-skcf Ready <none> 28s v1.33.3-gke.1136000
Nodes in cluster gke_scratch-kubernetes-team_europe-central2-b_k8s-mdb-1-68c29e4f7014ee0007f0695a-5819NAME STATUS ROLES AGE VERSIONgke-k8s-mdb-1-68c29e4f70-default-pool-74f8eefe-764d Ready <none> 82s v1.33.3-gke.1136000gke-k8s-mdb-1-68c29e4f70-default-pool-74f8eefe-8mwj Ready <none> 83s v1.33.3-gke.1136000gke-k8s-mdb-1-68c29e4f70-default-pool-74f8eefe-qzzz Ready <none> 82s v1.33.3-gke.1136000
Nodes in cluster gke_scratch-kubernetes-team_europe-central2-c_k8s-mdb-2-68c29e4f7014ee0007f0695a-5819NAME STATUS ROLES AGE VERSIONgke-k8s-mdb-2-68c29e4f70-default-pool-f2d299fd-qx7n Ready <none> 2m31s v1.33.3-gke.1136000