目录

从零开始的云计算生活第五十六天,临深履薄,kubernetes模块之etcd备份恢复和集群升级指南

从零开始的云计算生活——第五十六天,临深履薄,kubernetes模块之etcd备份恢复和集群升级指南


一.故事背景

本次将结束k8s的所有内容的学习

二. etcd备份恢复

1. 集群管理命令

etcdctl是一个命令行的客户端,它提供了一些命令,可以方便我们在对服务进行测试或者手动修改数据库内容。etcdctl命令基本用法如下所示:

etcdctl [global options] command [command options] [args…]

具体的命令选项参数可以通过 etcdctl command –help来获取相关帮助

环境变量

获得etcd数据库的访问url

kubectl -n kube-system get pods etcd-k8s-master -o yaml  | grep -A10 “containers:”

https://i-blog.csdnimg.cn/direct/2bf959e83e274a9ab6e5033fbb21f4a0.png

如果遇到使用了TLS加密的集群,通常每条指令都需要指定证书路径和etcd节点地址,可以把相关命令行参数添加在环境变量中,在**~/.bashrc**添加以下内容:

HOST_1=https://192.168.71.128:2379
ENDPOINTS=${HOST_1}
# 如果需要使用原生命令,在命令开头加一个\ 例如:\etcdctl command
alias etcdctl="etcdctl --cert /etc/kubernetes/pki/etcd/peer.crt --key
 /etc/kubernetes/pki/etcd/peer.key --endpoints=https://192.168.158.6:2379  
--insecure-skip-tls-verify"

https://i-blog.csdnimg.cn/direct/a8ac9cda2923403f89ae396c516e6d1d.png

source ~/.bashrc

查看etcd版本

etcdctl version

https://i-blog.csdnimg.cn/direct/0498d2d4e98f42e4b3add86f53fd3ed5.png

查看etcd集群节点信息

etcdctl  member list -w table

https://i-blog.csdnimg.cn/direct/c2aa66343fd848ee9c15d48500a7ae2d.png

查看集群健康状态

etcdctl endpoint status -w table

https://i-blog.csdnimg.cn/direct/10f587114bd04fe8be1fac172522b6e2.png

####表格内容解析

    ENDPOINT:节点的地址,这里是 https://192.168.158.6:2379。这表示该节点的网络地址和端口。
    ID:节点的唯一标识符,这里是 6dc5c9ae772d8898。
    VERSION:节点的版本号,这里是 3.5.9。
    DB SIZE:数据库大小,这里是 9.1 MB。
    IS LEADER:是否为集群的领导者节点。true 表示该节点是领导者。
    IS LEARNER:是否为学习者节点。false 表示该节点不是学习者节点。
    RAFT TERM:Raft协议中的任期编号,这里是 4。Raft协议用于分布式系统的共识机制,任期编号用于区分不同的选举周期。
    RAFT INDEX:Raft协议中的日志索引,这里是 30622。它表示当前日志的最新位置。
    RAFT APPLIED INDEX:Raft协议中已应用的日志索引,这里是 30622。它表示已提交并应用到状态机的日志位置。
    ERRORS:错误信息,这里为空,表示没有错误

查看告警事件

如果内部出现问题,会触发告警,可以通过命令查看告警引起原因,命令如下所示:

etcdctl alarm [flags]

常用的子命令主要有两个:

查看所有告警

etcdctl alarm list

解除所有告警

etcdctl alarm disarm

以下是 etcdctl 命令和选项的中文翻译:

