#kubernetes #kubernetes-pod #affinity
Вопрос:
Я пытаюсь развернуть 2 реплики на k3s — каждая на другом узле. Согласно документации, это должно быть довольно просто. Однако, должно быть, я совершаю какую-то глупую ошибку, которую не могу найти. Когда я применяю файл развертывания, оба моих модуля работают на одном и том же узле (node1). В случае, если я выключу этот узел, эти модули запустятся на других 2 узлах (node2, node3). Когда я запускаю node1 обратно и повторно развертываю приложение, оно снова запускается на том же node1. Если кто-нибудь может посоветовать, пожалуйста, что у меня не так в моей конфигурации, я был бы очень благодарен. (Я запускаю свежие новые k3 на 3 серверах с одинаковой конфигурацией HW)
apiVersion: apps/v1
kind: Deployment
metadata:
name: tbd-node-js-runner
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: tbd-node-js-runner
template:
metadata:
labels:
app: tbd-node-js-runner
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- tbd-node-js-runner
topologyKey: topology.kubernetes.io/hostname
containers:
- name: tbd-node-js-runner
image: tabidoo/nodejs-runner:latest
ports:
- containerPort:
env:
- name: CONNECTION_STRING
value: "..."
...
imagePullPolicy: Always
imagePullSecrets:
- name: regcred
Комментарии:
1. можете ли вы добавить
kubectl get nodes --show-labels
вывод к вопросу ?
Ответ №1:
- Это связано с неправильной топологией , она должна быть ‘kubernetes.io/hostname» нет «topology.kubernetes.io/hostname» .
- Таким образом, это будет выглядеть следующим образом :
apiVersion: apps/v1
kind: Deployment
metadata:
name: tbd-node-js-runner
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: tbd-node-js-runner
template:
metadata:
labels:
app: tbd-node-js-runner
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- tbd-node-js-runner
topologyKey: "kubernetes.io/hostname"
containers:
- name: tbd-node-js-runner
image: tabidoo/nodejs-runner:latest
Комментарии:
1. ДА. Это оно. Спасибо! Большое спасибо. Я не верю, что пропустил это. Я читал это так много раз.
2. @MichalCumpelik вы можете принять ответ, если он вас полностью удовлетворит
3. Да, я не находил его раньше. Теперь, я надеюсь, это принято. Спасибо за уведомление.