0
点赞
收藏
分享

微信扫一扫

kubeadm初始化集群报错:kubelet driver: “cgroupfs“ is different from docker cgroup driver: “systemd“

覃榜言 2022-03-15 阅读 71

kubeadm初始化集群报错:

  报错信息如下:

[kubelet-check] It seems like the kubelet isn't running or healthy.
[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp 127.0.0.1:10248: connect: connection refused.
 connection refused.

	Unfortunately, an error has occurred:
		timed out waiting for the condition

	This error is likely caused by:
		- The kubelet is not running
		- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)

	If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:
		- 'systemctl status kubelet'
		- 'journalctl -xeu kubelet'

	Additionally, a control plane component may have crashed or exited when started by the container runtime.
	To troubleshoot, list all containers using your preferred container runtimes CLI.

	Here is one example how you may list all Kubernetes containers running in docker:
		- 'docker ps -a | grep kube | grep -v pause'
		Once you have found the failing container, you can inspect its logs with:
		- 'docker logs CONTAINERID'

  进一步查找原因:
    kubelet服务启动正常

# systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
     Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/kubelet.service.d
             └─10-kubeadm.conf
     Active: activating (auto-restart) (Result: exit-code) since Tue 2022-03-15 01:31:50 UTC; 9s ago
       Docs: https://kubernetes.io/docs/home/
    Process: 108175 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (code=exited, status=1/FAILURE)
   Main PID: 108175 (code=exited, status=1/FAILURE)

    查询系统日志可知:“Failed to run kubelet” err="failed to run Kubelet: misconfiguration: kubelet driver: “cgroupfs” is different from docker cgroup driver: “systemd”

# journalctl -xeu kubelet
Flag --network-plugin has been deprecated, will be removed along with dockershim.
Flag --fail-swap-on has been deprecated, This parameter should be set via the config file specified by the Kubelet's --config flag. See https
server.go:440] "Kubelet version" kubeletVersion="v1.22.7"
server.go:868] "Client rotation is on, will bootstrap in background"
certificate_store.go:130] Loading cert/key pair from "/var/lib/kubelet/pki/kubelet-client-current.pem".
dynamic_cafile_content.go:155] "Starting controller" name="client-ca-bundle::/etc/kubernetes/pki/ca.crt"
server.go:687] "--cgroups-per-qos enabled, but --cgroup-root was not specified.  defaulting to /"
container_manager_linux.go:280] "Container manager verified user specified cgroup-root exists" cgroupRoot=[]
container_manager_linux.go:285] "Creating Container Manager object based on Node Config" nodeConfig={RuntimeCgr
topology_manager.go:133] "Creating topology manager with policy per scope" topologyPolicyName="none" topologySc
container_manager_linux.go:320] "Creating device plugin manager" devicePluginEnabled=true
state_mem.go:36] "Initialized new in-memory state store"
kubelet.go:314] "Using dockershim is deprecated, please consider using a full-fledged CRI implementation"
client.go:78] "Connecting to docker on the dockerEndpoint" endpoint="unix:///var/run/docker.sock"
client.go:97] "Start docker client with request timeout" timeout="2m0s"
docker_service.go:570] "Hairpin mode is set but kubenet is not enabled, falling back to HairpinVeth" hairpinMod
docker_service.go:242] "Hairpin mode is set" hairpinMode=hairpin-veth
cni.go:239] "Unable to update cni config" err="no networks found in /etc/cni/net.d"
cni.go:239] "Unable to update cni config" err="no networks found in /etc/cni/net.d"
docker_service.go:257] "Docker cri networking managed by the network plugin" networkPluginName="cni"
cni.go:239] "Unable to update cni config" err="no networks found in /etc/cni/net.d"
docker_service.go:263] "Docker Info" dockerInfo=&{ID:X6CY:RCM7:27L7:GQQ2:NNQZ:T2NN:CCSV:KJC2:TXO5:LRZH:EUZO:X6G
E0315 01:32:31.258827  108569 server.go:294] "Failed to run kubelet" err="failed to run Kubelet: misconfiguration: kubelet driver: "cgroupfs" is different from docker cgroup driver: "systemd"
systemd[1]: kubelet.service: Main process exited, code=exited, status=1/FAILURE

  解决方法:
    方法一:只修改docker配置:把docker cgroup driver: "systemd"改为kubelet driver: “cgroupfs”,请参考方法二
    方法二:修改docker和kubelet配置
      docker配置添加 “exec-opts”: [“native.cgroupdriver=systemd”]

# vim /etc/docker/daemon.json

      kubelet配置/var/lib/kubelet/config.yaml添加cgroupDriver(不同版本在哪修改,望指教)

cat > /var/lib/kubelet/config.yaml <<EOF
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
EOF

      kubelet配置/var/lib/kubelet/kubeadm-flags.env,KUBELET_KUBEADM_ARGS中添加 --cgroup-driver=systemd(初始化之后就没了,不添加能成功不?望指教)

vim /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS="--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.5"

  重启docker和kubelet

systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet

  检查 docker info|grep “Cgroup Driver” 是否输出 Cgroup Driver: systemd

# docker info|grep "Cgroup Driver"
 Cgroup Driver: systemd
举报

相关推荐

Docker容器初始化

0 条评论