Не удалось обновить арги containr в блоках — kuberneties-получено «обновления модулей не могут изменять поля»

#javascript #kubernetes #kubectl

Вопрос:

Я пытаюсь обновить точку входа в определенном контейнере

структура такова : набор состояний -> список модулей ->> Конкретный модуль ->>> конкретный контроллер

Я попытался сделать это с помощью клиента javascript и получил следующее:

     body: {
      kind: 'Status',
      apiVersion: 'v1',
      metadata: {},
      status: 'Failure',
      message: 'Pod "name-0" is invalid: spec: Forbidden: pod updates may not change fields other than `spec.containers[*].image`, `spec.initContainers[*].image`, `spec.activeDeadlineSeconds` or `spec.tolerations` (only additions to existing tolerations)n'  
        '  core.PodSpec{n'  
 

Я сделал следующее:

   for(let c of pod.spec.containers){
        if(c.name === 'name'){
            console.log('in name contianer');
            c.args = ['test;sleep 3600'];
        }
    }
    
await coreV1Api.replaceNamespacedPod(podName,namespace, pod);


 

это работает, если я обновлю набор аргументов с отслеживанием состояния, но мне нужно только для определенного модуля

возможно ли это?

Комментарии:

1. Я не эксперт по кубернетесу (начал работать в течение месяца из 2), но я считаю, что сообщение ясно. Вы не можете изменить параметры определенного модуля (возможно, это возможно только для изменения параметров набора состояний)

Ответ №1:

Это невозможно. Весь смысл использования a StatefulSet в том, чтобы иметь кучу Pods , которые в основном идентичны. Точная цель состоит Controller Manager в том, чтобы согласовать StatefulSet ресурс и убедиться, что их replicas количество Pods соответствует StatefulSet спецификации.

Если вы хотите иметь разные модули, вам нужны разные наборы состояний.