Kubernetes不特定于供应商;但是,为了为部署多集群Kubernetes Operator实施的所有元素提供明确且完整的说明,本节将引导您专门完成在GCP上部署多个Kubernetes集群的进程。
先决条件
开始之前,请执行以下操作:
创建GCP帐户。
准备一个GCP项目,以便可以使用它来创建GKE (Google Kubernetes Engine)集群。
安装GCP CLI。
使用
gcloud auth login命令进行身份验证。根据需要更新并设立以下
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存储库中找到所有包含的源代码。
步骤
2
创建 Kubernetes 集群。
创建三个GKE (Google Kubernetes Engine) 集群。Kubernetes Operator 部署到其中一个集群, MongoDB自定义资源部署到所有集群,并由Kubernetes Operator托管。
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:-""}"3
将凭证存储在 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
4
验证 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