web-dev-qa-db-fra.com

kubelet ne parvient pas à obtenir les statistiques de cgroup pour les services docker et kubelet

J'utilise kubernetes sur du bare-metal Debian (3 maîtres, 2 ouvriers, PoC pour l'instant). J'ai suivi k8s à la dure et je rencontre le problème suivant sur mon kubelet:

Impossible d'obtenir les statistiques du conteneur système pour "/system.slice/docker.service": échec de l'obtention des statistiques de groupe pour "/system.slice/docker.service": échec de l'obtention des statistiques de groupe pour "/system.slice/docker.service ": impossible d'obtenir les informations de conteneur pour" /system.slice/docker.service ": conteneur inconnu" /system.slice/docker.service "

Et j'ai le même message pour kubelet.service.

J'ai quelques fichiers sur ces groupes de contrôle:

$ ls /sys/fs/cgroup/systemd/system.slice/docker.service
cgroup.clone_children  cgroup.procs  notify_on_release  tasks

$ ls /sys/fs/cgroup/systemd/system.slice/kubelet.service/
cgroup.clone_children  cgroup.procs  notify_on_release  tasks

Et cadvisor me dit:

$ curl http://127.0.0.1:4194/validate
cAdvisor version: 

OS version: Debian GNU/Linux 8 (jessie)

Kernel version: [Supported and recommended]
    Kernel version is 3.16.0-4-AMD64. Versions >= 2.6 are supported. 3.0+ are recommended.


Cgroup setup: [Supported and recommended]
    Available cgroups: map[cpu:1 memory:1 freezer:1 net_prio:1 cpuset:1 cpuacct:1 devices:1 net_cls:1 blkio:1 perf_event:1]
    Following cgroups are required: [cpu cpuacct]
    Following other cgroups are recommended: [memory blkio cpuset devices freezer]
    Hierarchical memory accounting enabled. Reported memory usage includes memory used by child containers.


Cgroup mount setup: [Supported and recommended]
    Cgroups are mounted at /sys/fs/cgroup.
    Cgroup mount directories: blkio cpu cpu,cpuacct cpuacct cpuset devices freezer memory net_cls net_cls,net_prio net_prio perf_event systemd 
    Any cgroup mount point that is detectible and accessible is supported. /sys/fs/cgroup is recommended as a standard location.
    Cgroup mounts:
    cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
    cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
    cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpu,cpuacct 0 0
    cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
    cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
    cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
    cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_cls,net_prio 0 0
    cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
    cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0


Managed containers: 
    /kubepods/burstable/pod76099b4b-af57-11e7-9b82-fa163ea0076a
    /kubepods/besteffort/pod6ed4ee49-af53-11e7-9b82-fa163ea0076a/f9da6bf60a186c47bd704bbe3cc18b25d07d4e7034d185341a090dc3519c047a
            Namespace: docker
            Aliases:
                    k8s_tiller_tiller-deploy-cffb976df-5s6np_kube-system_6ed4ee49-af53-11e7-9b82-fa163ea0076a_1
                    f9da6bf60a186c47bd704bbe3cc18b25d07d4e7034d185341a090dc3519c047a
    /kubepods/burstable/pod76099b4b-af57-11e7-9b82-fa163ea0076a/956911118c342375abfb7a07ec3bb37451bbc64a1e141321b6284cf5049e385f

MODIFIER

Désactiver le port cadvisor sur kubelet (--cadvisor-port=0) ne résout pas cela.

12
Jérôme Pin

Essayez de démarrer kubelet avec

--runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice

J'utilise cette solution sur RHEL7 avec Kubelet 1.8.0 et Docker 1.12

22
angeloxx

La solution de contournement de l'angeoxx fonctionne également sur l'image par défaut AWS pour kops (k8s-1.8-debian-jessie-AMD64-hvm-ebs-2017-12-02 (AMI-bd229ec4))

Sudo vim /etc/sysconfig/kubelet

ajoutez à la fin de la chaîne DAEMON_ARGS:

 --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice

enfin:

Sudo systemctl restart kubelet
11
mercantiandrea

Je devais faire un yum update en plus de ce changement pour le faire fonctionner. Pourrait être utile pour d'autres qui tentent cette solution de contournement.

1
György Novák

Pour ceux un peu plus loin, dans kops AMI kope.io/k8s-1.8-debian-jessie-AMD64-hvm-ebs-2018-02-08 comme ci-dessus, j'ai dû ajouter:

ajoutez à la fin de la chaîne DAEMON_ARGS:

--runtime-cgroups=/lib/systemd/system/kubelet.service --kubelet-cgroups=/lib/systemd/system/kubelet.service

et alors: Sudo systemctl restart kubelet

mais j'ai trouvé que je recevais toujours:

Failed to get system container stats for "/system.slice/docker.service": failed to get cgroup stats for "/system.slice/docker.service": failed to get container info for "/system.slice/docker.service": unknown container "/system.slice/docker.service"

le redémarrage de dockerd a résolu cette erreur: Sudo systemctl restart docker

Merci

Après avoir creusé un peu plus, j'ai trouvé une meilleure résolution pour l'ajouter à la configuration de kops:

https://github.com/kubernetes/kops/issues/4049

0
Jürgen