命令:

  • alarm disarm 停止所有告警
  • alarm list 列出所有告警
  • auth disable 禁用身份验证
  • auth enable 启用身份验证
  • auth status 返回身份验证状态
  • check datascale 检查给定服务器端点上不同工作负载的数据存储内存使用情况
  • check perf 检查 etcd 集群的性能
  • compaction 压缩 etcd 中的事件历史记录
  • defrag 对具有给定端点的 etcd 成员进行存储碎片整理
  • del 删除指定的键或键范围 [key, range_end)
  • elect 观察并参与领导者选举
  • endpoint hashkv 打印 --endpoints 中每个端点的 KV 历史记录哈希
  • endpoint health 检查 --endpoints 标志中指定的端点的健康状态
  • endpoint status 打印 --endpoints 标志中指定的端点的状态
  • get 获取键或键范围
  • help 任何命令的帮助
  • lease grant 创建租约
  • lease keep-alive 保持租约活跃(续租)
  • lease list 列出所有活跃的租约
  • lease revoke 撤销租约
  • lease timetolive 获取租约信息
  • lock 获取命名锁
  • make-mirror 在目标 etcd 集群创建镜像
  • member add 向集群中添加成员
  • member list 列出集群中的所有成员
  • member promote 将集群中的非投票成员提升为投票成员
  • member remove 从集群中移除成员
  • member update 更新集群中的成员
  • move-leader 将领导权转移到另一个 etcd 集群成员
  • put 将给定的键放入存储中
  • role add 添加新角色
  • role delete 删除角色
  • role get 获取角色的详细信息
  • role grant-permission 给角色授予键
  • role list 列出所有角色
  • role revoke-permission 从角色中撤销键
  • snapshot restore 将 etcd 成员快照恢复到 etcd 目录
  • snapshot save 将 etcd 节点后端快照存储到给定文件
  • snapshot status [已弃用] 获取给定文件的后端快照状态
  • txn 事务处理所有请求
  • user add 添加新用户
  • user delete 删除用户
  • user get 获取用户的详细信息
  • user grant-role 给用户授予角色
  • user list 列出所有用户
  • user passwd 更改用户密码
  • user revoke-role 从用户中撤销角色
  • version 打印 etcdctl 的版本
  • watch 监视键或前缀上的事件流

选项:

  • --cacert="" 使用此 CA 包验证启用了 TLS 的安全服务器的证书
  • --cert="" 使用此 TLS 证书文件标识安全客户端
  • --command-timeout=5s 短命令的超时时间(不包括拨号超时)
  • --debug[=false] 启用客户端调试日志记录
  • --dial-timeout=2s 客户端连接的拨号超时时间
  • -d, --discovery-srv="" 查询描述集群端点的 SRV 记录的域名
  • --discovery-srv-name="" 使用 DNS 发现时查询的服务名称
  • --endpoints=[127.0.0.1:2379] gRPC 端点
  • -h, --help[=false] etcdctl 的帮助
  • --hex[=false] 将字节字符串打印为十六进制编码的字符串
  • --insecure-discovery[=true] 接受描述集群端点的不安全 SRV 记录
  • --insecure-skip-tls-verify[=false] 跳过服务器证书验证(注意:此选项仅应在测试目的下启用)
  • --insecure-transport[=true] 禁用客户端连接的传输安全
  • --keepalive-time=2s 客户端连接的保活时间
  • --keepalive-timeout=6s 客户端连接的保活超时时间
  • --key="" 使用此 TLS 密钥文件标识安全客户端
  • --password="" 身份验证的密码(如果使用此选项,–user 选项不应包含密码)
  • --user="" 身份验证的用户名[:密码](如果未提供密码,将提示输入)
  • -w, --write-out="simple" 设置输出格式(字段,JSON,protobuf,简单,表格)

数据库操作命令

增加(put)

添加一个键值,基本用法如下所示:

etcdctl put [options] [flags]

常用参数如下所示:

参数功能描述
–prev-kv输出修改前的键值

注意事项:

  • 其中value接受从stdin的输入内容
  • 如果value是以横线-开始,将会被视为flag,如果不希望出现这种情况,可以使用两个横线代替–
  • 若键已经存在,则进行更新并覆盖原有值,若不存在,则进行添加

https://i-blog.csdnimg.cn/direct/6a554a6207734d568a0fc606e7ad65e0.png

