kubelet 因 kubelet cgroup 驱动程序失败:“cgroupfs";与 docker cgroup 驱动程序不同:“systemd" [英] kubelet failed with kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"
问题描述
cgroup driver
的配置就在 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
我还用cli检查了Environment
$ systemctl show --property=Environment kubelet |猫环境=KUBELET_KUBECONFIG_ARGS=--kubeconfig=/etc/kubernetes/kubelet.confx20--require-kubeconfig=true KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifestsx20--allow-privileged=trueKUBELET_NETWORK_ARGS=--network-plugin=cnix20--cni-conf-dir=/etc/cni/net.dx20--cni-bin-dir=/opt/cni/bin KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10x20--cluster-domain=cluster.local KUBELET_AUTHZ_ARGS=--authorization-mode=Webhookx20--client-ca-file=/etc/kubernetes/pki/ca.crt KUBELET_CADVISOR_ARGS=--cadvisor-端口=0 KUBELET_CGROUP_ARGS=--cgroup-driver=systemd
<块引用>
KUBELET_CGROUP_ARGS=--cgroup-driver=systemd
如何重现它:
- yum install -y docker-1.12.6
- systemctl 启用 docker &&systemctl 启动 docker
- setenforce 0
- yum install -y kubelet kubeadm
- systemctl enable kubelet &&systemctl 启动 kubelet
- systemctl 守护进程重新加载
- systemctl 重启 kubelet
- kubelet 日志
环境:
- Kubernetes 版本(使用
kubectl 版本
):1.7.3 - 云提供商或硬件配置**:4 核 16G RAM
- 操作系统(例如来自/etc/os-release):CentOS Linux 7(核心)
- 内核(例如
uname -a
):Linux 10-8-108-92 3.10.0-327.22.2.el7.x86_64 #1 SMP Thu Jun 23 17:05:11 UTC 2016x86_64 x86_64 x86_64 GNU/Linux - 安装工具:kubeadm
在我的环境中,它只能以相反的方式工作.设置 systemd 总是会导致错误.这是我目前的设置
操作系统:CentOS 7.6.1810Minikube 版本 v1.0.0Docker 版本 18.06.2-ce
我的解决方案是:检查 /etc/docker/daemon.json
并将 systemd 更改为 cgroupfs
<代码>{"exec-opts": ["native.cgroupdriver=cgroupfs"],日志驱动程序":json 文件",日志选项":{最大尺寸":100m"},存储驱动程序":overlay2",存储选择":[overlay2.override_kernel_check=true"]}
然后重新加载systemctl systemctl daemon-reload
杀死之前的 minikub 配置 minikube delete
并再次启动 minikube minikube start --vm-driver=none
现在检查命令行,输出应该在两个输出中找到 cgroupfs
docker 信息 |grep -i cgroupcat/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
最后你应该看到
kubectl 现在配置为使用minikube"= 完成!感谢您使用 minikube!
简单的解决方案:使用 Extra 配置参数启动您的 minikube
--extra-config=kubelet.cgroup-driver=systemd
下一行是启动minikube的完整命令
minikube start --vm-driver=none --extra-config=kubelet.cgroup-driver=systemd
祝一切顺利,玩得开心
Configuration for cgroup driver
is right in /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
I also checked the Environment
with cli
$ systemctl show --property=Environment kubelet | cat
Environment=KUBELET_KUBECONFIG_ARGS=--kubeconfig=/etc/kubernetes/kubelet.confx20--require-kubeconfig=true KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifestsx20--allow-privileged=true KUBELET_NETWORK_ARGS=--network-plugin=cnix20--cni-conf-dir=/etc/cni/net.dx20--cni-bin-dir=/opt/cni/bin KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10x20--cluster-domain=cluster.local KUBELET_AUTHZ_ARGS=--authorization-mode=Webhookx20--client-ca-file=/etc/kubernetes/pki/ca.crt KUBELET_CADVISOR_ARGS=--cadvisor-port=0 KUBELET_CGROUP_ARGS=--cgroup-driver=systemd
KUBELET_CGROUP_ARGS=--cgroup-driver=systemd
How to reproduce it:
- yum install -y docker-1.12.6
- systemctl enable docker && systemctl start docker
- setenforce 0
- yum install -y kubelet kubeadm
- systemctl enable kubelet && systemctl start kubelet
- systemctl daemon-reload
- systemctl restart kubelet
- kubelet log
Environment:
- Kubernetes version (use
kubectl version
): 1.7.3 - Cloud provider or hardware configuration**: 4 core 16G RAM
- OS (e.g. from /etc/os-release): CentOS Linux 7 (Core)
- Kernel (e.g.
uname -a
): Linux 10-8-108-92 3.10.0-327.22.2.el7.x86_64 #1 SMP Thu Jun 23 17:05:11 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux - Install tools: kubeadm
On my environment it only worked the other way around. Setting systemd results always in an error. Here is my current setup
OS: CentOS 7.6.1810
Minikube Version v1.0.0
Docker Version 18.06.2-ce
The solution for me was:
Check /etc/docker/daemon.json
and change systemd to cgroupfs
{
"exec-opts": ["native.cgroupdriver=cgroupfs"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
Then reload systemctl systemctl daemon-reload
Kill the previous minikub config minikube delete
and start the minikube again minikube start --vm-driver=none
Now check the command line the output should find cgroupfs
in both outputs
docker info | grep -i cgroup
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
In the end you should see
kubectl is now configured to use "minikube"
= Done! Thank you for using minikube!
Simple solution: Start your minikube with the Extra config parameter
--extra-config=kubelet.cgroup-driver=systemd
The complete command to start up minikube is the next line
minikube start --vm-driver=none --extra-config=kubelet.cgroup-driver=systemd
All the best and have fun
这篇关于kubelet 因 kubelet cgroup 驱动程序失败:“cgroupfs";与 docker cgroup 驱动程序不同:“systemd"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!