Несмотря на то, что редактирование развертывания вручную, как описано в разделе cookied, является одним из вариантов, я считаю, что использование kubctl patch
будет лучшим решением.
Вы можете выполнить исправление, используя файл yaml или строку JSON , что упрощает интеграцию в сценарии.Вот полная ссылка .
Пример
Вот простое развертывание используемого мной nginx, которое будет создано на node-1
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
nodeSelector:
kubernetes.io/hostname: node-1
JSON patch
Вы можете исправить развертывание, чтобы изменить нужный узел следующим образом:kubectl patch deployments nginx-deployment -p '{"spec": {"template": {"spec": {"nodeSelector": {"kubernetes.io/hostname": "node-2"}}}}}'
Патч YAML
Запустив kubectl patch deployment nginx-deployment --patch "$(cat patch.yaml)"
, где patch.yaml подготовлен следующим образом:
spec:
template:
spec:
nodeSelector:
kubernetes.io/hostname: node-2
Оба приведут к планированию планирования нового модуля назапрашиваемый узел и завершает работу старого, как только новый будет готов.