查询(get)

查询键值,基本用法如下所示:

etcdctl get [options] [range_end] [flags]

常用参数如下所示:

参数功能描述
–hex以十六进制形式输出
–limit number设置输出结果的最大值
–prefix根据prefix进行匹配key
–order对输出结果进行排序,ASCEND 或 DESCEND
–sort-by按给定字段排序,CREATE, KEY, MODIFY, VALUE, VERSION
–print-value-only仅输出value值
–from-key按byte进行比较,获取大于等于指定key的结果
–keys-only仅获取keys

示例

获取键值

https://i-blog.csdnimg.cn/direct/2704a74aefb148d1adb5f052070ee1a5.png

只获取值

https://i-blog.csdnimg.cn/direct/31d036a930174c5ba06ec9e9c6546f71.png

批量取从foo1到foo3的值,不包括foo3

https://i-blog.csdnimg.cn/direct/8aba1a50a0544d60a2438e56e084bbea.png

批量获取前缀为foo的值

https://i-blog.csdnimg.cn/direct/89ec3f0f39d94070bba1618280546649.png

批量获取符合前缀的前两个值

https://i-blog.csdnimg.cn/direct/b9cc9743be1d456ba32902b506aee8fd.png

批量获取前缀为foo的值,并排序

https://i-blog.csdnimg.cn/direct/b296d864d6cd46239e13e633caa4f40e.png

删除(del)

删除键值,基本用法如下所示:

etcdctl del [options] [range_end] [flags]

常用参数如下所示:

参数功能描述
–prefix根据prefix进行匹配删除
–prev-kv输出删除的键值
–from-key按byte进行比较,删除大于等于指定key的结果

示例

删除name的键值

https://i-blog.csdnimg.cn/direct/f928cdb87837446a9d7f79f309d4e135.png

删除从foo1到foo3且不包含foo3的键值

https://i-blog.csdnimg.cn/direct/1b28169109d648bba01e8c850e5d6657.png

删除前缀为foo的所有键值

https://i-blog.csdnimg.cn/direct/b66940b1f28b44018d65fa661a2d9724.png

更新(put覆盖)

若键已经存在,则进行更新并覆盖原有值,若不存在,则进行添加。

查询键历史记录查询

etcd在每次键值变更时,都会记录变更信息,便于我们查看键变更记录

监听命令

watch是监听键或前缀发生改变的事件流, 主要用法如下所示:

etcdctl watch [options] [key or prefix] [range_end] [–] [exec-command arg1 arg2 …] [flags]

示例如下所示:

对某个key监听操作,当key1发生改变时,会返回最新值

etcdctl watch name

监听key前缀

etcdctl watch name –prefix

监听到改变后执行相关操作

etcdctl watch name –  etcdctl get age

# 启动监听命令
[root@tiaoban etcd]# etcdctl watch foo

#另一个控制台执行新增命令
[root@tiaoban ~]# etcdctl put foo bar
OK

# 观察控制台监听输出
[root@tiaoban etcd]# etcdctl watch foo
PUT
foo
bar

#另一个控制台执行更新命令
[root@tiaoban ~]# etcdctl put foo bar123
OK

# 观察控制台监听输出
[root@tiaoban etcd]# etcdctl watch foo
PUT
foo
bar
PUT
foo
bar123

#另一个控制台执行删除命令
[root@tiaoban ~]# etcdctl del foo
1

# 观察控制台监听输出
[root@tiaoban etcd]# etcdctl watch foo
PUT
foo
bar
PUT
foo
bar123
DELETE
foo
同时监听多个键
# 监听前缀为foo的键
[root@tiaoban etcd]# etcdctl watch --prefix foo
# 另一个控制台执行操作
[root@tiaoban ~]# etcdctl put foo1 bar1
OK
[root@tiaoban ~]# etcdctl put foo2 bar2
OK
[root@tiaoban ~]# etcdctl del foo1
1
# 观察控制台输出
[root@tiaoban etcd]# etcdctl watch --prefix foo
PUT
foo1
bar1
PUT
foo2
bar2
DELETE
foo1


