集群在 20 个节点以内,k8s 版本已经落后好多个版本了(八九个),近期证书会过期,看更换证书的流程也挺麻烦的,想着要不一块把 k8s 升级了。鉴于运维不在了,我头有点大。
之前尝试过上云,感觉太不灵活了,踩了几个坑就停下来了。
如果升级的话,是用 kubeadm upgrade 一步步升级,还是重新开 20 个机器,装上最新版 k8s ,把服务都重新部署一遍呢。
我们跑的服务晚上停一阵也没关系。
请大家给点建议,或者跨 N 多版本升级,容易出现什么坑,提点一下
1
maichael 2023-06-20 11:40:58 +08:00
1. 不出问题,没有新需求不要升级
2. 不要原地升级,新开机器部署新版本测试完全后逐步迁移 |
2
seers 2023-06-20 11:49:24 +08:00 via Android
开三台新的部署一遍跑起来了再把流量导过去,没必要停啊
|
3
wtfedc OP 楼上的朋友说的有三分道理,[赞]
|
4
boatrain1111 2023-06-20 13:00:45 +08:00 2
不要原地升级,尤其是这种落后很多版本的,reddit 就因为升级 k8s 把网站搞宕机了: https://www.reddit.com/r/RedditEng/comments/11xx5o0/you_broke_reddit_the_piday_outage/
|
5
perfectlife 2023-06-20 13:04:07 +08:00
说句实话 建议能不升级就不升级了,升级过程万一出啥幺蛾子,然后就是不同版本 k8s ,api 还不一样,有可能现在用的 api,某个版本废弃了,再然后就是 api server 证书更新 比升级简单多了
|
6
morphyhu 2023-06-20 13:21:59 +08:00
升级的目的是什么?现有的版本满足不了需求?还是为了升级而升级?
|
7
BeautifulSoap 2023-06-20 13:30:24 +08:00 via Android 2
不是专家的话乱升级 k8s 会变得不幸
|
8
chenPiMeiHaoChi 2023-06-20 13:36:27 +08:00
两三年前我也遇到过和你一样的问题,我当时选了升级。再给我次机会我必选证书延期。
|
9
wtfedc OP @boatrain1111 淦,也太恐怖了
|
10
NGXDLK 2023-06-20 14:40:28 +08:00
@chenPiMeiHaoChi 哈哈,跑路没
|
11
runinhard 2023-06-20 15:09:57 +08:00 via iPhone
如果非要升,重新部署好一点
|
12
McreeWu 2023-06-20 15:14:03 +08:00
同半吊子,能跑就别升级,尤其是你不是运维的情况下,出了问题自己背锅的,从简升级证书即可。
|
13
Marinaaaa 2023-06-20 15:30:39 +08:00
能跑就行。
k8s 跟人 有一个能跑就行 |
14
goodryb 2023-06-20 15:34:23 +08:00
非必要不变更、非必要不升级、非必要不重启
|
15
chronos 2023-06-20 15:37:46 +08:00
别随便升级,这种大环境操作还是先去开几台机器验证一下再做后续处理。K8S 升级影响还是挺大的,API 变化,旧版本某些用 Docker 的还要改一下 CRI runtime 。有条件的话还是开新的集群把服务迁过去再切流量比较好。
|
17
99999999999 2023-06-20 15:53:05 +08:00
跑路留给下一个人,我也是好多不想动了
|
18
Nnq 2023-06-20 16:12:42 +08:00
如果节点版本都相同的话,可以从一个简单的节点开始搞
|
19
Trient 2023-06-20 16:13:23 +08:00
别升!别升!别升!
没有新需求涉及到 k8s 新版本特性要求什么的就不要去升级! 换个证书还能麻烦到哪里去,老老实实手动换! |
20
Evovil 2023-06-20 16:17:59 +08:00
建议别升除非你是专业的
除了楼上说的那些问题 k8s 的版本滚动很快, 很多 yaml 的 apiversion 会滚动 删除,或者不兼容 举个例子 https://kubernetes.io/blog/2021/07/14/upcoming-changes-in-kubernetes-1-22/ |
21
Evovil 2023-06-20 16:18:54 +08:00
api 更新修改删除会涉及很多,CRD ,ingress , 之类的
|
22
c2const 2023-06-20 16:21:29 +08:00
看到"乱升级 k8s 会变得不幸" :(
笑出声了 :) |
23
c2const 2023-06-20 16:22:11 +08:00
确实别乱升级,风险很大.
|
24
paxnil 2023-06-20 16:35:33 +08:00 1
不跨版本,逐次升级,每个版本的 Urgent Upgrade Notes 都要仔细看,必然要处理的有 Docker 换 containerd ,主节点的 label 、taint 从 master 改名成 control-plane 。
网络插件、Ingress Controller 、各种 Operator 之类的调用 Kubernetes API 的组件都要关注兼容性,落后七八个版本确实不如重建。 要不要看看我的 Kubernetes 30 年证书生成 Makefile https://github.com/mk8s/mkcerts ( DNS 后缀是 kube.local ,不是默认的。) |
25
bboysoulcn 2023-06-20 16:53:39 +08:00
部署的时候全部使用 gitops 去部署,如果是使用 argocd 的话,那就新加一个集群,然后在新集群中部署所有的应用,然后把本地的 dns 改成新集群的 ip ,然后测试验证,没问题的话就切流量
|
26
Achilless 2023-06-20 17:42:35 +08:00
我们现在就是 1.15 版本,几乎没有升级想法,想想就头疼,能跑就行哈哈哈
|
27
BinaryDH 2023-06-20 18:26:33 +08:00
半吊子?全吊子都不敢随便升级,你真的是心大啊。
|
28
chenPiMeiHaoChi 2023-06-20 18:51:49 +08:00
@NGXDLK 后来换公司了,不过不是因为这个,哈哈。
|
29
johnnyNg 2023-06-20 20:02:15 +08:00
自己部署的 k8s 还是公有云的 k8s ,自己部署的建议别升级了,像上面说的一样,每个版本,api path ,参数都可能有变化,公有云的可以咨询之后升级
|
30
E1n 2023-06-20 22:14:38 +08:00
我们公司最旧的版本还是 1.10 ,18 年部署到现在稳如老狗:)二期自建跟华为 CCE 都是 1.19 版本意思 CRI 还不用 containerd
|
31
mooyo 2023-06-20 22:19:45 +08:00
我们实践过几次升级,最稳妥的办法是开个新集群,两个集群互为备份相互升级。
|
32
jigege2019 2023-06-21 00:11:30 +08:00 via iPhone
从 1.16 一路升级到 1.22 没遇到什么问题
|
33
levelworm 2023-06-21 02:37:04 +08:00
最靠谱(也比较麻烦)的是新建然后全挪过去。原地升级最怕的是出问题无法回滚。
|
34
ExplodingFKL 2023-06-21 09:05:01 +08:00
|
35
raycheung 2023-06-21 09:11:36 +08:00
只要还在"又不是不能用的状态,以及必须的强需求",坚决不升级,不然很可能变成跑路之旅[手动狗头]
|
36
raycheung 2023-06-21 09:12:35 +08:00
@ExplodingFKL #34 老哥可真狠,直接肝 100 年,6666
|
37
tudou1514 2023-06-21 11:05:20 +08:00
k8s 不能跨版本升级,比如 1.18 直接升级 1.20 。如果要原地升级,kubeadm 升级很简单的。只需要谨慎,一个版本一个版本挨着升级,最好是有当时部署的 init 文件。证书会直接跟随升级,有效期也会重置。跨版本多话,直接新建集群。
|
38
autumnhlf01 2023-06-21 11:15:10 +08:00
请教下各位公司一般通过什么方式来安装 k8s ,二进制或者还是其他?
|
39
manning 2023-06-21 11:52:36 +08:00
看阁下的发型,不像是半吊子
|
41
zedpass 2023-06-21 18:07:21 +08:00
@autumnhlf01 云上的直接买云厂商的云容器服务,本地环境的使用 kubesphere 管理,也是用 kubesphere 家的 kubekey 安装的
|
42
autumnhlf01 2023-06-25 10:53:48 +08:00
@zedpass 我还以为都是手动自己在服务器上不借助工具搞的呢
|
43
vhwwls 2023-06-28 17:18:48 +08:00
我从 1.15 升级到 1.18 用的是直接替换二进制文件的办法,出一点小问题但还是自己一点点处理好了,你如果不是专业的运维建议还是别搞了。
|
44
smartdoc647 2023-07-14 13:58:23 +08:00
k8s 升级没那么简单,搞不好饭碗不饱,只跑业务的容器还好,大数据上云的升级代价很高,我们 2000 多台机器的大数据 k8s 集群,升级前后花了几个月
|