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.3 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 答案 0 :(得分:3)
kubelet 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
答案 1 :(得分:2)
要让CentOS 7上运行minicube,我需要按https://github.com/kubernetes/minikube/issues/2192中的建议使用--extra-config=kubelet.cgroup-driver=systemd
启动它。
答案 2 :(得分:1)
看起来kubelet进程没有从错误消息中的var str = MYExecutionStrategy(3, TimeSpan.FromSeconds(1));
str.Execute(() =>
{
using (DemoEntities objContext = GetWDemoEntities ())
{
using (TransactionScope obj = new TransactionScope())
{
Demo1 objDemo1 = new Demo1();
objDemo1.Title = "ABC";
objContext.Demo1.Add(objDemo1);
objContext.SaveChanges(); // First SaveChanges() method called.
Demo2 objDemo2 = new Demo2();
objDemo2.Title = "ABC";
objContext.Demo2.Add(objDemo2);
objContext.SaveChanges();// Second SaveChanges() method called.
obj.Complete();
}
}
}
加载正确的设置。
从聊天中获取更多信息后,我认为有几种可能的方法:
将kubelet和docker cgroup驱动程序切换为/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
从下面的repo下载docker,默认情况下使用cgroupfs
。
cgroupfs
并更改kubelet conf中的cgroup驱动程序。检查错误是否再次发生以及从其conf中加载的kubelet。
在kubelet代码中添加更多日志以进行调试
This是逻辑kubelet用于从双方获取conf
答案 3 :(得分:1)
修改此文件/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
将 systemd 更改为 cgroupfs "。然后重新启动kubelet systemctl restart kubelet
。
答案 4 :(得分:1)
相反,最好使kubelet使用systemd
在Kubernetes网站上,他们建议使用systemd https://kubernetes.io/docs/setup/production-environment/container-runtimes/ 更多详细信息here
您可以通过以下命令将kubelet更改为使用systemd https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ 将此添加到/ etc / sysconfig / kubelet
cat /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS=--cgroup-driver=systemd
答案 5 :(得分:0)
首先安装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,这将解决您的问题。
答案 6 :(得分:0)
在我的环境中,它只能以其他方式起作用。设置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"
]
}
然后重新加载系统ctl 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 onfig参数启动您的minikube
--extra-config=kubelet.cgroup-driver=systemd
启动minikube的完整命令是下一行
minikube start --vm-driver=none --extra-config=kubelet.cgroup-driver=systemd
祝一切顺利,玩得开心
答案 7 :(得分:0)
这是由初始启动期间的配置错误引起的。例如,在执行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 driver相同。
旧内容:
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