# 监听指定的多个键
[root@tiaoban etcd]# etcdctl watch -i
watch name
watch location

# 另一个控制台执行操作
[root@tiaoban ~]# etcdctl put name cuiliang
OK
[root@tiaoban ~]# etcdctl del name
1
[root@tiaoban ~]# etcdctl put location beijing
OK
# 观察控制台输出
[root@tiaoban etcd]# etcdctl watch -i
watch name
watch location
PUT
name
cuiliang
DELETE
name

PUT
location
beijing

租约命令

租约具有生命周期,需要为租约授予一个TTL(time to live),将租约绑定到一个key上,则key的生命周期与租约一致,可续租,可撤销租约,类似于redis为键设置过期时间。其主要用法如下所示:

etcdctl lease [flags]

添加租约

主要用法如下所示:

etcdctl lease grant [flags]

设置60秒后过期时间

[root@tiaoban etcd]# etcdctl lease grant 60
lease 6e1e86f4c6512a2b granted with TTL(60s)

把foo和租约绑定,设置成60秒后过期

[root@tiaoban etcd]# etcdctl put –lease=6e1e86f4c6512a29 foo bar
OK

租约期内查询键值

[root@tiaoban etcd]# etcdctl get foo
foo
bar

租约期外查询键值

[root@tiaoban etcd]# etcdctl get foo
返回为空

查看租约

查看租约信息,以便续租或查看租约是否仍然存在或已过期。 查看租约详情主要用法如下所示:

etcdctl lease timetolive [options] [flags]

# 添加一个50秒的租约
[root@tiaoban etcd]# etcdctl lease grant 50
lease 6e1e86f4c6512a32 granted with TTL(50s)
# 将name键绑定到6e1e86f4c6512a32租约上
[root@tiaoban etcd]# etcdctl put --lease=6e1e86f4c6512a32 name cuiliang
OK
# 查看所有租约列表
[root@tiaoban etcd]# etcdctl lease list
found 1 leases
6e1e86f4c6512a32
# 查看租约详情,remaining(6s) 剩余有效时间6秒;--keys 获取租约绑定的 key
[root@tiaoban etcd]# etcdctl lease timetolive --keys 6e1e86f4c6512a32
lease 6e1e86f4c6512a32 granted with TTL(50s), remaining(6s), attached keys([name])
租约续约

通过刷新 TTL 值来保持租约的有效,使其不会过期。 主要用法如下所示:

etcdctl lease keep-alive [options] [flags]

# 设置60秒后过期租约
[root@tiaoban etcd]# etcdctl lease grant 60
lease 6e1e86f4c6512a36 granted with TTL(60s)
# 把name和租约绑定,设置成 60 秒后过期
[root@tiaoban etcd]# etcdctl put --lease=6e1e86f4c6512a36 name cuiliang
OK
# 自动定时执行续约,续约成功后每次租约为60秒
[root@tiaoban etcd]# etcdctl lease keep-alive 6e1e86f4c6512a36
lease 6e1e86f4c6512a36 keepalived with TTL(60)
lease 6e1e86f4c6512a36 keepalived with TTL(60)
lease 6e1e86f4c6512a36 keepalived with TTL(60)
……
删除租约

通过租约 ID 撤销租约,撤销租约将删除其所有绑定的 key。 主要用法如下所示:

etcdctl lease revoke [flags]

