K8s监控与升级、ETCD备份与恢复举例说明

 更新时间:2026年06月09日 09:05:12   作者:鹤落晴春  
Kubernetes是一个开源容器编排平台,用于自动化部署、扩展和管理容器化应用,这篇文章主要介绍了K8s监控与升级、ETCD备份与恢复的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

1.举例说明K8s中都有哪些常规的维护管理操作。

(1)kubectl get nodes:查看所有节点的状态(是否就绪、版本、资源情况)。当发现集群卡顿或Pod无法调度时,先使用这条命令查看节点是否正常。

(2)kubectl get pods -A:查看所有命名空间下的Pod运行状态。在服务访问失败时,使用这条命令快速排查是否有Pod在重启、崩溃或未就绪。

(3)kubectl drain <节点名>:驱逐节点上的Pod到其他节点,并标记该节点为不可调度。在升级前使用。

(4)kubectl uncordon <节点名>:让节点恢复接收新Pod。在维护做完后,使用这条命令重新启用节点。

(5)kubectl cordon <节点名>:标记节点为不可调度,但不会赶走现有Pod。暂时不想让新任务上来,但已在运行的不要动。

(6)kubectl top nodes:查看节点实时的CPU和内存使用量(使用这条命令的前提是已经安装metrics-server了插件)。当发现集群整体变慢,可以使用这条命令查看哪个节点负载最高。

(7)kubectl top pods:查看Pod的实时资源使用情况。

(8)kubectl scale deployment <名字> --replicas=5:把某个Deployment的副本数调整到5个。使用这条命令根据流量动态扩缩容。

(9)kubectl logs <Pod名>:查看Pod里容器的日志。当服务报错,使用这条命令查看应用打印了什么错误。

(10)kubectl exec -it <Pod名> -- /bin/sh:交互式进到Pod里面执行命令。想测试网络、查看配置文件、手动运行脚本时使用这条命令。

(11)kubectl describe pod <Pod名>:展示Pod的详细信息(例如:事件、状态、挂载点、节点位置等)。当发现Pod处于Pending、CrashLoopBackOff等异常状态时,使用这条命令查看描述里的Events字段找原因。

(12)kubectl get deployment -A -o yaml > all-deployments.yaml:把所有Deployment导出成YAML文件。在修改Deployment之前,可以使用这条命令导出当前配置作为参考备份。

(13)kubectl apply -f xxx.yaml:应用一个资源配置文件。当修改了某个Deployment或Service的YAML后,使用这条命令让它生效。

2. 如何升级K8s到新的版本?

使用 kubeadm 部署的集群,升级过程先操作控制平面节点,再操作工作节点,步骤如下:

(1)首先在控制平面节点上运行 kubeadm upgrade plan 查看可升级版本和检查兼容性,确认后执行 kubeadm upgrade apply v1.32.0(替换为目标版本)升级控制平面组件

(2)接着更新 kubelet 配置,运行 kubeadm upgrade node config --kubelet-version v1.32.0,然后重启 kubeletsystemctl restart kubelet

(3)控制平面升级完成后,转到每个工作节点,依次执行 kubectl drain <node-name> 排空节点上的 Pod,再在节点上运行 kubeadm upgrade node 升级节点配置更新并重启 kubelet,最后执行 kubectl uncordon <node-name> 让节点恢复接收 Pod

3.在升级过程中应该注意哪些事项?

(1)不能跳大版本:一次升一个小版本(比如从 1.31 升到 1.32),不要跨多个版本跳。

(2)先升控制平面,后升工作节点:一定要先把控制平面(主节点)升完,再去升工作节点。

(3)升级前排空节点:升级工作节点前务必把上面的 Pod 赶走,避免服务中断。

(4)备份 etcd:升级前一定要备份 etcd,万一失败能快速恢复。

(5)无法降级:升上去就下不来了,升级前确认好目标版本。

(6)先测后升:最好在测试集群先跑一遍,确认应用兼容新版再动生产环境。

4. 解释ETCD及其备份和恢复的过程。

etcd是一个分布式、高可用的键值存储系统,在Kubernetes集群中扮演着核心数据库的角色。它存储了整个集群的所有配置信息、状态数据和元数据,包括Pod、Service、Deployment、ConfigMap等资源的定义以及它们的当前状态。可以说,etcd是K8s集群的“大脑”和“数据核心”——没有etcd,集群将无法恢复任何状态信息。

