Почему imagePullPolicy нельзя изменить на «Всегда» в Куберне - PullRequest
1 голос
/ 03 апреля 2019

У меня настроен кластер kubernetes, и я хотел бы использовать локальные образы.Я настроил файл .yaml таким образом, чтобы он содержал (в контейнерах -> раздел изображения) «imagePullPolicy: Never», например:

spec:
      containers:
      - image: <name>:<version>
        name: <name>
        imagePullPolicy: Never
        resources: {}
      restartPolicy: Always

Я развернул этот сервис в kubernetes, но изображение не может быть извлечено (получениеImagePullBackOff - ошибка при просмотре пакетов с помощью kubectl get pod), так как изображение не может быть найдено в Интернете / реестре и по неизвестной причине imagePullPolicy имеет значение Always-value.Это видно, например, из / var / log / messages из текста:

"spec":{"containers":[{"image":"<name>","imagePullPolicy":"Always","name":"<name>","

Итак, мой вопрос: почему это imagePullPolicy в Always-значении, хотя я установил для imagePullPolicy значение Never в моем файле .yaml (который, конечно, был введен в эксплуатацию)?Есть ли какое-то значение по умолчанию для imagePullPolicy, которое работает со значением, описанным в файле .yaml?

Моя среда - Centos7, и я использую Kontena Pharos 2.2.0 (использует, например, докер 1.13.1 (Apache License 2.0)и kubernetes 1.13.2 (Apache License 2.0)).

Я ожидал, что когда я установлю «imagePullPolicy: Never» в файле .yaml, теперь значение должно быть никогда (и не всегда).

Большое спасибо за помощь!

1 Ответ

1 голос
/ 03 апреля 2019

Добро пожаловать в StackOverflow.

Это происходит потому, что в вашем кластере Kubernetes, по-видимому, включен подключаемый модуль управления доступом на сервере api, называемый AlwaysPullImages, роль которого заключается в перезаписи (мутировании) объектов перед их сохранением в хранилище данных Kubernetes - etcd.

Это поведение по умолчанию для кластеров, загружаемых с помощью Kontena Pharos начиная с версии v2.0.0-alpha.2.

Вы можете отключить этот подключаемый модуль в вашем основном конфигурационном файле cluster.yml:

...
addons:
  ingress-nginx:
    enabled: true

admission_plugins:
  - name: AlwaysPullImages
    enabled: false
... 

Затем следует ожидать сбоя POD с другой причиной состояния, если изображение не найдено в локальном реестре:

client-deployment-99699599d-lfqmr    0/1     ErrImageNeverPull   0          42s

Подробнее об использовании контроллеров доступа здесь

...