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




