Kubernetes集群服务优雅关机

平台停服

业务服务停止,基础组件不停止,保证无数据写入数据库,达到数据一致性,在此期间平台环境业务对外停服;

将对应deploy副本数均配置为0即可,deploy副本数配置为0的命令如下

kubectl -n <namespace> get deploy | awk 'NR>1{print$1}'  | xargs kubectl -n <namespace> scale deployment --replicas=0 

数据目录备份

查询并进入每个数据挂载卷的pv数据目录
以下演示git-server数据目录备份

  1. 查询:
kubectl get pod -o wide -A |grep <pod>
  1. 进入pod所在的node节点
  2. 进入pv挂载目录
    这是里/data/storage/local-path-provisioner/
    image.png
  3. 打包备份
tar -zcvf 2021-0629-pvc-dbf5e77c-75b5-4353-b53b-9648ff587081_coding_data-git-server-2.tar.gz pvc-dbf5e77c-75b5-4353-b53b-9648ff587081_coding_data-git-server-2 

多个pod就多个操作

数据库备份

以下演示备份mysql,pod名为mysql-0
登录进入服务器的master节点,并进入mysql数据库的任意一个实例:

kubectl exec -it -n <namespace> mysql-0 bash

执行mysqldump备份命令,输入mysql的root密码 :(账号密码询问部署人员)

mysqldump -u 用户名 –p 密码 --all-databases > /tmp/codingbackdb.sql

将备份文件拷贝到宿主机并妥善保存,

kubectl -n <namespace> cp <namespace>/mysql-0:tmp/backdb.sql /tmp/codingbackdb.sql

中间件停服

为保证断电引起的不必要麻烦,建议在数据备份完之后,将中间件也停止。
将对应sts副本数均配置为0,sts副本数配置为0的命令如下

kubectl -n <namespace> get sts | awk 'NR>1{print$1}' | xargs kubectl -n <namespace> scale sts --replicas=0 

集群关机

【重要】确保在集群关机时,平台停服、pv目录、数据库均已备份!!!
优先关闭数据库所在节点,如有多个数据库节点,以此关闭mysql-2/mysql-1/mysql-0。

systemctl stop docker
shutdown -h now

私有云关机

腾讯云管中心

  1. 进入私有云管理后台
  2. 验证后台资源使用情况为0
  3. 进入系统设置
  4. 数据中心管理
  5. 勾选数据中心
  6. 一键关闭

VMware vSphere

  1. 进入VCSA
  2. 主机和集群
  3. 选择主机
  4. 验证主机均已关机
  5. 右键->电源->关闭

RackShift

  1. 登录裸金属管理平台
  2. 选中要关闭的物理主机
  3. 操作->关机

IPMI(不推荐)

  1. 记录私有云中每台物理机地址
  2. 登录HDM/iDRAC
  3. 右上角电源->关机
# k8s 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×