- 关于MogDB Stack
- 快速上手
- 软件安装
- 使用手册
- 架构
- 参考
- 命令行
- mgo
- mgo create
- mgo create mgorole
- mgo create mgouser
- mgo create cluster
- mgo show
- mgo show k8s
- mgo show mgorole
- mgo show mgouser
- mgo show cluster
- mgo show restore
- mgo delete
- mgo delete mgorole
- mgo delete mgouser
- mgo delete cluster
- mgo delete backup
- mgo delete k8s
- mgo scale
- mgo scaledown
- mgo switch
- mgo update
- mgo update mgorole
- mgo update mgouser
- mgo update cluster
- mgo version
- mgo addk8s
- mgo localk8s
- mgo backup
- mgo backup detail
- mgo restore
- mgo minio
- mgo minio object
- mgo minio object ls
- mgo minio object stat
- mgo minio object getf
- 服务端
- 命令行
- FAQ
- 发布记录
前置条件
-
安装Kustomize v3+
go install sigs.k8s.io/kustomize/kustomize/v3@v3.8.7 ~/go/bin/kustomize version注意: kubectl 1.4+版本默认集成了Kustomize,无需单独安装。
-
下载MogDB Operator examples
首先,在GitHub上fork MogDB Stack examples仓库:
https://github.com/enmotech/mogdb-stack-examples/fork
fork仓库之后,您可以通过类似如下的命令下载至本地:
YOUR_GITHUB_UN="<your GitHub username>" git clone --depth 1 "git@github.com:${YOUR_GITHUB_UN}/mogdb-stack-examples.git" cd mogdb-stack-examplesMogDB Operator安装项目在kustomize目录下。
-
安装的组件
-
mogdb-operator
-
mogha
-
mogdb-monitor
-
mogdb-apiserver
-
mgo-client
其中,mgo-client运行在物理机下,其余组件都运行在k8s下
-
配置
默认的Kustomize可以工作在大部分Kubernetes环境中,也可以根据您的特殊需求定制。
例如,为MogDB Operator自定义镜像路径,该镜像在kustomize/mogdb-operator/default/kustomization.yaml文件中,可以修改为:
images:
- name: controller
newName: swr.cn-north-4.myhuaweicloud.com/mogdb-cloud/mogdb-operator
newTag: v2.0.0如果需要更改namespace名称,需要在kustomize/mogdb-operator/default/kustomization.yaml文件中修改如下配置。
namespace: custom-namespace安装
第1步: 安装 Mogha
kubectl apply -k kustomize/mogha期望输出:
namespace/mogha created
serviceaccount/mogdb-ha created
clusterrole.rbac.authorization.k8s.io/mogdb-ha-role created
clusterrolebinding.rbac.authorization.k8s.io/mogdb-ha-rolebinding created
secret/huawei-registry created
service/mogdb-ha created
deployment.apps/mogdb-ha created检查相关组件是否运行正常:
kubectl get pods -n mogha期望输出:
NAME READY STATUS RESTARTS AGE
mogdb-ha-5cf86cc667-r45vm 2/2 Running 0 66s当Pod处于Running状态时,继续下一步。
第2步: 安装 MogDB Operator
kubectl apply -k kustomize/mogdb-operator/default/期望输出:
namespace/mogdb-operator-system created
customresourcedefinition.apiextensions.k8s.io/mogdbbackups.mogdb.enmotech.io configured
customresourcedefinition.apiextensions.k8s.io/mogdbclusters.mogdb.enmotech.io configured
serviceaccount/mogdb-operator-controller-manager created
role.rbac.authorization.k8s.io/mogdb-operator-leader-election-role created
clusterrole.rbac.authorization.k8s.io/mogdb-operator-manager-role created
rolebinding.rbac.authorization.k8s.io/mogdb-operator-leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/mogdb-operator-manager-rolebinding created
configmap/mogdb-operator-global-config created
configmap/mogdb-operator-manager-config created
secret/mogdb-operator-huawei-registry created
deployment.apps/mogdb-operator-controller-manager created检查相关组件是否运行正常:
kubectl get pods -n mogdb-operator-system期望输出:
NAME READY STATUS RESTARTS AGE
mogdb-operator-controller-manager-fcf875446-ngknd 1/1 Running 0 45s当Pod处于Running状态时,继续下一步。
第3步: 安装MogDB Apiserver
kubectl apply -k kustomize/mogdb-apiserver/期望输出:
namespace/mogdb-operator-system unchanged
serviceaccount/mogdb-apiserver created
clusterrole.rbac.authorization.k8s.io/mgo-cluster-role created
clusterrolebinding.rbac.authorization.k8s.io/mgo-cluster-role created
secret/mgorole-admin created
secret/mgouser-admin created
service/mogdb-apiserver created
deployment.apps/mogdb-apiserver created检查相关组件是否运行正常:
kubectl get pods -n mogdb-operator-system期望输出:
NAME READY STATUS RESTARTS AGE
mogdb-apiserver-699c855d9b-zx4sm 1/1 Running 0 71s
mogdb-operator-controller-manager-fcf875446-ngknd 1/1 Running 0 18m当Pod处于Running状态时,继续下一步。
第4步: 安装监控告警
-
更改配置,编辑kustomize/mogdb-monitor/alertmanager/alertmanager-conf.yaml
smtp_smarthost: 'smtp.163.com:25' # 告警邮箱server host smtp_from: 'xxxx@163.com' # 发件人邮箱地址 smtp_auth_username: 'xxxx@163.com' # 用户名 smtp_auth_password: '<邮箱密码>' # 密码,开通smtp服务生成的授权码 - name: 'email' email_configs: - to: 'xxx@qq.com' # 接收报警的邮箱,多个用逗号隔开 -
安装监控告警组件
kubectl apply -k kustomize/mogdb-monitor期望输出:
namespace/monitor created serviceaccount/kube-state-metrics created serviceaccount/prometheus created clusterrole.rbac.authorization.k8s.io/kube-state-metrics created clusterrole.rbac.authorization.k8s.io/prometheus created clusterrolebinding.rbac.authorization.k8s.io/kube-state-metrics created clusterrolebinding.rbac.authorization.k8s.io/prometheus created configmap/prometheus-config created service/grafana created service/kube-state-metrics created service/node-exporter created service/prometheus created deployment.apps/grafana created deployment.apps/kube-state-metrics created deployment.apps/prometheus created daemonset.apps/node-exporter created
检查相关组件是否运行正常:
kubectl get pods -n monitor期望输出:
NAME READY STATUS RESTARTS AGE
grafana-5548d85c77-m69fc 1/1 Running 0 8s
kube-state-metrics-77f9d6d895-hw5t5 0/1 Running 0 8s
node-exporter-8j78l 1/1 Running 0 7s
node-exporter-9ctt7 1/1 Running 0 7s
node-exporter-chlg5 1/1 Running 0 7s
prometheus-645fcdf654-d956p 2/2 Running 0 7s当所有Pod处于Running状态时,继续下一步。
第5步: 安装 mgo 客户端
wget https://cdn-mogdb.enmotech.com/mogdb-stack/v2.0.0/client-setup.sh
chmod +x client-setup.sh
./client-setup.sh这将下载mgo客户端并且提示您添加一些环境变量以供您在会话中设置,您可以使用以下命令执行此操作:
export MGOUSER="${HOME?}/.mgo/mgouser"
export MGO_CA_CERT="${HOME?}/.mgo/client.crt"
export MGO_CLIENT_CERT="${HOME?}/.mgo/client.crt"
export MGO_CLIENT_KEY="${HOME?}/.mgo/client.key"
export MGO_APISERVER_URL='https://127.0.0.1:32444'
export MGO_NAMESPACE=mogdb-operator-system如果您希望将这些变量永久添加到您的环境中,您可以运行以下命令:
cat <<EOF >> ~/.bashrc
export PATH="${HOME?}/.mgo:$PATH"
export MGOUSER="${HOME?}/.mgo/mgouser"
export MGO_CA_CERT="${HOME?}/.mgo/client.crt"
export MGO_CLIENT_CERT="${HOME?}/.mgo/client.crt"
export MGO_CLIENT_KEY="${HOME?}/.mgo/client.key"
export MGO_APISERVER_URL='https://127.0.0.1:32444'
export MGO_NAMESPACE=mogdb-operator-system
EOF
source ~/.bashrc注意: 对于 macOS 用户,您使用文件是~/.bash_profile而不是~/.bashrc。
第6步: 创建MogDB 集群
有两种方式创建MogDB 集群
- mgo命令行创建
mgo create cluster cluster1期望输出:
created cluster: cluster1检查集群是否安装成功
mgo show cluster cluster1期望输出:
cluster : cluster1
pod : cluster1-ib7zq (Running) on mogdb-k8s-001 (3/3) (primary)
pod : cluster1-rtwdz (Running) on mogdb-k8s-002 (3/3) (standby)
service : cluster1-svc-master - ClusterIP (10.1.149.4) - Ports (5432:30013/TCP)
service : cluster1-svc-replicas - ClusterIP (10.1.175.46) - Ports (5432:30012/TCP)可以看到,集群创建了两个副本,以及两个service。
- kustomize创建
kubectl apply -k kustomize/mogdb-cluster/期望输出:
mogdbcluster.mogdb.enmotech.io/cluster1 created检查集群Pod是否成功创建
kubectl get pods -n mogdb-operator-system期望输出:
NAME READY STATUS RESTARTS AGE
cluster1-m4sr3 2/2 Running 0 7m13s
cluster1-nebx9 2/2 Running 0 8m8s
mogdb-operator-controller-manager-fcf875446-gmmqp 1/1 Running 0 9m9s至此,集群相关Pod都已成功创建。
卸载
注意:
卸载之前,请确保系统所有的MogDB集群已经删除完整,否则无法卸载。
删除MogDB 集群
kubectl delete -k kustomize/mogdb-cluster/期望输出:
mogdbcluster.mogdb.enmotech.io "cluster1" deleted检查所有Pod是否成功删除
kubectl get pods -n mogdb-operator-system期望输出:
NAME READY STATUS RESTARTS AGE
mogdb-operator-controller-manager-fcf875446-gmmqp 1/1 Running 0 13m可以看到集群所有Pod已成功删除。
注意: 系统中有可能存在多个集群,请按照此步骤一一删除。
卸载 Mogha
kubectl delete -k kustomize/mogha期望输出:
namespace "mogha" deleted
serviceaccount "mogdb-ha" deleted
clusterrole.rbac.authorization.k8s.io "mogdb-ha-role" deleted
clusterrolebinding.rbac.authorization.k8s.io "mogdb-ha-rolebinding" deleted
secret "huawei-registry" deleted
service "mogdb-ha" deleted
deployment.apps "mogdb-ha" deleted检查相关Pod是否成功删除
kubectl get pods -n mogha期望输出:
No resources found in mogha namespace.当所有相关Pod成功删除后,继续下一步。
卸载监控
kubectl delete -k kustomize/mogdb-monitor期望输出:
namespace "monitor" deleted
serviceaccount "kube-state-metrics" deleted
serviceaccount "prometheus" deleted
clusterrole.rbac.authorization.k8s.io "kube-state-metrics" deleted
clusterrole.rbac.authorization.k8s.io "prometheus" deleted
clusterrolebinding.rbac.authorization.k8s.io "kube-state-metrics" deleted
clusterrolebinding.rbac.authorization.k8s.io "prometheus" deleted
configmap "alert-config" deleted
configmap "prometheus-config" deleted
service "grafana" deleted
service "kube-state-metrics" deleted
service "node-exporter" deleted
service "prometheus" deleted
deployment.apps "grafana" deleted
deployment.apps "kube-state-metrics" deleted
deployment.apps "prometheus" deleted
daemonset.apps "node-exporter" deleted检查所有相关Pod是否成功删除
kubectl get pods -n monitor期望输出:
No resources found in monitor namespace.当所有相关Pod成功删除后,继续下一步。
卸载 MogDB Apiserver
kubectl delete -k kustomize/mogdb-apiserver/期望输出:
namespace "mogdb-operator-system" deleted
serviceaccount "mogdb-apiserver" deleted
clusterrole.rbac.authorization.k8s.io "mgo-cluster-role" deleted
clusterrolebinding.rbac.authorization.k8s.io "mgo-cluster-role" deleted
secret "mgorole-admin" deleted
secret "mgouser-admin" deleted
service "mogdb-apiserver" deleted
deployment.apps "mogdb-apiserver" deleted检查相关Pod是否成功删除
kubectl get pods -n mogdb-operator-system期望输出:
NAME READY STATUS RESTARTS AGE
mogdb-operator-controller-manager-fcf875446-2d525 1/1 Running 0 28s当所有相关Pod成功删除后,继续下一步。
卸载 MogDB Operator
kubectl delete -k kustomize/mogdb-operator/default期望输出:
namespace "mogdb-operator-system" deleted
customresourcedefinition.apiextensions.k8s.io "mogdbbackups.mogdb.enmotech.io" deleted
customresourcedefinition.apiextensions.k8s.io "mogdbclusters.mogdb.enmotech.io" deleted
serviceaccount "mogdb-operator-controller-manager" deleted
role.rbac.authorization.k8s.io "mogdb-operator-leader-election-role" deleted
clusterrole.rbac.authorization.k8s.io "mogdb-operator-manager-role" deleted
rolebinding.rbac.authorization.k8s.io "mogdb-operator-leader-election-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "mogdb-operator-manager-rolebinding" deleted
configmap "mogdb-operator-global-config" deleted
configmap "mogdb-operator-manager-config" deleted
secret "mogdb-operator-huawei-registry" deleted
deployment.apps "mogdb-operator-controller-manager" deleted检查所有相关Pod是否成功删除
kubectl get pods -n mogdb-operator-system期望输出:
No resources found in mogdb-operator-system namespace.至此,所有的组件卸载完毕。