V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wtfedc
V2EX  ›  Kubernetes

半吊子如何操作 k8s 升级

  •  
  •   wtfedc · 2023-06-20 11:31:41 +08:00 · 4289 次点击
    这是一个创建于 520 天前的主题,其中的信息可能已经有所发展或是发生改变。

    集群在 20 个节点以内,k8s 版本已经落后好多个版本了(八九个),近期证书会过期,看更换证书的流程也挺麻烦的,想着要不一块把 k8s 升级了。鉴于运维不在了,我头有点大。

    之前尝试过上云,感觉太不灵活了,踩了几个坑就停下来了。

    如果升级的话,是用 kubeadm upgrade 一步步升级,还是重新开 20 个机器,装上最新版 k8s ,把服务都重新部署一遍呢。

    我们跑的服务晚上停一阵也没关系。

    请大家给点建议,或者跨 N 多版本升级,容易出现什么坑,提点一下

    第 1 条附言  ·  2023-06-20 14:39:43 +08:00
    最后一声得,还得发扬风格,还是只更新证书好了,各位成功把我升级的想法劝退了[抱拳]
    44 条回复    2023-07-14 13:58:23 +08:00
    maichael
        1
    maichael  
       2023-06-20 11:40:58 +08:00
    1. 不出问题,没有新需求不要升级
    2. 不要原地升级,新开机器部署新版本测试完全后逐步迁移
    seers
        2
    seers  
       2023-06-20 11:49:24 +08:00 via Android
    开三台新的部署一遍跑起来了再把流量导过去,没必要停啊
    wtfedc
        3
    wtfedc  
    OP
       2023-06-20 11:50:56 +08:00
    楼上的朋友说的有三分道理,[赞]
    boatrain1111
        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/
    perfectlife
        5
    perfectlife  
       2023-06-20 13:04:07 +08:00
    说句实话 建议能不升级就不升级了,升级过程万一出啥幺蛾子,然后就是不同版本 k8s ,api 还不一样,有可能现在用的 api,某个版本废弃了,再然后就是 api server 证书更新 比升级简单多了
    morphyhu
        6
    morphyhu  
       2023-06-20 13:21:59 +08:00
    升级的目的是什么?现有的版本满足不了需求?还是为了升级而升级?
    BeautifulSoap
        7
    BeautifulSoap  
       2023-06-20 13:30:24 +08:00 via Android   ❤️ 2
    不是专家的话乱升级 k8s 会变得不幸
    chenPiMeiHaoChi
        8
    chenPiMeiHaoChi  
       2023-06-20 13:36:27 +08:00
    两三年前我也遇到过和你一样的问题,我当时选了升级。再给我次机会我必选证书延期。
    wtfedc
        9
    wtfedc  
    OP
       2023-06-20 13:44:54 +08:00
    @boatrain1111 淦,也太恐怖了
    NGXDLK
        10
    NGXDLK  
       2023-06-20 14:40:28 +08:00
    @chenPiMeiHaoChi 哈哈,跑路没
    runinhard
        11
    runinhard  
       2023-06-20 15:09:57 +08:00 via iPhone
    如果非要升,重新部署好一点
    McreeWu
        12
    McreeWu  
       2023-06-20 15:14:03 +08:00
    同半吊子,能跑就别升级,尤其是你不是运维的情况下,出了问题自己背锅的,从简升级证书即可。
    Marinaaaa
        13
    Marinaaaa  
       2023-06-20 15:30:39 +08:00
    能跑就行。

    k8s 跟人 有一个能跑就行
    goodryb
        14
    goodryb  
       2023-06-20 15:34:23 +08:00
    非必要不变更、非必要不升级、非必要不重启
    chronos
        15
    chronos  
       2023-06-20 15:37:46 +08:00
    别随便升级,这种大环境操作还是先去开几台机器验证一下再做后续处理。K8S 升级影响还是挺大的,API 变化,旧版本某些用 Docker 的还要改一下 CRI runtime 。有条件的话还是开新的集群把服务迁过去再切流量比较好。
    wtfedc
        16
    wtfedc  
    OP
       2023-06-20 15:42:01 +08:00   ❤️ 1
    @chronos 目前 CRI 用的还是 docker ,新版本用 containerd ,这确实是个问题
    99999999999
        17
    99999999999  
       2023-06-20 15:53:05 +08:00
    跑路留给下一个人,我也是好多不想动了
    Nnq
        18
    Nnq  
       2023-06-20 16:12:42 +08:00
    如果节点版本都相同的话,可以从一个简单的节点开始搞
    Trient
        19
    Trient  
       2023-06-20 16:13:23 +08:00
    别升!别升!别升!
    没有新需求涉及到 k8s 新版本特性要求什么的就不要去升级!
    换个证书还能麻烦到哪里去,老老实实手动换!
    Evovil
        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/
    Evovil
        21
    Evovil  
       2023-06-20 16:18:54 +08:00
    api 更新修改删除会涉及很多,CRD ,ingress , 之类的
    c2const
        22
    c2const  
       2023-06-20 16:21:29 +08:00
    看到"乱升级 k8s 会变得不幸" :(
    笑出声了 :)
    c2const
        23
    c2const  
       2023-06-20 16:22:11 +08:00
    确实别乱升级,风险很大.
    paxnil
        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 ,不是默认的。)
    bboysoulcn
        25
    bboysoulcn  
       2023-06-20 16:53:39 +08:00
    部署的时候全部使用 gitops 去部署,如果是使用 argocd 的话,那就新加一个集群,然后在新集群中部署所有的应用,然后把本地的 dns 改成新集群的 ip ,然后测试验证,没问题的话就切流量
    Achilless
        26
    Achilless  
       2023-06-20 17:42:35 +08:00
    我们现在就是 1.15 版本,几乎没有升级想法,想想就头疼,能跑就行哈哈哈
    BinaryDH
        27
    BinaryDH  
       2023-06-20 18:26:33 +08:00
    半吊子?全吊子都不敢随便升级,你真的是心大啊。
    chenPiMeiHaoChi
        28
    chenPiMeiHaoChi  
       2023-06-20 18:51:49 +08:00
    @NGXDLK 后来换公司了,不过不是因为这个,哈哈。
    johnnyNg
        29
    johnnyNg  
       2023-06-20 20:02:15 +08:00
    自己部署的 k8s 还是公有云的 k8s ,自己部署的建议别升级了,像上面说的一样,每个版本,api path ,参数都可能有变化,公有云的可以咨询之后升级
    E1n
        30
    E1n  
       2023-06-20 22:14:38 +08:00
    我们公司最旧的版本还是 1.10 ,18 年部署到现在稳如老狗:)二期自建跟华为 CCE 都是 1.19 版本意思 CRI 还不用 containerd
    mooyo
        31
    mooyo  
       2023-06-20 22:19:45 +08:00
    我们实践过几次升级,最稳妥的办法是开个新集群,两个集群互为备份相互升级。
    jigege2019
        32
    jigege2019  
       2023-06-21 00:11:30 +08:00 via iPhone
    从 1.16 一路升级到 1.22 没遇到什么问题
    levelworm
        33
    levelworm  
       2023-06-21 02:37:04 +08:00
    最靠谱(也比较麻烦)的是新建然后全挪过去。原地升级最怕的是出问题无法回滚。
    ExplodingFKL
        34
    ExplodingFKL  
       2023-06-21 09:05:01 +08:00
    不敢升级,甚至为 kubernetes 打补丁让其默认生成 100 年证书

    https://imgur.com/xIu63z4
    raycheung
        35
    raycheung  
       2023-06-21 09:11:36 +08:00
    只要还在"又不是不能用的状态,以及必须的强需求",坚决不升级,不然很可能变成跑路之旅[手动狗头]
    raycheung
        36
    raycheung  
       2023-06-21 09:12:35 +08:00
    @ExplodingFKL #34 老哥可真狠,直接肝 100 年,6666
    tudou1514
        37
    tudou1514  
       2023-06-21 11:05:20 +08:00
    k8s 不能跨版本升级,比如 1.18 直接升级 1.20 。如果要原地升级,kubeadm 升级很简单的。只需要谨慎,一个版本一个版本挨着升级,最好是有当时部署的 init 文件。证书会直接跟随升级,有效期也会重置。跨版本多话,直接新建集群。
    autumnhlf01
        38
    autumnhlf01  
       2023-06-21 11:15:10 +08:00
    请教下各位公司一般通过什么方式来安装 k8s ,二进制或者还是其他?
    manning
        39
    manning  
       2023-06-21 11:52:36 +08:00
    看阁下的发型,不像是半吊子
    wtfedc
        40
    wtfedc  
    OP
       2023-06-21 13:40:49 +08:00
    @manning 阁下好眼力,在下就是 20 岁的高圾工程师
    zedpass
        41
    zedpass  
       2023-06-21 18:07:21 +08:00
    @autumnhlf01 云上的直接买云厂商的云容器服务,本地环境的使用 kubesphere 管理,也是用 kubesphere 家的 kubekey 安装的
    autumnhlf01
        42
    autumnhlf01  
       2023-06-25 10:53:48 +08:00
    @zedpass 我还以为都是手动自己在服务器上不借助工具搞的呢
    vhwwls
        43
    vhwwls  
       2023-06-28 17:18:48 +08:00
    我从 1.15 升级到 1.18 用的是直接替换二进制文件的办法,出一点小问题但还是自己一点点处理好了,你如果不是专业的运维建议还是别搞了。
    smartdoc647
        44
    smartdoc647  
       2023-07-14 13:58:23 +08:00
    k8s 升级没那么简单,搞不好饭碗不饱,只跑业务的容器还好,大数据上云的升级代价很高,我们 2000 多台机器的大数据 k8s 集群,升级前后花了几个月
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2773 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:12 · PVG 23:12 · LAX 07:12 · JFK 10:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.