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
再現方法:
環境:
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構成ファイル/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構成が一致しない場合は、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
CentOS 7でminicubeを実行するには、 https://github.com/kubernetes/minikube/issues/2192 で提案されている--extra-config=kubelet.cgroup-driver=systemd
で開始する必要があります。
Kubeletプロセスは、エラーメッセージから通知する/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
から正しい設定をロードしなかったようです。
チャットから詳細情報を取得した後、いくつかの可能な方法があると思います。
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がロードするものを確認します。
Kubeletコードにログを追加してデバッグする
これ は、両側からconfを取得するためにkubeletが使用するロジックです
このファイルを編集/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
change systemd to cgroupfs "。その後、kubeletを再起動しますsystemctl restart kubelet
。
これは、最初の起動時の誤設定が原因です。たとえば、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
最初に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 onfigパラメーターでminikubeを起動します
--extra-config=kubelet.cgroup-driver=systemd
Minikubeを起動する完全なコマンドは次の行です
minikube start --vm-driver=none --extra-config=kubelet.cgroup-driver=systemd
すべての最高の楽しみを持っています