Kubernetes_从Linux的cgroup配置到Kubernetes中的cgroup配置

Posted 毛奇志

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes_从Linux的cgroup配置到Kubernetes中的cgroup配置相关的知识,希望对你有一定的参考价值。

系列文章目录

文章目录


前言

一、Linux层面的cgroup

cgroup是控制组,用来控制进程对资源的分配,这些资源包括 cpu memory devices

二、Kubernetes层面的cgroup driver

cgroup是控制组,有不同的cgroup driver,在kubernetes使用过程中,如果kubelet和底层的docker的cgroup driver不一致,会导致kubelet启动失败( systemctl restart kubelet 失败)。

2.1 kubelet和docker的Cgroup Driver不同导致kubelet开启失败

2.1.1 命令

查看docker的Cgroup Driver
docker info | grep Driver

查看kubelet 的Cgroup Driver
systemctl show --property=Environment kubelet | cat
修改docker的Cgroup Driver
vi /etc/docker/daemon.json
 

   "exec-opts": ["native.cgroupdriver=systemd"]

修改kubelet 的Cgroup Driver
vi /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
–-cgroup-driver=systemd
#重启使之生效
systemctl daemon-reload 
systemctl restart docker
systemctl restart kubelet

2.1.2 演示

注意看被 # 注释的文字

This is a file that “kubeadm init” and “kubeadm join” generates at runtime, populating the
KUBELET_KUBEADM_ARGS variable dynamically

这个文件是“kubeadminit”和“kubeadm join”在运行时生成的,动态填充KUBELET_kubeadm_ARGS变量。

EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env

第二段,如下:

This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.

这是用户可以用于覆盖kubelet ARG作为最后手段的文件。优选地,用户应该在配置文件中使用.NodeRegistration.KubeletExtraArgs对象。KUBELET_EXTRA_ARGS应该来自这个文件。

EnvironmentFile=-/etc/sysconfig/kubelet
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS


总结

参考资料:Linux cgroup
Kubernetes cgroup

以上是关于Kubernetes_从Linux的cgroup配置到Kubernetes中的cgroup配置的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes 内存资源限制实战

systemd与cgroupfs

Linux Cgroup浅析

cgroup

kubernetes网络和CNI简介

CGroup原理篇V1十一Memory子系统(Memcg)实现备忘录