当前位置:网站首页>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>,以取消节点隔离
在节点上依次执行上述步骤,确保工作负载有充足的时间被调度到其它节点
流程完成后,确认所有节点和工作负载均健康
边栏推荐
- When mobile applications go overseas, is your "network optimization" holding back?
- devops-2:Jenkins的使用及Pipeline语法讲解
- Small Tools (4) integrated Seata1.5.2 distributed transactions
- Optimal Power Flow (OPF) for High Voltage Direct Current (HVDC) (Matlab code implementation)
- 【数据库数据恢复】SqlServer数据库无法读取的数据恢复案例
- How to get the 2 d space prior to ViT?UMA & Hong Kong institute of technology & ali SP - ViT, study for visual Transformer 2 d space prior knowledge!.
- 深入浅出Flask PIN
- 【899. Ordered Queue】
- WordPress建站技术笔记
- 神经网络,凉了?
猜你喜欢

一文看懂推荐系统:召回01:基于物品的协同过滤(ItemCF),item-based Collaboration Filter的核心思想与推荐过程

使用Make/CMake编译ARM裸机程序(基于HT32F52352 Cortex-M0+)

如何选择合适的损失函数,请看......

一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度

【Unity入门计划】制作RubyAdventure01-玩家的创建&移动

spark入门学习-2

A new round of competition for speech recognition has started. Will natural dialogue be the next commanding height?

JS基础--判断

How to analyze the weekly activity rate?
我写了个”不贪吃蛇“小游戏
随机推荐
一文看懂推荐系统:召回02:Swing 模型,和itemCF很相似,区别在于计算相似度的方法不一样
Detailed explanation of ReentrantReadWriteLock
在 360 度绩效评估中应该问的 20 个问题
技术干货|如何将 Pulsar 数据快速且无缝接入 Apache Doris
Awesome!Coroutines are finally here!Thread is about to be in the past
建造者模式/生成器模式
Leetcode76. 最小覆盖子串
JD6606SP5_JD6606SSP_JD6606SASP_JD6621W7百盛新纪元授权代理商
【899. Ordered Queue】
机器人开发--Universal Scene Description(USD)
如何分析周活跃率?
WordPress 5.2.3 更新,升级出现请求超时的解决方法
请问大家,MySQL全量怎么样可以提高性能呢?我这里瓶颈是在Source上,在不增加并行度的情况下,
Some optional strategies and usage scenarios for PWA application Service Worker caching
Spark entry learning-2
13、OOM模拟
常见分布式理论(CAP、BASE)和一致性协议(Gosssip、Raft)
AI+BI+可视化,Sugar BI架构深度剖析
劲爆!协程终于来了!线程即将是过去式
DataGrip:非常好用的数据库工具,安装与使用教程,亮点介绍