在离线环境k8s集群上部署数据库集群(Elasticsearch,mongoDB)

前言

从零开始搭建内网高可用k8s集群+ceph分布式存储系统+prometheus监控
接上文,先前记录了如何在离线环境搭建高可用k8s集群,现在同样在离线环境部署高可用数据库,主要使用kubeDB工具进行部署,现在记录搭建过程。

机器准备

服务器 ip 系统 角色
master1 172.16.140.100 centos7 k8s-master节点1,ceph-node,ceph-osd,ceph-mds
master2 172.16.140.101 centos7 k8s-master节点2,ceph-node,ceph-osd,ceph-mds
node1 172.16.140.102 centos7 k8s-node节点1,ceph-node,ceph-osd,ceph-mds
node2 172.16.140.103 centos7 k8s-node节点2,ceph-node,ceph-osd,ceph-mds,ceph-mgr,yum本地源服务器
test——外网服务器,下软件包用 192.168.2.190 centos7

安装helm

root@test:

  • 下载helm最新版
# 下载helm安装包
curl -o https://get.helm.sh/helm-v3.0.2-linux-amd64.tar.gz
# 安装helm
tar -zxvf helm-v3.0.2-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
# 检查是否安装完成
helm version

root@master1:

  • 拷贝helm安装包至root根目录
  • 安装helm
tar -zxvf helm-v3.0.2-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
# 检查是否安装完成
helm version

安装kubeDB

root@test:

  • 添加helm仓库,安装kubeDB
# 添加helm仓库
helm repo add appscode https://charts.appscode.com/stable/
helm repo update
# 下载kubedb安装包
helm pull appscode/kubedb
helm pull appscode/kubedb-catalog
# 安装kubedb
helm install kubedb --name-template kubedb-operator --version v0.13.0-rc.0 --namespace kube-system
helm install kubedb-catalog --name-template kubedb-catalog --version v0.13.0-rc.0 --namespace kube-system
# 查看是否安装完成
kubectl get pods --all-namespaces -l app=kubedb
kubectl get crd -l app=kubedb
  • 安装kubedbCLI工具
# 下载kubedbCLI()
wget -O kubedb https://github.com/kubedb/cli/releases/download/v0.13.0-rc.0/kubedb-linux-amd64
# 安装kubedbCLI
chmod +x kubedb && cp kubedb /usr/local/bin/
  • 保存相应docker镜像
docker save kubedb/operator:v0.13.0-rc.0 -o kubedb-operator.tar

root@node1,root@node2

  • 拷贝kubedb-operator.tar至/root文件夹下
  • 加载镜像
docker load -i kubedb-operator.tar

root@master1:

  • 拷贝kubedbCLI文件至root文件夹下
  • 安装kubedbCLI工具
chmod +x kubedb && mv kubedb /usr/local/bin/
  • 拷贝kubedb,kubedb-catalog文件夹至/root文件夹下
  • 安装kubeDB
helm install kubedb --name-template kubedb-operator --version v0.13.0-rc.0 --namespace kube-system
helm install kubedb-catalog --name-template kubedb-catalog --version v0.13.0-rc.0 --namespace kube-system
# 查看是否安装完成
kubectl get pods --all-namespaces -l app=kubedb
kubectl get crd -l app=kubedb

部署mongodb集群(shard+backup)

root@test:

  • 下载部署相关镜像并打包
# 下载相关镜像
docker pull kubedb/elasticsearch:6.3-v1
docker pull kubedb/postgres:9.6-v3
docker pull kubedb/busybox:latest
docker pull kubedb/mysql:5.7.25
# 打包
docker save kubedb/elasticsearch:6.3-v1 -o elasticsearch.tar
docker save kubedb/postgres:9.6-v3 -o postgres.tar
docker save kubedb/busybox:latest -o busybox.tar
docker save kubedb/mysql:5.7.25 -o mysql.tar

root@node1,root@node2

  • 拷贝相关镜像至/root文件夹下
  • 导入镜像
docker load -i elasticsearch.tar
docker load -i postgres.tar
docker load -i busybox.tar
docker load -i mysql.tar

root@master1

  • 生成部署文件
# 创建相应namespace
kubectl create ns mongo
cat << EOF > yaml/database/mongo.yaml
apiVersion: kubedb.com/v1alpha1
kind: MongoDB
metadata:
  name: mongo-sh-cluster
  namespace: mongo
spec:
  version: 3.6-v3
  shardTopology:
    configServer:
      replicas: 2
      storage:
        resources:
          requests:
            storage: 1Gi
        storageClassName: rbd
    mongos:
      replicas: 2
      strategy:
        type: RollingUpdate
    shard:
      replicas: 2
      shards: 2
      storage:
        resources:
          requests:
            storage: 1Gi
        storageClassName: standard
EOF
  • 应用部署数据库
kubectl apply -f yaml/database/mongo.yaml

搭建elasticsearch数据库集群

root@master1

  • 生成部署文件
# 创建相应namespace
kubectl create ns elasticsearch
cat << EOF > yaml/database/elasticsearch.yaml
apiVersion: kubedb.com/v1alpha1
kind: Elasticsearch
metadata:
  name: multi-node-es
  namespace: elasticsearch
spec:
  version: "6.3-v1"
  replicas: 3
  storageType: Durable
  storage:
    storageClassName: "standard"
    accessModes:
    - ReadWriteOnce
    resources:
      requests:
        storage: 1Gi
EOF
  • 应用部署数据库
kubectl apply -f yaml/database/elasticsearch.yaml
  • 至此,数据库搭建基本完成

你可能感兴趣的:(环境搭建)