# 设置600秒后过期租约
[root@tiaoban etcd]# etcdctl lease grant 600
lease 6e1e86f4c6512a39 granted with TTL(600s)
# 把foo和租约绑定,600秒后过期
[root@tiaoban etcd]# etcdctl put --lease=6e1e86f4c6512a39 foo bar
OK
# 查看租约详情
[root@tiaoban etcd]# etcdctl lease timetolive --keys 6e1e86f4c6512a39
lease 6e1e86f4c6512a39 granted with TTL(600s), remaining(556s), attached keys([foo])
# 删除租约
[root@tiaoban etcd]# etcdctl lease revoke 6e1e86f4c6512a39
lease 6e1e86f4c6512a39 revoked
# 查看租约详情
[root@tiaoban etcd]# etcdctl lease timetolive --keys 6e1e86f4c6512a39
lease 6e1e86f4c6512a39 already expired
# 获取键值
[root@tiaoban etcd]# etcdctl get foo
返回为空
多key同一租约

一个租约支持绑定多个 key

# 设置60秒后过期的租约
[root@tiaoban etcd]# etcdctl lease grant 60
lease 6e1e86f4c6512a3e granted with TTL(60s)
# foo1与租约绑定
[root@tiaoban etcd]# etcdctl put --lease=6e1e86f4c6512a3e foo1 bar1
OK
# foo2与租约绑定
[root@tiaoban etcd]# etcdctl put --lease=6e1e86f4c6512a3e foo2 bar2
OK
# 查看租约详情
[root@tiaoban etcd]# etcdctl lease timetolive --keys 6e1e86f4c6512a3e
lease 6e1e86f4c6512a3e granted with TTL(60s), remaining(14s), 
attached keys([foo1 foo2])

租约过期后,所有 key 值都会被删除,因此:

  • 当租约只绑定了一个 key 时,想删除这个 key,最好的办法是撤销它的租约,而不是直接删除这个 key。
  • 当租约没有绑定key时,应主动把它撤销掉,单纯删除 key 后,续约操作持续进行,会造成内存泄露。

直接删除key演示:

# 设置租约并绑定 zoo1
[root@tiaoban etcd]# etcdctl lease grant 60
lease 6e1e86f4c6512a43 granted with TTL(60s)
[root@tiaoban etcd]# etcdctl --lease=6e1e86f4c6512a43 put zoo1 val1
OK
# 续约
[root@tiaoban etcd]# etcdctl lease keep-alive 6e1e86f4c6512a43
lease 6e1e86f4c6512a43 keepalived with TTL(60)

# 此时在另一个控制台执行删除key操作:
[root@tiaoban ~]# etcdctl del zoo1
1
# 单纯删除 key 后,续约操作持续进行,会造成内存泄露
[root@tiaoban etcd]# etcdctl lease keep-alive 6e1e86f4c6512a43
lease 6e1e86f4c6512a43 keepalived with TTL(60)
lease 6e1e86f4c6512a43 keepalived with TTL(60)
lease 6e1e86f4c6512a43 keepalived with TTL(60)
...

撤销key的租约演示:

# 设置租约并绑定 zoo1
[root@tiaoban etcd]# etcdctl lease grant 50
lease 32698142c52a1717 granted with TTL(50s)
[root@tiaoban etcd]# etcdctl --lease=32698142c52a1717 put zoo1 val1
OK

# 续约
[root@tiaoban etcd]# etcdctl lease keep-alive 32698142c52a1717
lease 32698142c52a1717 keepalived with TTL(50)
lease 32698142c52a1717 keepalived with TTL(50)

# 另一个控制台执行:etcdctl lease revoke 32698142c52a1717

# 续约撤销并退出
lease 32698142c52a1717 expired or revoked.
[root@tiaoban etcd]# etcdctl get zoo1
# 返回空

备份恢复命令

主要用于管理节点的快照,其主要用法如下所示:

etcdctl snapshot <subcommand> [flags]
生成快照

其主要用法如下所示:

etcdctl snapshot save <filename> [flags]

示例如下所示:

etcdctl snapshot save etcd-snapshot.db
查看快照

其主要用法如下所示:

etcdctl snapshot status <filename> [flags]

示例如下所示:

etcdctl snapshot status etcd-snapshot.db -w table
恢复快照

