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 | cat
Environment=KUBELET_KUBECONFIG_ARGS=--kubeconfig=/etc/kubernetes/kubelet.conf\x20--require-kubeconfig=true KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests\x20--allow-privileged=true KUBELET_NETWORK_ARGS=--network-plugin=cni\x20--cni-conf-dir=/etc/cni/net.d\x20--cni-bin-dir=/opt/cni/bin KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10\x20--cluster-domain=cluster.local KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook\x20--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
如何重现它:
环境:
kubectl version
):1.7.3uname -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 / Linuxkubelet 1.7.3 not reading config file /etc/systemd/system/kubelet.service.d/10-kubeadm.conf #50748
如果您在设置主节点时使用CentOS并遇到困难,请验证您的Docker cgroup驱动程序是否与kubelet配置匹配:
docker info | grep -i cgroup
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
如果Docker cgroup驱动程序和kubelet配置不匹配,请更改kubelet配置以匹配Docker cgroup驱动程序。您需要更改的标志是--cgroup-driver。如果已经设置,您可以像这样更新:
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
这可以替换为:
CG=$(sudo docker info 2>/dev/null | sed -n 's/Cgroup Driver: \(.*\)/\1/p')
sed -i "s/cgroup-driver=systemd/cgroup-driver=$CG/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
为了让MINOS在CentOS 7上运行,我需要按照--extra-config=kubelet.cgroup-driver=systemd
的建议用https://github.com/kubernetes/minikube/issues/2192启动它。
看起来kubelet进程没有加载/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
从错误消息中说出的正确设置。
从聊天中获取更多信息后,我认为有几种可能的方法:
cgroupfs
从下面的repo下载docker默认情况下使用cgroupfs
。
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
并在kubelet conf中更改cgroup驱动程序。检查错误是否再次发生以及从其conf中加载的kubelet。编辑此文件/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
将systemd更改为cgroupfs“。然后重新启动kubelet systemctl restart kubelet
。
首先安装docker:
yum install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm
yum install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm
[root@cgfs-dock ~]# docker info | grep -i cgroup
Cgroup Driver: cgroupfs
然后安装kubelet,这将解决您的问题。
在我的环境中,它只是相反的方式。设置systemd结果总是出错。这是我目前的设置
OS: CentOS 7.6.1810
Minikube Version v1.0.0
Docker Version 18.06.2-ce
我的解决方案是:检查/etc/docker/daemon.json
并将systemd更改为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"
]
}
然后重新加载systemctl systemctl daemon-reload
杀死以前的minikub配置minikube delete
并再次启动minikube minikube start --vm-driver=none
现在检查命令行输出应该在两个输出中找到cgroupfs
docker info | grep -i cgroup
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
最后你应该看到
kubectl is now configured to use "minikube"
= Done! Thank you for using minikube!
简单的解决方案:使用Extra config参数启动minikube
--extra-config=kubelet.cgroup-driver=systemd
启动minikube的完整命令是下一行
minikube start --vm-driver=none --extra-config=kubelet.cgroup-driver=systemd
一切都很好,玩得开心
这是由初始启动期间的错误配置引起的。例如,在执行kubeadm init
命令之前伪造更改docker cgroup驱动程序。
要在CentOS下解决此问题,请打开/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
或在您的操作系统下找到该文件。使用EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
找到该条目。打开此文件并将--cgroup-driver
的值更改为systemd
或与docker cgroup驱动程序相同。旧内容:
KUBELET_KUBEADM_ARGS=--cgroup-driver=cgrouopfs --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1
新内容:
KUBELET_KUBEADM_ARGS=--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1