#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
спецификации.
Если вы хотите иметь разные модули, вам нужны разные наборы состояний.