当前位置:网站首页>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>
,以取消节点隔离
在节点上依次执行上述步骤,确保工作负载有充足的时间被调度到其它节点
流程完成后,确认所有节点和工作负载均健康
边栏推荐
- DAYU200 OpenHarmony标准系统HDMI全屏显示
- 实时渲染流程操作复杂吗,如何实现?
- 基于DMS的数仓智能运维服务,知多少?
- To add digital wings to education, NetEase Yunxin released the overall solution of "Internet + Education"
- mysql delete 执行报错:You can‘t specify target table ‘doctor_info‘ for update in FROM clause
- 深度学习GPU最全对比,到底谁才是性价比之王?
- 【Unity入门计划】基本概念(6)-精灵渲染器 Sprite Renderer
- 建造者模式/生成器模式
- 产品以及研发团队有使用专业的办公软件,如禅道、蓝湖等,他们应该如何使用 Tita 系统?
- 人脸识别损失函数的汇总 | Pytorch版本实现
猜你喜欢
leetcode: 899. Ordered Queue [Thinking Question]
49 万奖金等你来拿!第四届实时计算 Flink 挑战赛启动,Beyond Stream Processing!
如何启动 NFT 集合
常见分布式理论(CAP、BASE)和一致性协议(Gosssip、Raft)
Introduction to spark learning - 1
Essentially a database data recovery 】 【 database cannot read data recovery case
生态剧变,电子签名SaaS模式迎来新突破,网络效应加速到来
MATLAB gcf figure save image with black background/transparent background
Common distributed theories (CAP, BASE) and consensus protocols (Gosssip, Raft)
【Unity入门计划】基本概念(7)-Input Manager&Input类
随机推荐
ReentrantLock详解
MATLAB | 一种简易的随机曼陀罗图形生成函数
ECCV 2022 | 基于关系查询的时序动作检测方法
【Unity入门计划】基本概念(7)-Input Manager&Input类
mysql delete 执行报错:You can‘t specify target table ‘doctor_info‘ for update in FROM clause
QT QT 】 【 to have developed a good program for packaging into a dynamic library
证实了,百度没有快照了
leetcode-693.交替位二进制数
JS基础--判断
【QT】Qt项目demo:数据在ui界面上显示,鼠标双击可弹窗显示具体信息
托尔斯泰:生活中只有两种不幸
13、OOM模拟
MATLAB gcf图窗保存图像,黑色背景/透明背景
49 万奖金等你来拿!第四届实时计算 Flink 挑战赛启动,Beyond Stream Processing!
在 360 度绩效评估中应该问的 20 个问题
CopyOnWriteArrayList详解
5 v 8.4 v1A charging current charging management IC
MySQL性能优化_小表驱动大表
新版本 MaxCompute 的SQL 中支持的 EXTRACT 函数有什么作用?
参与便有奖,《新程序员》杂志福利来袭!