文档中心MogDBMogDB StackUqbar

文档:v2.0

支持的版本:

前置条件

  • 安装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-examples

    MogDB 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.

至此,所有的组件卸载完毕。

Copyright © 2011-2024 www.enmotech.com All rights reserved.