Kubernetes不特定于供应商;但是,为了为部署多集群Kubernetes Operator实施的所有元素提供明确且完整的说明,本节将引导您专门在 GCP上部署多个Kubernetes集群的进程。
先决条件
开始之前,请执行以下操作:
创建GCP帐户。
准备一个GCP项目,以便可以使用它来创建 GKE (Google Kubernetes Engine) 集群。
安装GCP CLI。
使用
gcloud auth login
命令进行身份验证。根据需要更新并设立以下
env_variables.sh
文件中定义的环境变量。
1 # GCP project name - this is the only parameter that is mandatory to change here 2 export MDB_GKE_PROJECT="${MDB_GKE_PROJECT:="### Set your GKE project name here ###"}" 3 4 # Adjust the values for each Kubernetes cluster in your deployment. 5 # The deployment script references the following variables to get values for each cluster. 6 export K8S_CLUSTER_0="k8s-mdb-0${K8S_CLUSTER_SUFFIX:-""}" 7 export K8S_CLUSTER_0_ZONE="europe-central2-a" 8 export K8S_CLUSTER_0_NUMBER_OF_NODES=3 9 export K8S_CLUSTER_0_MACHINE_TYPE="e2-standard-4" 10 export K8S_CLUSTER_0_CONTEXT_NAME="gke_${MDB_GKE_PROJECT}_${K8S_CLUSTER_0_ZONE}_${K8S_CLUSTER_0}" 11 12 export K8S_CLUSTER_1="k8s-mdb-1${K8S_CLUSTER_SUFFIX:-""}" 13 export K8S_CLUSTER_1_ZONE="europe-central2-b" 14 export K8S_CLUSTER_1_NUMBER_OF_NODES=3 15 export K8S_CLUSTER_1_MACHINE_TYPE="e2-standard-4" 16 export K8S_CLUSTER_1_CONTEXT_NAME="gke_${MDB_GKE_PROJECT}_${K8S_CLUSTER_1_ZONE}_${K8S_CLUSTER_1}" 17 18 export K8S_CLUSTER_2="k8s-mdb-2${K8S_CLUSTER_SUFFIX:-""}" 19 export K8S_CLUSTER_2_ZONE="europe-central2-c" 20 export K8S_CLUSTER_2_NUMBER_OF_NODES=1 21 export K8S_CLUSTER_2_MACHINE_TYPE="e2-standard-4" 22 export K8S_CLUSTER_2_CONTEXT_NAME="gke_${MDB_GKE_PROJECT}_${K8S_CLUSTER_2_ZONE}_${K8S_CLUSTER_2}" 23 24 # Comment out the following line so that the script does not create preemptible nodes. 25 # DO NOT USE preemptible nodes in production. 26 export GKE_SPOT_INSTANCES_SWITCH="--preemptible"
源代码
您可以在MongoDB Kubernetes Operator存储库中找到所有包含的源代码。
步骤
2
创建 Kubernetes 集群。
创建三个 GKE (Google Kubernetes Engine) 集群:
1 gcloud container clusters create "${K8S_CLUSTER_0}" \ 2 --zone="${K8S_CLUSTER_0_ZONE}" \ 3 --num-nodes="${K8S_CLUSTER_0_NUMBER_OF_NODES}" \ 4 --machine-type "${K8S_CLUSTER_0_MACHINE_TYPE}" \ 5 --tags=mongodb \ 6 "${GKE_SPOT_INSTANCES_SWITCH:-""}"
1 gcloud container clusters create "${K8S_CLUSTER_1}" \ 2 --zone="${K8S_CLUSTER_1_ZONE}" \ 3 --num-nodes="${K8S_CLUSTER_1_NUMBER_OF_NODES}" \ 4 --machine-type "${K8S_CLUSTER_1_MACHINE_TYPE}" \ 5 --tags=mongodb \ 6 "${GKE_SPOT_INSTANCES_SWITCH:-""}"
1 gcloud container clusters create "${K8S_CLUSTER_2}" \ 2 --zone="${K8S_CLUSTER_2_ZONE}" \ 3 --num-nodes="${K8S_CLUSTER_2_NUMBER_OF_NODES}" \ 4 --machine-type "${K8S_CLUSTER_2_MACHINE_TYPE}" \ 5 --tags=mongodb \ 6 "${GKE_SPOT_INSTANCES_SWITCH:-""}"
3
将凭证存储在 kubeconfig 中。
获取凭证并将上下文保存到当前的 kubeconfig
文件。默认下,此文件位于 ~/.kube/config
目录中,并由 $KUBECONFIG
环境变量引用。
1 gcloud container clusters get-credentials "${K8S_CLUSTER_0}" --zone="${K8S_CLUSTER_0_ZONE}" 2 gcloud container clusters get-credentials "${K8S_CLUSTER_1}" --zone="${K8S_CLUSTER_1_ZONE}" 3 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
4
验证kubectl
是否有权访问权限Kubernetes集群。
1 echo "Nodes in cluster ${K8S_CLUSTER_0_CONTEXT_NAME}" 2 kubectl --context "${K8S_CLUSTER_0_CONTEXT_NAME}" get nodes 3 echo; echo "Nodes in cluster ${K8S_CLUSTER_1_CONTEXT_NAME}" 4 kubectl --context "${K8S_CLUSTER_1_CONTEXT_NAME}" get nodes 5 echo; echo "Nodes in cluster ${K8S_CLUSTER_2_CONTEXT_NAME}" 6 kubectl --context "${K8S_CLUSTER_2_CONTEXT_NAME}" get nodes
1 Nodes in cluster gke_scratch-kubernetes-team_europe-central2-a_k8s-mdb-0-686cc1e099f9ef000722c191-862 2 NAME STATUS ROLES AGE VERSION 3 gke-k8s-mdb-0-686cc1e099-default-pool-63c33f99-532x Ready <none> 3m7s v1.32.4-gke.1415000 4 gke-k8s-mdb-0-686cc1e099-default-pool-63c33f99-fs12 Ready <none> 3m7s v1.32.4-gke.1415000 5 gke-k8s-mdb-0-686cc1e099-default-pool-63c33f99-hghj Ready <none> 3m7s v1.32.4-gke.1415000 6 7 Nodes in cluster gke_scratch-kubernetes-team_europe-central2-b_k8s-mdb-1-686cc1e099f9ef000722c191-862 8 NAME STATUS ROLES AGE VERSION 9 gke-k8s-mdb-1-686cc1e099-default-pool-93d5418d-712x Ready <none> 57s v1.32.4-gke.1415000 10 gke-k8s-mdb-1-686cc1e099-default-pool-93d5418d-hpcc Ready <none> 58s v1.32.4-gke.1415000 11 gke-k8s-mdb-1-686cc1e099-default-pool-93d5418d-wg14 Ready <none> 61s v1.32.4-gke.1415000 12 13 Nodes in cluster gke_scratch-kubernetes-team_europe-central2-c_k8s-mdb-2-686cc1e099f9ef000722c191-862 14 NAME STATUS ROLES AGE VERSION 15 gke-k8s-mdb-2-686cc1e099-default-pool-d128293d-tng2 Ready <none> 3m12s v1.32.4-gke.1415000