kubectl применить - Dry-Run ведет себя странно - PullRequest
0 голосов
/ 07 января 2019

У меня странное поведение с kubectl и --dry-run.

Для упрощения предположим, что у меня есть следующий файл yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    run: nginx
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      run: nginx
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: nginx
    spec:
      containers:
      - image: nginxsdf
        imagePullPolicy: Always
        name: nginx

Изменение, например, изображения или количества реплик:

  • kubectl apply -f Deployment.yaml -o yaml --dry-run выводит мне ресурс, имеющий OLD характеристики

  • kubectl apply -f Deployment.yaml -o yaml выводит мне ресурс, имеющий NEW характеристики

Согласно документации:

- dry-run = false: если true, печатать только объект, который будет отправлен, без его отправки.

Однако напечатанный объект - старый, а не тот, который будет отправлен на ApiServer

Проверено на миникубе, gke v1.10.0

Тем временем я открыл для него новый выпуск gitHub:

1 Ответ

0 голосов
/ 07 января 2019

Я получил следующий ответ на странице выпуска kubernetes:

При обновлении существующих объектов приложение kubectl apply не отправляет весь объект, только патч. Не совсем правильно печатать существующий объект или новый объект в режиме пробного запуска ... результат слияния - это то, что должно быть напечатано.

Чтобы kubectl мог точно отразить результат применения, необходимо, чтобы на стороне сервера применялась логическая клиентская сторона, что не является целью.

В настоящее время усилия направлены на то, чтобы применить логику к серверу. В рамках этого была добавлена ​​возможность пробного запуска на стороне сервера. kubectl apply --server-dry-run будет делать то, что вы хотите, печатая результат применения слияния, фактически не сохраняя его.

@ apelisse, нам, вероятно, следует обновить справку по флагу для применения и, возможно, напечатать предупреждение при использовании --dry-run при обновлении объекта с помощью применения, чтобы документировать ограничения --dry-run и дать людям указание использовать --server. -dry перспективе

...