当前位置:网站首页>Kubernetes 笔记 / 任务 / 管理集群 / 用 kubeadm 管理集群 / 配置一个 cgroup 驱动
Kubernetes 笔记 / 任务 / 管理集群 / 用 kubeadm 管理集群 / 配置一个 cgroup 驱动
2022-08-03 16:00:00 【M菜鸟M】
配置一个 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
将配置文件就传递给 kubeadm
命令
kubeadm init --config kubeadm-config.yaml
说明:
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
该字段必须出现在 ConfigMap 的 kubelet:
小节下
2)更新所有节点的 cgroup 驱动
对集群中的每个节点:
- 执行命令
kubectl drain <node-name> --ignore-daemonsets
,以腾空节点 - 执行命令
systemctl stop kubelet
以停止kubelet
- 停止容器运行时
- 将容器运行时的
cgroup
驱动修改为systemd
- 在文件
/var/lib/kubelet/config.yaml
中添加设置cgroupDriver: systemd
- 启动容器运行时
- 执行命令
systemctl start kubelet
,以启动kubelet
- 执行命令
kubectl uncordon <node-name>
,以取消节点隔离
在节点上依次执行上述步骤,确保工作负载有充足的时间被调度到其它节点
流程完成后,确认所有节点和工作负载均健康
边栏推荐
- 生态剧变,电子签名SaaS模式迎来新突破,网络效应加速到来
- WordPress建站技术笔记
- Introduction to spark learning - 1
- Optimal Power Flow (OPF) for High Voltage Direct Current (HVDC) (Matlab code implementation)
- 参与便有奖,《新程序员》杂志福利来袭!
- 为教育插上数字化的翅膀,网易云信发布「互联网+教育」整体解决方案
- DataGrip数据仓库工具
- Ruoyi Ruoyi framework @DataScope annotation use and some problems encountered
- ECCV 2022 | 基于关系查询的时序动作检测方法
- 建造者模式/生成器模式
猜你喜欢
spark入门学习-2
Awesome!Coroutines are finally here!Thread is about to be in the past
I am doing open source in Didi
机器人开发--Universal Scene Description(USD)
深入浅出Flask PIN
【数据库数据恢复】SqlServer数据库无法读取的数据恢复案例
如何选择合适的损失函数,请看......
[Code Hoof Set Novice Village 600 Questions] Define a function as a macro
Difference and performance comparison between HAL and LL library of STM32
神经网络,凉了?
随机推荐
MarkDown常用代码片段和工具
小熊派——无线联网开发
[QT] Qt project demo: data is displayed on the ui interface, double-click the mouse to display specific information in a pop-up window
49 万奖金等你来拿!第四届实时计算 Flink 挑战赛启动,Beyond Stream Processing!
用友YonSuite与旺店通数据集成对接-技术篇2
WordPress 5.2.3 更新,升级出现请求超时的解决方法
【翻译】关于扩容一个百万级别用户系统的六个课程
13 and OOM simulation
托尔斯泰:生活中只有两种不幸
一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度
常见分布式理论(CAP、BASE)和一致性协议(Gosssip、Raft)
如何启动 NFT 集合
基于DMS的数仓智能运维服务,知多少?
Go Go 简单的很,标准库之 fmt 包的一键入门
AI也有健忘症?英国41岁教授专访:解决灾难性遗忘
Interpretation of the 2021 Cost of Data Breach Report
【899. 有序队列】
Small Tools(4) 整合Seata1.5.2分布式事务
How much do you know about the intelligent operation and maintenance service of data warehouse based on DMS?
QT QT 】 【 to have developed a good program for packaging into a dynamic library