Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Все решения
    • Все решения для Managed Service for Kubernetes
    • Устранение ошибки `Timed out waiting for the condition` при монтировании PVC
    • Устранение ошибки `Timed out waiting for the condition` при монтировании тома с большим количеством файлов
    • Хосты группы узлов Managed Service for Kubernetes долго находятся в статусе `RECONCILING`
    • Под `kube-dns-autoscaler` постоянно перезапускается
    • Не уменьшается количество нод в группе Managed Service for Kubernetes
    • Не увеличивается количество узлов в группе Managed Service for Kubernetes
    • Устранение ошибки `Multi-Attach error for volume`
    • Устранение ошибки `DEADLINE_EXCEEDED`
    • Устранение ошибок с синхронизацией времени на узлах кластера Managed Service for Kubernetes
    • Устранение проблем с разрешением DNS-имен в Managed Service for Kubernetes
    • Устранение ошибки `0/10 nodes are available - node(s) had untolerated taint`
    • Кластер слишком долго находится в состоянии `STARTING`
    • Поды кластера слишком долго находятся в состоянии `PENDING`
    • Устранение проблем с работой HPA в Managed Service for Kubernetes
    • Устранение ошибки `Can't use allocation_policy.locations.subnet_id together with node_template.network_interface_specs`
    • Устранение проблем с монтированием томов к подам кластера Managed Service for Kubernetes средствами Container Storage Interface для S3
    • Кластер Managed Service for Kubernetes слишком долго находится в состоянии `STARTING` после переименования
    • Как добавлять и изменять SSH-ключи пользователей Linux на хостах группы узлов Managed Service for Kubernetes
    • Как назначить статические внешние IP-адреса для узлов кластера Managed Service for Kubernetes
    • Как выдать узлам Kubernetes доступа в интернет
    • Как изменить сеть или подсеть для MDB-кластера
    • Как создать внутренний Ingress-контроллер
    • Как настроить автоматическое удаление старых образов с узлов Managed Service for Kubernetes
    • Как узнать внешний IP-адрес узла Managed Service for Kubernetes
    • Как использовать сертификаты из Certificate Manager в балансировщиках нагрузки или в Managed Service for Kubernetes
    • Как изменить часовой пояс на узлах кластера Managed Service for Kubernetes
    • Как выяснить размер эфемерного хранилища узла Managed Service for Kubernetes

В этой статье:

  • Описание сценария
  • Решение
  • Если ничего не получилось
  1. Managed Service for Kubernetes
  2. Как настроить автоматическое удаление старых образов с узлов Managed Service for Kubernetes

Как настроить автоматическое удаление старых образов с узлов Managed Service for Kubernetes

Статья создана
Yandex Cloud
Улучшена
kasparv
Обновлена 9 января 2025 г.
  • Описание сценария
  • Решение
  • Если ничего не получилось

Описание сценарияОписание сценария

Во время эксплуатации кластера Managed Service for Kubernetes отмечается повышенное потребление дискового пространства на узлах кластера. Свободное место на дисках узлов кластера периодически заканчивается.

Чтобы освободить место на диске, необходимо настроить автоматическое удаление старых образов с узлов Managed Service for Kubernetes.
Требуется изменение конфигурации Garbage Collection в Kubernetes для очистки старых образов, например задать значения image-gc-low-threshold и image-gc-high-threshold.

РешениеРешение

В конфигурации Garbage Collection у Managed Service for Kubernetes установлены следующие стандартные значения:

  • --image-gc-high-threshold (85%) — отвечает за процент использования диска. При достижении заданного значения всегда выполняется сборка мусора образа;
  • --image-gc-low-threshold (80%) — отвечает за процент использования диска, до которого сборка мусора образа никогда не выполняется.

Значения параметров указаны в соответствии с рекомендациями разработчиков Kubernetes.

Очистка старых образов происходит автоматически. Поэтому когда уровень использования диска достигает 85%, kubelet попытается уменьшить объем мусора до 80%.

Для автоматического удаления с узлов старых образов сервисов кластера вы также можете использовать следующие спецификации:

Спецификация для Docker Engine
apiVersion: batch/v1
kind: CronJob
metadata:
  name: docker-image-cleanup
spec:
  schedule: "0 0 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: docker-image-cleanup
            image: alpine:latest
            command:
            - /bin/sh
            - -c
            - >
              echo y | docker image prune -f
            volumeMounts:
            - name: docker-socket
              mountPath: /var/run/docker.sock
          volumes:
          - name: docker-socket
            hostPath:
              path: /var/run/docker.sock
          restartPolicy: OnFailure
Спецификация для Containerd
apiVersion: v1
kind: ConfigMap
metadata:
  name: imagecleanupconfig
  namespace: default
  labels:
    component: imagecleanup
data:
  # removes all images unused by a running container
  cronjobs: 0 0 * * * crictl rmi --prune 2>&1
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: imagecleanup
  namespace: default
spec:
  selector:
    matchLabels:
      component: imagecleanup
  template:
    metadata:
      labels:
        component: imagecleanup
    spec:
      volumes:
        - name: containerd
          hostPath:
            path: /var/run/containerd/containerd.sock
            type: Socket
        - name: imagecleanupconfig
          configMap:
            name: imagecleanupconfig
      containers:
        - name: imagecleanup
          image: alpine:latest
          imagePullPolicy: Always
          env:
            - name: CRICTL_VERSION
              value: v1.20.0
            - name: CONTAINER_RUNTIME_ENDPOINT
              value: unix:///var/run/containerd/containerd.sock
            - name: IMAGE_SERVICE_ENDPOINT
              value: unix:///var/run/containerd/containerd.sock
          # details of the command:
          # - install crictl
          # - add a cron job from the config map
          # - execute crond in the foregroud
          command:
            [
              "sh",
              "-c",
              "wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$CRICTL_VERSION/crictl-$CRICTL_VERSION-linux-amd64.tar.gz && tar zxvf crictl-$CRICTL_VERSION-linux-amd64.tar.gz -C /usr/local/bin && crontab /config/cronjobs && crond -f -d 8",
            ]
          resources:
            requests:
              cpu: 100m
              memory: 50Mi
          volumeMounts:
            - name: containerd
              mountPath: /var/run/containerd/containerd.sock
            - name: imagecleanupconfig
              mountPath: /config
---

Если ничего не получилосьЕсли ничего не получилось

Если вышеописанные действия не помогли решить задачу, создайте запрос в техническую поддержку. При создании запроса укажите следующую информацию:

  1. Идентификатор кластера Managed Service for Kubernetes.
  2. Описание проблемы.

Была ли статья полезна?

Предыдущая
Как создать внутренний Ingress-контроллер
Следующая
Как узнать внешний IP-адрес узла Managed Service for Kubernetes
Проект Яндекса
© 2025 ООО «Яндекс.Облако»