码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Kubernetes 笔记 / 任务 / 管理集群 / 用 kubeadm 管理集群 / 配置一个 cgroup 驱动


    目录、参考文献


    配置一个 cgroup 驱动

    需要为 kubeadm 集群配置 kubelet 的 cgroup 驱动,使其与容器运行时的 cgroup 驱动匹配

    前提条件

    需要熟悉 Kubernetes 的容器运行时

    配置容器运行时的 cgroup 驱动

    基于 kubeadm 部署时,更推荐使用 systemd 驱动而不是 cgroupfs 驱动,详见容器运行时
    因为 kubeadm 会将 kubelet 当做 systemd 服务进行管理

    容器运行时中还提供了如何配置不同的容器运行时,使其默认使用 systemd 驱动的细节

    配置 kubelet 的 cgroup 驱动

    kubeadm 支持在执行 kubeadm init 时,传递一个 KubeletConfiguration 结构体
    KubeletConfiguration 包含 cgroupDriver 字段,可用于控制 kubelet 的 cgroup 驱动

    说明:
    在版本 1.22 中,如果用户没在 KubeletConfiguration 中设置 cgroupDriver 字段
    kubeadm init 会设置为默认值 systemd

    一个最小化的示例,其中显式地配置了此字段

    # kubeadm-config.yaml
    kind: ClusterConfiguration
    apiVersion: kubeadm.k8s.io/v1beta3
    kubernetesVersion: v1.21.0
    ---
    kind: KubeletConfiguration
    apiVersion: kubelet.config.k8s.io/v1beta1
    cgroupDriver: systemd
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    将配置文件就传递给 kubeadm 命令

    kubeadm init --config kubeadm-config.yaml
    
    • 1

    说明:
    kubeadm 对集群所有的节点使用相同的 KubeletConfiguration KubeletConfiguration 存放于 kube-system 命名空间下的某个 ConfigMap 对象中

    执行 init、join、upgrade 子命令会使 kubeadm 将 KubeletConfiguration 写入到文件 /var/lib/kubelet/config.yaml 中并把它传递给本地节点的 kubelet

    使用 cgroupfs 驱动

    如要使用 cgroupfs 且要防止 kubeadm upgrade 修改现有配置中 KubeletConfiguration 的 cgroup 驱动
    必须显式声明它的值
    显式声明使用 cgroupfs 后,kubeadm 不再默认使用 systemd 驱动

    修改 kubelet 的 ConfigMap 描述了显式设置该值的方法

    如果希望配置容器运行时使用 cgroupfs 驱动,需要参考所选容器运行时的文档

    迁移到 systemd 驱动

    要将现有 kubeadm 集群的 cgroup 驱动升级为 systemd
    需要执行一个与 kubelet 升级类似的过程
    该过程包含下面两个步骤:

    说明:
    还有一种方法,可以用已配置了 systemd 的新节点替换掉集群中的老节点
    按这种方法,在加入新节点、确保工作负载可以安全迁移到新节点、删除旧节点一系列操作之前
    只需执行下面的第一个步骤

    1)修改 kubelet 的 ConfigMap

    • 运行 kubectl edit cm kubelet-config -n kube-system
    • 修改现有 cgroupDriver 的值,或者新增如下字段:
    cgroupDriver: systemd
    
    • 1

    该字段必须出现在 ConfigMap 的 kubelet: 小节下

    2)更新所有节点的 cgroup 驱动

    对集群中的每个节点:

    • 执行命令 kubectl drain --ignore-daemonsets,以腾空节点
    • 执行命令 systemctl stop kubelet 以停止 kubelet
    • 停止容器运行时
    • 将容器运行时的 cgroup 驱动修改为 systemd
    • 在文件 /var/lib/kubelet/config.yaml 中添加设置 cgroupDriver: systemd
    • 启动容器运行时
    • 执行命令 systemctl start kubelet,以启动 kubelet
    • 执行命令 kubectl uncordon ,以取消节点隔离

    在节点上依次执行上述步骤,确保工作负载有充足的时间被调度到其它节点

    流程完成后,确认所有节点和工作负载均健康


    目录、参考文献

  • 相关阅读:
    软考高项-计算题(3)
    Redis的Java客户端
    SQL学习十九、使用游标
    【解决】mysql本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止
    【期末考试复习】概率论与数理统计(知识点模式 - 复习题1)(内容1)
    网页制作课作业基于HTML+CSS+JavaScript+jquery仿慕课网教学培训网站设计实例 企业网站制作
    使用easyexcel实现Excel数据导入以及数据库数据导出成Excel
    手把手教你开发微信小程序自定义底部导航栏
    【数学建模】单、多因素试验的方差分析(Matlab代码实现)
    关于我在编程里学表白这件事。。。。【python表白代码】
  • 原文地址:https://blog.csdn.net/wdhlzd/article/details/126075953
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号