web-dev-qa-db-ja.com

kubeletはkubelet cgroupドライバーで失敗しました:「cgroupfs」はdocker cgroupドライバー「systemd」とは異なります

cgroup driverの設定は/etc/systemd/system/kubelet.service.d/10-kubeadm.confにあります

Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"

Environmentもcliでチェックしました

$ 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

再現方法

  • 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
  • キュベレットログ

環境

  • Kubernetesバージョン(kubectl versionを使用):1.7.3
  • クラウドプロバイダーまたはハードウェア構成**:4コア16G RAM
  • OS(例:/ etc/os-release):CentOS Linux 7(Core)
  • カーネル(例: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
  • インストールツール:kubeadm
6
Yuwen Yan

考えられる原因

kubelet 1.7.3構成ファイル/etc/systemd/system/kubelet.service.d/10-kubeadm.conf#50748を読み取っていない

解決

kubeadmのトラブルシューティング

CentOSを使用していて、マスターノードのセットアップ中に問題が発生した場合、Docker cgroupドライバーがkubelet構成と一致することを確認します。

docker info | grep -i cgroup
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

Docker cgroupドライバーとkubelet構成が一致しない場合は、Docker cgroupドライバーと一致するようにkubelet構成を変更します。変更する必要があるフラグは--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
4
mon

CentOS 7でminicubeを実行するには、 https://github.com/kubernetes/minikube/issues/2192 で提案されている--extra-config=kubelet.cgroup-driver=systemdで開始する必要があります。

3
Jari Turkia

Kubeletプロセスは、エラーメッセージから通知する/etc/systemd/system/kubelet.service.d/10-kubeadm.confから正しい設定をロードしなかったようです。

チャットから詳細情報を取得した後、いくつかの可能な方法があると思います。

  1. Kubeletとdocker cgroupドライバーの両方をcgroupfsに切り替えます。デフォルトでcgroupfsを使用する以下のリポジトリからdockerをダウンロードします。

    [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がロードするものを確認します。

  2. Kubeletコードにログを追加してデバッグする

    これ は、両側からconfを取得するためにkubeletが使用するロジックです

2
ichbinblau

このファイルを編集/etc/systemd/system/kubelet.service.d/10-kubeadm.conf change systemd to cgroupfs "。その後、kubeletを再起動しますsystemctl restart kubelet

1
sfgroups

これは、最初の起動時の誤設定が原因です。たとえば、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
0
MUNGAI NJOROGE

最初に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をインストールすると、問題が解決します。

0
suresh Palemoni

私の環境では、逆方向でしか機能しませんでした。 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 onfigパラメーターでminikubeを起動します

--extra-config=kubelet.cgroup-driver=systemd

Minikubeを起動する完全なコマンドは次の行です

minikube start --vm-driver=none --extra-config=kubelet.cgroup-driver=systemd

すべての最高の楽しみを持っています

0
Mchoeti