其主要用法如下所示:

etcdctl snapshot restore <filename> [options] [flags]

三. Kubernetes集群升级

1.集群升级过程辅助命令

(1)查看节点上运行的pod。

https://i-blog.csdnimg.cn/direct/8dad54fa7eca4467b5d5d747762cd157.png

(2)查看集群配置文件。

https://i-blog.csdnimg.cn/direct/16d5f79f04a8449aacf2ca43957e6a6c.png

(3)查看当前集群节点。

https://i-blog.csdnimg.cn/direct/5909aaf2f8c343468ecf1dccce9e6576.png

2. 升级master节点

2.1、升级kubeadm

更新包管理器

yum update

查看可用版本

apt-cache madison kubeadm
yum list | grep kubeadm

更新

yum update -y kubeadm

验证版本

kubeadm version

修改仓库源版本(节点与master都改)

https://i-blog.csdnimg.cn/direct/552964fbf20d4406be21941d834fdee3.pnghttps://i-blog.csdnimg.cn/direct/6aea5768025349729d7a11d77de761fa.png

https://i-blog.csdnimg.cn/direct/889a050b066b4e368e9ddf347123bdd7.png

2.2、验证升级计划

(1)检查可升级到哪些版本,并验证你当前的集群是否可升级。

https://i-blog.csdnimg.cn/direct/bb94521f62a643ae86ad77494f6cde7a.png

2.3、master节点升级

(1)升级到 1.29.15版本,此命令仅升级master节点(control plane)。

kubeadm upgrade apply v1.29.15

https://i-blog.csdnimg.cn/direct/e0855361135b41028171191c26c8c0db.png

https://i-blog.csdnimg.cn/direct/78007a631cab4516ae80f5b0c640be9a.png

(2) 腾空节点,即将节点上除守护进程之外的其他进程调度到其他节点,同时将开启调度保护。

kubectl drain k8s-master –ignore-daemonsets

https://i-blog.csdnimg.cn/direct/c51c82262658414d80e25c5f9b46959e.png

(3)升级kubelet与kubectl组件。

yum update -y kubelet

https://i-blog.csdnimg.cn/direct/b6168274faba496badd08c0778f9b5c6.png

(4)重启 kubelet。

systemctl daemon-reload
systemctl restart kubelet

(5)解除调度保护。

kubectl uncordon k8s-master

https://i-blog.csdnimg.cn/direct/ddbdf91517b94d0c86f76b45ba2217a8.png

3. 升级node节点

(1)升级节点kubelet 配置。

kubeadm upgrade node

https://i-blog.csdnimg.cn/direct/09c1ae74f7724821823416a274d64994.png

(2)腾空节点,同时开启调度保护,此命令请在master节点操作

kubectl drain k8s-node1 –ignore-daemonsets

若有临时存贮pod使用该命令删除

kubectl drain k8s-node1 \
  --ignore-daemonsets \
  --force \
  --delete-emptydir-data

https://i-blog.csdnimg.cn/direct/d8b8f28ac3054ed0a1ecb3c217988bfb.png

(3)升级kubelet与kubectl组件。

yum update -y kubelet

https://i-blog.csdnimg.cn/direct/62e88fb104a14dc09e5b330281696e43.png

(4)重启 kubelet。

systemctl daemon-reload
systemctl restart kubelet

https://i-blog.csdnimg.cn/direct/450e6a0e88ba4ad297bbb5edf6cbaa20.png

(5)解除调度保护,master节点上执行该命令。

kubectl uncordon k8s-node1

kubectl uncordon k8s-node2

https://i-blog.csdnimg.cn/direct/4056cd5904ac435ea916f2f6b708b7a8.png

4. 总结

每个版本的升级都不一样,所以要根据版本进行适当调整,不作为万能指导。 升级过程:

  1. 升级master组件。
  2. 升级worker节点组件,调度保护、排空节点、worker节点组件升级、解除保护。

