当前位置: 首页 > news >正文

Kubernetes集群维护—备份恢复与升级

Etcd数据库备份与恢复

需要先安装etcd备份工具
yum install etcd -y
按不同安装方式执行不同备份与恢复

kubeadm部署方式:

备份:
ETCDCTL_API=3 etcdctl  snapshot save snap.db  --endpoints=https://127.0.0.1:2379  --cacert=/etc/kubernetes/pki/etcd/ca.crt  --cert=/etc/kubernetes/pki/etcd/server.crt  --key=/etc/kubernetes/pki/etcd/server.key
恢复:
1、先暂停kube-apiserver和etcd容器 mv /etc/kubernetes/manifests /etc/kubernetes/manifests.bak mv /var/lib/etcd/ /var/lib/etcd.bak 
2、恢复 ETCDCTL_API=3 etcdctl  snapshot restore snap.db  --data-dir=/var/lib/etcd 
3、启动kube-apiserver和etcd容器 mv /etc/kubernetes/manifests.bak /etc/kubernetes/manifests

二进制部署方式:

备份:
ETCDCTL_API=3 etcdctl \ snapshot save snap.db \ --endpoints=https://192.168.31.71:2379 \ --cacert=/opt/etcd/ssl/ca.pem \ --cert=/opt/etcd/ssl/server.pem \ --key=/opt/etcd/ssl/server-key.pem
恢复:
1、先暂停kube-apiserver和etcd systemctl stop kube-apiserver systemctl stop etcd mv /var/lib/etcd/default.etcd /var/lib/etcd/default.etcd.bak 
2、在每个节点上恢复 ETCDCTL_API=3 etcdctl snapshot restore snap.db \ --name etcd-1 \ --initial-cluster="etcd-1=https://192.168.31.71:2380,etcd2=https://192.168.31.72:2380,etcd-3=https://192.168.31.73:2380" \ --initial-cluster-token=etcd-cluster \ --initial-advertise-peer-urls=https://192.168.31.71:2380 \ --data-dir=/var/lib/etcd/default.etcd 
3、启动kube-apiserver和etcd systemctl start kube-apiserver systemctl start etcd

K8s集群版本升级

注意事项:

• 升级前必须备份所有组件及数据,例如etcd
• 千万不要跨多个小版本进行升级,例如从1.16升级到1.19
• 在测试环境经过多次演练,实操,才能上生产环境

升级管理节点:

1、查找最新版本号
yum list --showduplicates kubeadm
2、升级kubeadm
yum install -y kubeadm-1.23.0-0
3、驱逐node上的pod,且不可调度
kubectl drain k8s-master --ignore-daemonsets
4、检查集群是否可以升级,并获取可以升级的版本(升级计划)
kubeadm upgrade plan
5、执行升级(按照升级计划给出的版本作为参考进行升级)
kubeadm upgrade apply v1.23.0
6、升级kubelet和kubectl
yum install -y kubelet-1.23.0-0 kubectl-1.23.0-0
7、重启kubelet
systemctl daemon-reload
systemctl restart kubelet
8、取消不可调度,重新上线
kubectl uncordon k8s-master
升级工作节点:
1、升级kubeadm
yum install -y kubeadm-1.23.0-0
2、驱逐node上的pod,且不可调度
kubectl drain k8s-node1 --ignore-daemonsets
3、升级kubelet配置
kubeadm upgrade node
4、升级kubelet和kubectl
yum install -y kubelet-1.23.0-0 kubectl-1.23.0-0
5、重启kubelet
systemctl daemon-reload
systemctl restart kubelet
6、取消不可调度,重新上线
kubectl uncordon k8s-node1
K8s集群节点正确下线流程
维护某个节点或者删除节点, 正确流程如下:
1、获取节点列表
kubectl get node
2、驱逐节点上的Pod并设置不可调度(cordon)
kubectl drain <node_name> --ignore-daemonsets
3、 设置可调度或者移除节点
kubectl uncordon <node_name>
kubectl delete node <node_name>

K8s集群故障排查

应急处理流程

排查思路

K8s 故障排查: 案例1

故障现象:
kubectl get node节点处于NotReady
排查思路:
查看kubelet和docker服务是否正常
分析kubelet日志

K8s 故障排查: 案例2

故障现象:
Pod运行不正常
排查思路:
• 根据Pod状态假设:
https://kubernetes.io/zh/docs/concepts/workloads/pods/pod-lifecycle/
• 查看资源详情:
kubectl describe TYPE/NAME
• 查看容器日志:
kubectl logs TYPE/NAME [-c CONTAINER]

K8s 故障排查: 案例3

故障现象:
互联网用户无法访问应用(Ingress或者Service无法访问)
排查思路:
• Pod正常工作吗?
• Service是否关联Pod?
• Service指定target-port端口是否正确?
• 如果用名称访问, DNS是否正常工作?
• kube-proxy正常工作吗? 是否正常写iptables规则?
• CNI网络插件是否正常工作?
http://www.lryc.cn/news/11447.html

相关文章:

  • 前端开发常用案例(二)
  • 基于springboot+vue的儿科保健计划免疫系统
  • 1.两数之和
  • 字符串匹配 - 模式预处理:KMP 算法(Knuth-Morris-Pratt)
  • 工程师手册:电源设计中的电容选用规则
  • 【安全开发】专栏文章汇总
  • 视频监控流程图4
  • 「JVM 编译优化」Java 语法糖(泛型、自动装箱/拆箱、条件编译)
  • Linux下的进程控制
  • QT 文件监视系统QFileSystemWatcher监视目录的改变directoryChanged和监视文件的改变fileChanged
  • Typescript基础知识(类型断言、类型别名、字符串字面量类型、枚举、交叉类型)
  • Windows系统扩充C盘空间系列方法总结
  • 华为OD机试 - 跳格子(Python)
  • Java配置文件的值注入
  • SAP 订单BOM与销售BOM的区别
  • 支付宝支付详细流程
  • TCP 的演化史-fast retransmit/recovery
  • CSS基础选择器,你认识多少?
  • ChatGPT入门案例|商务智能对话客服(三)
  • Matlab 最小二乘法拟合平面(SVD)
  • AtCoder Regular Contest 126 D题题解
  • Android R WiFi热点流程浅析
  • 【C++进阶】二、多态详解(总)
  • node-sass@4.14.1 包含风险, 如何升级依赖至 dart-sass
  • DataWhale 大数据处理技术组队学习task2
  • 一文读懂select、poll、epoll的用法
  • 《C陷阱与缺陷》----词法“陷阱”
  • 千锋教育+计算机四级网络-计算机网络学习-04
  • 蓝桥杯算法训练合集十四 1.P08052.P07053.同余方程4.P08015.ascii应用
  • 判断字符串中的字符的类型isdecimal();isalpha();isdigit();isalnum()