Как пропатчить statefulset на кластере kubernetes и установить imagePullPolicy - PullRequest
1 голос
/ 11 апреля 2019

Нужно понять, как именно работает патч.Как я могу исправить "imagePullPolicy", например.Может кто-нибудь объяснить в простых деталях, как работает патч.

kubectl patch statefulset my-set -p '{"spec":{"containers":{"imagePullPolicy":"IfNotPresent"}}}'

Это не работает, что с ним не так?

Ответы [ 2 ]

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

В дополнение к ответу @Colwins вы также должны добавить обязательный ключ name в спецификацию контейнера, в противном случае вы получите does not contain declared merge key: name

Итак, ваша команда kubectl должна выглядеть следующим образом:

kubectl patch statefulset my-set -p '{"spec": {"template": {"spec":{"containers":[{"name":"nginx","imagePullPolicy":"Never"}]}}}}'
1 голос
/ 11 апреля 2019

Я думаю, вам не хватает ключа шаблона в вашей команде

kubectl patch statefulset my-set -p '{"spec": {"template": {"spec":{"containers":[{"name": "xxxxxxx", "imagePullPolicy":"IfNotPresent"}]}}}}'

yaml с сохранением состояния выглядит примерно так

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  serviceName: "nginx"
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: k8s.gcr.io/nginx-slim:0.8
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi

Таким образом, путь к полю контейнеров равен

spec >> шаблон >> spec >> контейнеры

...