如何解决Pod 关联设置在我的部署中无法正常工作
我尝试在 k3s 上部署 2 个副本 - 每个副本都部署到不同的节点。根据文档,这应该很容易。但是,我一定是在做一些我找不到的愚蠢错误。当我应用部署文件时,我的两个 Pod 都在运行同一个节点 (node1)。如果我关闭该节点,这些 Pod 将在另外 2 个节点(node2、node3)上启动。当我重新启动 node1 并重新部署应用程序时,它会再次在同一个 node1 上运行。 如果有人可以提供建议,我的配置有什么问题,我将不胜感激。 (我在 3 台具有相同硬件配置的服务器上运行全新的 k3s)
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
解决方法
-
这是由于 topologyKey 不正确,应该是 '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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。