【Kubernetes】(十九)监控与升级

目录

[一、集群资源监控核心:Metrics Server](#一、集群资源监控核心:Metrics Server)

[1. 组件核心价值](#1. 组件核心价值)

[2. 快速部署与基础使用](#2. 快速部署与基础使用)

[二、Kubeadm 集群控制平面标准化升级](#二、Kubeadm 集群控制平面标准化升级)

[1. 检索可升级版本](#1. 检索可升级版本)

[2. 节点前置维护隔离](#2. 节点前置维护隔离)

[3. 分步升级集群核心组件](#3. 分步升级集群核心组件)

[① 升级 kubeadm 工具](#① 升级 kubeadm 工具)

[② 升级预检查与控制平面更新](#② 升级预检查与控制平面更新)

[③ 同步升级 kubelet 与 kubectl](#③ 同步升级 kubelet 与 kubectl)

[4. 恢复集群正常运行状态](#4. 恢复集群正常运行状态)

三、课后问答题


一、集群资源监控核心:Metrics Server

1. 组件核心价值

在 Kubernetes 集群运维场景中,实时感知节点与 Pod 的 CPU、内存资源负载,是性能调优、故障排查、资源合理调度的关键前提。Metrics Server 是 K8s 官方轻量化指标采集组件,依托 metrics.k8s.io 标准接口,集中采集、汇总集群节点与容器的资源使用率数据。作为基础监控底座,它为 kubectl top 资源查看命令、HPA 容器弹性伸缩等核心功能提供数据支撑,是集群轻量化运维必备基础组件。

2. 快速部署与基础使用

通过官方配置清单一键完成部署,快速启用集群指标采集能力:

复制代码
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.7.0/components.yaml

部署生效后,可通过简单命令直观获取集群资源负载状态:

复制代码
# 查看集群所有节点 CPU、内存实时占用
kubectl top nodes

# 全命名空间查看所有 Pod 资源消耗情况
kubectl top pod -A

二、Kubeadm 集群控制平面标准化升级

Kubernetes 持续迭代更新,集群版本平滑升级是生产运维的重要工作。业界统一遵循先升级控制平面、后升级工作节点 的规范流程。本文以集群从 v1.30.0 迭代至稳定版 v1.30.3 为例,完整演示安全、规范的升级流程。

1. 检索可升级版本

查询本地可更新的 kubeadm 版本,确认目标升级版本号,合理制定升级方案:

复制代码
apt list kubeadm -a

2. 节点前置维护隔离

升级前对控制平面节点进行隔离保护,避免升级过程中业务异常调度与数据扰动:

复制代码
# 封锁节点,禁止新 Pod 调度至当前节点
kubectl cordon cka-master

# 驱逐节点内业务 Pod,忽略 DaemonSet 常驻组件
kubectl drain cka-master --delete-emptydir-data --ignore-daemonsets

3. 分步升级集群核心组件

① 升级 kubeadm 工具
复制代码
apt-mark unhold kubeadm
apt install kubeadm=1.30.3-1.1 -y
apt-mark hold kubeadm
② 升级预检查与控制平面更新
复制代码
# 预览升级方案,自动校验环境兼容性、依赖完整性
kubeadm upgrade plan

# 正式执行控制平面版本升级
kubeadm upgrade apply v1.30.3 --etcd-upgrade=false
③ 同步升级 kubelet 与 kubectl

保证集群组件版本统一,避免版本不一致引发运行异常:

复制代码
apt-mark unhold kubelet kubectl
apt install kubelet=1.30.3-1.1 kubectl=1.30.3-1.1 -y
apt-mark hold kubelet kubectl

4. 恢复集群正常运行状态

复制代码
# 重载系统配置,重启 kubelet 服务生效新版本
systemctl daemon-reload
systemctl restart kubelet.service

# 解除节点封锁,恢复正常调度能力
kubectl uncordon cka-master

# 查验全部节点状态与集群版本,确认升级成功
kubectl get nodes

三、课后问答题

Q:举例说明 K8s 中都有哪些常规的维护管理操作?

A:K8s 日常运维常用维护操作包含:使用 kubectl describe pod 查看 Pod 详细信息与事件记录,快速定位运行异常;通过 kubectl logs 抓取容器日志,排查业务故障;使用 kubectl top 实时查看节点与 Pod 资源占用;通过 cordon 封锁节点、drain 迁移节点负载,实现节点停机维护与资源迁移。

Q:如何升级 K8s 到新的版本?升级过程中有哪些注意事项?

A:标准升级流程:

  1. 查询系统可用版本,确定目标升级版本;
  2. 封锁控制平面节点,驱逐节点内业务负载;
  3. 依次完成 kubeadm、kubelet、kubectl 核心组件版本升级;
  4. 执行升级预检,正式完成控制平面升级;
  5. 重启集群服务,解除节点限制,核验集群整体运行状态。

注意事项:升级前仔细阅读官方版本文档,规避版本兼容问题;集群需采用静态控制平面或外部 etcd 架构,保障升级稳定性;提前做好集群配置、数据与业务状态备份,防止升级故障造成数据丢失与业务中断。

相关推荐
运维开发故事2 天前
基于 Arthas 的多集群在线诊断系统设计与实现
kubernetes
Patrick_Wilson4 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
阿里云云原生4 天前
AI 开发新常态:当 Cursor、Claude、Codex 并行,如何统一管理散落的 Skill 资产?
云原生·ai编程
探索云原生4 天前
K8s 1.36 这个 GA 特性,把 initContainer 拉模型的 hack 干掉了
ai·云原生·kubernetes
云恒要逆袭4 天前
运行你的第一个Docker容器
后端·docker·容器
Java之美4 天前
从edge-trigger到level-trigger,谈谈 Kubernetes controller 的开发范式
云原生
阿里云云原生5 天前
深度解构:当 Append-only 的 SLS 遇上 Update/Delete,是如何实现设计权衡的?
云原生
Java之美5 天前
一次k8s升级引发的DevicePlugin注册失败
云原生·kubernetes
秋播5 天前
nerdctl推送rancher本地镜像到harbor
云原生