Skip to content

ContainerD в качестве CRI

Подсчет общего размера всех образов

Чтобы подсчитать общий размер всех образов в namespace k8s.io, используйте следующие команды:

sudo ctr --address "/run/containerd/containerd.sock" -n k8s.io image ls
sudo ctr --namespace k8s.io i ls | awk '{print $4}' | awk '{sum+=$1} END {print sum}' 

Удаление образов

Для удаления образов, соответствующих определенному фильтру, используйте команду: ctr -n k8s.io i rm $(ctr -n k8s.io i ls -q | grep your_filter)

Удаление контейнеров

Для удаления контейнеров, соответствующих определенному фильтру, используйте команду: ctr -n k8s.io c rm $(ctr -n k8s.io c ls -q | grep your_filter)

Удаление неиспользуемых образов

для containerd

for containerd remove unused images (that's because crictl is compatible with containerd). sudo crictl rmi --prune

для docker

docker system prune -af --filter until=720h

if you install docker before containerd- you should do next

echo "===================================" &&\
echo "Config BEFORE change:" &&\
sudo cat /etc/crictl.yaml \
sudo crictl config --set runtime-endpoint=unix:///run/containerd/containerd.sock --set image-endpoint=unix:///run/containerd/containerd.sock &&\
echo "===================================" &&\
echo "Config AFTER change:" &&\
sudo cat /etc/crictl.yaml

Анализ образов и контейнеров в Kubernetes

Список образов containerd $ sudo crictl -r /run/containerd/containerd.sock images

Для получения информации о всех используемых образах в кластере Kubernetes и их размерах, используйте следующие команды.

Получение списка образов

Получение списка всех образов, используемых в подах:

kubectl get pods --all-namespaces -o jsonpath="{..image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c

Получение размеров образов на нодах

Получение информации о размерах образов на всех нодах:

kubectl get nodes -o json | jq '.items[].status.images[] | .names[1], .sizeBytes'

Спулить образ: sudo crictl -r /run/containerd/containerd.sock pull <private-ip>:5000/nginx:1.0

Создать под с образом из приватного registry: kubectl run private-pod --image=172.16.4.93:5000/nginx:1.0 --restart=Always

Verify containerd configuration: sudo containerd config dump

Если вы используете microk8s, команду для работы с контейнерами containerd нужно использовать как microk8s.ctr.

References:

  • https://www.mankier.com/8/ctr#Examples_(TL;DR)
  • https://github.com/kubernetes-sigs/cri-tools/blob/edf14e37007994d69f9b8cb3b1483a79b365b8eb/docs/crictl.md#install-crictl