Kubernetes集群的升级可以分为以下几个步骤:

  1. 备份数据。在升级之前,需要备份Kubernetes集群的数据,包括访问控制、配置文件、数据卷等。

  2. 选择升级方式。Kubernetes集群的升级方式可以分为两种:滚动升级和强制替换。滚动升级是指逐个升级每个节点,直到所有节点都升级完成。强制替换是指一次性替换所有节点,将旧节点直接替换为新节点。

  3. 准备新版本。Kubernetes升级需要准备新版本的二进制文件和镜像文件。可以从Kubernetes官方网站下载最新版本的二进制文件和镜像文件,并上传到集群中的节点上。

  4. 升级Master节点。首先需要升级Master节点,使用新版本的二进制文件替换旧版本的二进制文件,并启动新版本的Kubernetes API Server、ControllerKubernetes是一个快速发展的开源项目,为了保持其功能和安全性,集群的升级是必须的。

    • 查看升级文档:首先需要查看官方的升级文档,了解升级过程中需要注意的事项。
    • 备份数据:在升级前需要备份当前的数据,以防升级过程中的意外情况导致数据丢失。
    • 准备好备份:在升级前需要确保备份的可用性,以便在需要时能够 Manager和Scheduler。
  5. 升级Node节点。接下来需要升级Node节点。首先需要将节点上的Kubelet和kube-proxy服务停止,使用新版本的二进制文件替换旧版本的二进制文件,然后启动新版本的Kubelet和kube-proxy服务。

  6. 验证升级结果。升级完成后,需要验证恢复数据。

    • 升级前的测试:可以在测试环境中进行升级测试,以确保升级过程和升级后的集群正常运行。
    • 升级Node:首先需要升级每个Node节点中的Kubernetes组件,包括kubelet和kube-proxy等。
    • 升级Control Plane:然后需要升级Control Plane中的Kubernetes组件,包括kube-apiserver、kube-controller-manager和kube-scheduler等。
    • 升级Kubernetes对象:升级完Control Plane后,需要升级Kubernetes对象,如Deployment集群是否正常运行。可以使用kubectl命令查看集群的状态和资源对象的状态,确保所有的服务都能够正常访问。
  7. 回滚升级。如果升级失败或出现问题,可以回滚到之前的版本。回滚的过程与升级的过程相同,只需要使用旧版本的二进制文件和镜像文件即可。

Kubernetes集群的升级需要仔细规划和准备,并按照一定的步骤进行操作。只有在备份数据、选择适当的升级方式、准备新版本、升级Master节点、升级Node节点、验证升级结果等步骤都完成后,才能确保集群的升级成功。、StatefulSet等。

升级后的检查:

  • 验证集群状态:升级后需要验证集群的状态,包括Node节点的状态、Pod的状态、Service的状态等。
  • 验证应用程序:升级后需要验证应用程序的运行状态,确保应用程序正常运行。
  • 观察日志:如果发现问题,可以通过查看日志来排查问题原因。

Kubernetes集群升级是一个需要谨慎处理的过程,需要充分准备和测试,以确保升级过程的顺利和集群的稳定。在升级过程中,需要注意备份数据和备份的可用性,升级顺序和升级后的检查等问题,以确保集群的正常运行和应用程序的稳定性。

四.总结

        本文总结了Kubernetes集群管理的核心内容,重点介绍了etcd数据库的备份恢复操作和集群升级流程。在etcd部分,详细讲解了etcdctl命令行工具的使用方法,包括集群管理、数据操作、租约管理、快照备份等核心功能。在集群升级部分,系统阐述了master节点和worker节点的升级步骤,包括组件更新、节点排空、版本验证等关键操作。文章强调升级过程需要谨慎执行,建议提前备份数据并在测试环境验证升级方案,确保生产环境升级的平稳性和可靠性。这些内容为Kubernetes集群的日常运维提供了实用的技术指导。