暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase8s部署与k8s集群实践

晚安的星星云 2021-12-23
1060

GBase8s部署与k8s集群实践

##k8s环境准备

    参考 https://www.kubernetes.org.cn/7189.html 这篇文章,以下是总结的步骤

|items | comment |

|-|-|

|Gbase8s|v8.8|

|Docker ce|v19.03.11|

|Kubernetes|v1.18.4|

|master node|192.168.200.131|

|worker node|192.168.200.132|

###配置yum源

    参考阿里云镜像地址 https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11H5XMmb

###关闭虚拟机swap分区

    swapoff -a

    cat /etc/fstab |grep swap

    #/dev/mapper/cl-swap     swap                    swap    defaults        0 0

###配置网络参数

    vim /etc/sysctl.d/99-sysctl.conf

    net.bridge.bridge-nf-call-ip6tables=1

    net.bridge.bridge-nf-call-iptables=1

    net.ipv4.ip_forward=1

    sysctl --system

###安装docker-ce

    参考 https://docs.docker.com/engine/install/centos/

###配置docker仓库加速

    vim /etc/docker/daemon.json

    "registry-mirrors": ["https://jwois9p8.mirror.aliyuncs.com"],

###安装kubectl、kubelet、kubeadm

    yum install -y --nogpgcheck kubelet kubeadm kubectl

    systemctl enable kubelet

###部署集群

集群初始化

    kubeadm init --kubernetes-version=v1.19.0 --apiserver-advertise-address=172.16.3.138 --service-cidr=10.10.0.0/16 --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers

master配置kubelet

    mkdir -p $HOME/.kube

    cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

    chown $(id -u):$(id -g) $HOME/.kube/config

    source <(kubectl completion bash)

安装calico网络控制

    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

worker节点加入集群

    kubeadm join --token=********** 192.168.200.131:6443 --discovery-token-unsafe-skip-ca-verification

###开启master为工作节点(可选)

允许master部署pod

    

    kubectl taint nodes --all node-role.kubernetes.io/master-

关闭master部署pod

    kubectl taint nodes k8s node-role.kubernetes.io/master=true:NoSchedule

##GBase8s部署

###创建configmap,用于gbase8s的配置文件

提前准备allowed.surrogates、onconfig.ol_gbasedbt_1  sqlhosts.ol_gbasedbt_1文件存于conf文件夹

    # ls -l conf/

    -rw-r--r--. 1 root root    13 11月  2 2020 allowed.surrogates

    -rw-r--r--. 1 root root 79021 11月  2 2020 onconfig.ol_gbasedbt_1

    -rw-r--r--. 1 root root    73 11月  2 2020 sqlhosts.ol_gbasedbt_1

###节点创建label

yaml通过节点的label进行部署,因此需要为部署对应节点创建label

    kubectl label nodes worker1 name=worker1

    kubectl label nodes master name=master #可选

    

    # kubectl get node --show-labels

    NAME      STATUS   ROLES    AGE    VERSION   LABELS

    master    Ready    master   24h    v1.16.4   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master,kubernetes.io/os=linux,name=master,node-role.kubernetes.io/master=

    worker1   Ready    <none>   3h3m   v1.16.4   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=worker1,kubernetes.io/os=linux,name=worker1

###节点创建存储路径

创建的目录要和yaml中的hostPath相同

    mkdir /gbase-logs /gbase-data

###节点导入GBase8s.tar镜像

    docker load -I gbase8s.tar

###创建secret

创建的secret名、key要和yaml中的secretKeyRef相同

    kubectl create secret generic gbase8s-secret --from-literal=password=gbasedbt123

###对应yaml示例

    # cat gbase8s.yaml

    apiVersion: v1

    kind: ReplicationController

    metadata:

        name: gbase8s

        labels:

        name: gbase8s

    spec:

        replicas: 1

        selector:

        name: gbase8s

        template:

        metadata:

            labels:

            name: gbase8s

        spec:

            nodeSelector:

            name: "master"

            containers:

            - name: gbase8s

            image: gbase8s:8.8

            securityContext:

                capabilities:

                add: ["SYS_ADMIN"]

            ports:

            - name: onsoctcp

                containerPort: 9088

            - name: drsoctcp

                containerPort: 19088

            env:

            - name: GBASEDBT_PASSWORD

                valueFrom:

                secretKeyRef:

                    name: gbase8s-secret

                    key: password

            - name: ONCONFIG_FILE_NAME

                value: /conf/onconfig.ol_gbasedbt_1

            - name: SQLHOSTS_FILE_NAME

                value: /conf/sqlhosts.ol_gbasedbt_1

            - name: DB_LOCALE

                value: zh_cn.utf8

            - name: CLIENT_LOCALE

                value: zh_cn.utf8

            resources:

                requests:

                cpu: "500m"

                memory: "512Mi"

                limits:

                cpu: "500m"

                memory: "512Mi"

            volumeMounts:

            - name: data

                mountPath: /opt/gbase8s/storage

            - name: logs

                mountPath: /opt/gbase8s/logs

            - name: conf

                mountPath: /conf/onconfig.ol_gbasedbt_1

                subPath: onconfig.ol_gbasedbt_1

            - name: conf

                mountPath: /conf/sqlhosts.ol_gbasedbt_1

                subPath: sqlhosts.ol_gbasedbt_1

            - name: conf

                mountPath: /etc/gbasedbt/allowed.surrogates

                subPath: allowed.surrogates

            volumes:

            - name: data

            persistentVolumeClaim:

                claimName: gbase8s-data

            - name: logs

            persistentVolumeClaim:

                claimName: gbase8s-logs

            - name: conf

            configMap:

                name: gbase8s-conf

                items:

                - key: onconfig.ol_gbasedbt_1

                    path: onconfig.ol_gbasedbt_1

                - key: sqlhosts.ol_gbasedbt_1

                    path: sqlhosts.ol_gbasedbt_1

                - key: allowed.surrogates

                    path: allowed.surrogates

    ---

    apiVersion: v1

    kind: Service

    metadata:

        name: gbase8s

        labels:

        name: gbase8s

    spec:

        type: NodePort

        ports:

        - name: onsoctcp

        port: 9088

        targetPort: 9088

        nodePort: 31111

        - name: drsoctcp

        port: 19088

        targetPort: 19088

        nodePort: 31112

        selector:

        name: gbase8s

    ---

    apiVersion: v1

    kind: PersistentVolumeClaim

    metadata:

        name: gbase8s-data

    spec:

        accessModes:

        - ReadWriteMany

        resources:

        requests:

            storage: 1Gi

        selector:

        matchLabels:

            name: gbase8s-data

    ---

    apiVersion: v1

    kind: PersistentVolumeClaim

    metadata:

        name: gbase8s-logs

    spec:

        accessModes:

        - ReadWriteMany

        resources:

        requests:

            storage: 1Gi

        selector:

        matchLabels:

            name: gbase8s-logs

    ---

    apiVersion: v1

    kind: PersistentVolume

    metadata:

        name: gbase8s-data

        labels:

        name: gbase8s-data

    spec:

        capacity:

        storage: 1Gi

        accessModes:

        - ReadWriteMany

        hostPath:

        path: /gbase-data

    ---

    apiVersion: v1

    kind: PersistentVolume

    metadata:

        name: gbase8s-logs

        labels:

        name: gbase8s-logs

    spec:

        capacity:

        storage: 1Gi

        accessModes:

        - ReadWriteMany

        hostPath:

        path: /gbase-logs

南大通用官网

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论