以下是一个备份过程可以使用的模板:

ETCDCTL_API=3 etcdctl snapshot save <备份文件路径> \
  --endpoints=<etcd集群地址> \
  --cacert=<CA证书路径> \
  --cert=<客户端证书路径> \
  --key=<客户端密钥路径>

下面是一个具体的例子:

ETCDCTL_API=3 etcdctl snapshot save /var/lib/etcd-backup/snapshot.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

恢复etcd数据使用etcdctl snapshot restore命令:

ETCDCTL_API=3 etcdctl snapshot restore <备份文件路径> \
  --data-dir=<新的数据目录> \
  --initial-cluster=<初始集群参数> \
  --initial-advertise-peer-urls=<广告对等URL> \
  --name=<成员名称>

总结 

到此这篇关于K8s监控与升级、ETCD备份与恢复的文章就介绍到这了,更多相关K8s监控与升级、ETCD备份与恢复内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IoT 边缘集群Kubernetes Events告警通知进一步配置详解

    IoT 边缘集群Kubernetes Events告警通知进一步配置详解

    这篇文章主要为大家介绍了IoT 边缘集群Kubernetes Events告警通知进一步配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • containerd2.x配置Harbor私有仓库实践

    containerd2.x配置Harbor私有仓库实践

    文章主要介绍了两种配置containerd2.x连接Harbor私有仓库的方法,推荐使用certs.d方式,无需修改config.toml,更简洁,同时,对于特定环境下的HTTPS + 自签名证书问题,给出了通过hosts.toml配置和修改config.toml配置两种方案,并强调了不同环境下的注意事项和配置验证方法
    2026-05-05
  • k8s Pod默认调度策略详解

    k8s Pod默认调度策略详解

    Kubernetes的Pod默认调度由kube-scheduler负责,通过过滤和打分两个阶段,将Pod公平、高效地分配到集群节点上,默认调度策略包括资源检查、节点标签、污点容忍、亲和性等规则,默认调度器实现了负载均衡和高可用性,但在特定场景下可能需要自定义调度策略
    2026-02-02
  • k8s Prometheus的manifests清单部署实践

    k8s Prometheus的manifests清单部署实践

    本教程详细介绍了如何在Kubernetes集群中部署Prometheus和Grafana监控系统,并融合了文件传输、解压、编译及Kubctl命令使用等强调时区设置等步骤,适合初学者学习参考
    2026-05-05
  • K8S Operator部署及自定义详解

    K8S Operator部署及自定义详解

    这篇文章主要为大家介绍了K8S Operator部署及自定义详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • K8S加入新的node节点实现方式

    K8S加入新的node节点实现方式

    文章主要介绍了基于kubeadm安装的k8s集群加入新的节点的过程,包括初始化节点、安装Docker和相关组件、配置镜像下载加速器、添加软件源、安装组件、上传和解压镜像、加入新的节点并查看节点状态等步骤
    2026-04-04
  • K8S 使用EFK日志的统一管理(详细步骤)

    K8S 使用EFK日志的统一管理(详细步骤)

    在Kubernetes中,EFK是一种常见的日志统一管理方案,EFK堆栈允许你收集、存储、搜素、分析和可视化容器应用程序的日志,下面是如何在Kubernetes中使用EFK实现日志统一管理的详细步骤,感兴趣的朋友一起看看吧
    2025-01-01
  • k8s的架构组成操作代码

    k8s的架构组成操作代码

    k8s是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务,通过k8s能够进行应用的自动化部署和扩缩容,这篇文章主要介绍了k8s的架构组成,需要的朋友可以参考下
    2024-05-05
  • Linux安装Kubernetes(k8s)超详细教程

    Linux安装Kubernetes(k8s)超详细教程

    Kubernetes是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务,通过Kubernetes能够进行应用的自动化部署和扩缩容,这篇文章主要给大家介绍了关于Linux安装Kubernetes(k8s)的相关资料,需要的朋友可以参考下
    2024-07-07
  • 通过kubernetes部署nginx+php网站环境过程

    通过kubernetes部署nginx+php网站环境过程

    本文详细介绍了如何在Kubernetes中部署Nginx+PHP网站环境,包括环境准备、部署步骤、Service、ConfigMap、Ingress等配置,并提供了具体的YAML文件示例和命令,通过这些步骤,可以实现高可用、可扩展的Web服务
    2026-01-01

最新评论