Skip to content
SRE运维进阶之路SRE运维进阶之路
github icon
  • kubernetes

    • Kubernetes 学习笔记
      • 集群搭建

        • 使用 ansible 快速搭建 k8s 集群
        • 常见应用安装配置

          • Harbor 安装配置(k8s)
            • Harbor 高可用搭建(docker-compose)
              • Rancher 安装配置
                • Helm 安装配置
                • 容器运行时

                  • k8s 适配 GPU
                    • Kata2 尝试
                    • 存储

                      • Longorn 安装配置
                        • 使用 Rook 快速搭建 Ceph 集群
                        • 服务发现与路由

                          • ingress-nginx 安装配置
                          • 集群网络

                            • CNI
                              • Calico
                              • 监控告警

                                • Prometheus Operator 安装配置
                                • 实用技巧

                                  • 运维手册

                                    • etcd 备份恢复
                                      • velero 备份恢复
                                        • k8s 开启审计日志
                                          • 内核版本升级
                                            • 背景
                                              • 具体操作步骤
                                                • Node节点平滑维护
                                                • 使用 kubeadm 手动更新证书
                                                  • 为 k8s node 配置资源预留
                                                    • 利用LXCFS提升容器资源可见性
                                                    • 最佳实践

                                                      • k8s node 配置资源预留
                                                        • 性能压测指标及方法
                                                          • CPU 绑核
                                                          • 集群排障

                                                            • 如何更新Terminating状态的命名空间
                                                              • 卸载 rancher 导致 node 被清空
                                                                • lvs 健康检查 k8s apiserver
                                                                  • k8s 更改apiserver使用强加密算法
                                                                  • 教程|项目|博客|文章推荐
                                                                    • 附录

                                                                      • 快捷命令

                                                                    内核版本升级

                                                                    author iconClaycalendar icon2022年10月22日category icon
                                                                    • 云原生
                                                                    tag icon
                                                                    • Kubernetes
                                                                    timer icon大约 2 分钟

                                                                    此页内容
                                                                    • 背景
                                                                    • 具体操作步骤
                                                                    • Node节点平滑维护

                                                                    # 内核版本升级

                                                                    # 背景

                                                                    k8s 目前使用的内核 版本为:4.9.220,存在以下bug:

                                                                    • CPU 限流open in new window
                                                                    • https://github.com/fho/docker-samba-loop
                                                                    • moby/moby#5618open in new window
                                                                    • coreos/bugs#254open in new window
                                                                    • 无法支持 calico eBPFopen in new window

                                                                    现升级版本为:kernel-lt 5.4.196

                                                                    # 具体操作步骤

                                                                    wget https://mirrors.nju.edu.cn/elrepo/kernel/el7/x86_64/RPMS/kernel-lt-5.4.196-1.el7.elrepo.x86_64.rpm
                                                                    rpm -ivh kernel-lt-5.4.196-1.el7.elrepo.x86_64.rpm
                                                                    # 校验文件是否生成
                                                                    ls /boot/initramfs-5.4.196-1.el7.elrepo.x86_64.img
                                                                    awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
                                                                    grub2-set-default 'CentOS Linux (5.4.196-1.el7.elrepo.x86_64) 7 (Core)'
                                                                    grub2-editenv list
                                                                    grub2-mkconfig -o /boot/grub2/grub.cfg
                                                                    shutdown -r now
                                                                    
                                                                    1
                                                                    2
                                                                    3
                                                                    4
                                                                    5
                                                                    6
                                                                    7
                                                                    8
                                                                    9

                                                                    ⚠️ 重新生成的 grub.cfg 文件,要看一下,是否是 /boot/efi/EFI/centos/grub.cfg

                                                                    # Node节点平滑维护

                                                                    通常情况下,如果要对K8S集群中的一台Node节点进行平滑维护,如升级或调整配置。正确的操作:

                                                                    • cordon临时从K8S集群隔离出来,标识为SchedulingDisabled不可调度状态。
                                                                    • drain排干该节点上的pod资源到其他node节点上。
                                                                    • 对该节点展开平滑维护操作,如升级或调整配置。
                                                                    • uncordon恢复,重新回到K8S集群,变回可调度状态。

                                                                    同时注意:为了确保drain驱逐pod的时候,容器应用服务不中断,必须满足:

                                                                    • 要驱逐的pod副本数量必须大于1
                                                                    • 要配置"反亲和策略",确保被驱逐的pod被调度到不同的Node节点上
                                                                    • deployment采用滚动更新,设置maxUnavailable为0,maxSurge为1
                                                                    # 禁止调度
                                                                    kubectl cordon node-xxx
                                                                    # 驱逐 pod
                                                                    kubectl drain node-xxx --ignore-daemonsets
                                                                    # 升级完成后,恢复调度
                                                                    kubectl uncordon node-xxx
                                                                    
                                                                    1
                                                                    2
                                                                    3
                                                                    4
                                                                    5
                                                                    6

                                                                    升级问到的问题

                                                                    1)pstore: unknown compression: deflate

                                                                    vimopen in new window /etc/default/grub 在 GRUB_CMDLINE_LINUX 最后添加 mgag200.modeset=0

                                                                    GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet mgag200.modeset=0"
                                                                    
                                                                    1

                                                                    然后重新生成grub

                                                                    grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg 2)rpm -ivh 安装某个包时,文件不全

                                                                    如果安装过程中,安装被中断,要卸载重装,不然安装的一些文件很可能少安装(initramfs)

                                                                    edit icon编辑此页open in new window
                                                                    上次编辑于: 2022/10/22 05:03:44
                                                                    贡献者: clay-wangzhi
                                                                    上一页
                                                                    k8s 开启审计日志
                                                                    下一页
                                                                    使用 kubeadm 手动更新证书
                                                                    备案号:冀ICP备2021007336号
                                                                    Copyright © 2023 Clay