我有一个包含多个节点(假设为 3 个节点)的 k3s 集群。在每个节点上,我有几个 pod 需要部署。这是一个“静态部署”,这意味着我想将每个 pod 部署到特定节点上。我不想让 k3s 自动执行此操作。
例如:
Node_1:
pod_a
pod_b
pod_c
Node_2:
pod_d
pod_e
pod_f
Node_3:
pod_h
pod_i
pod_g
为了实现这一点,我使用了标签。我用特定的标签标记每个节点,然后在部署文件中指定标签yaml
:
例如这样的:
apiVersion: v1
kind: Node
metadata:
name: node3
labels:
db: 'true'
以及yaml
部署文件,例如数据库:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: db
namespace: default
spec:
spec:
nodeSelector:
db: 'true'
因此,通常情况下,poddb
应该部署在 上Node3
。但有时情况并非如此。当我重新部署时,pod 会重新部署到另一个节点上,我不明白为什么,也不知道如何将其移回正确的节点。
这非常烦人,因为对于某些关键的 pod,我在主机上安装了数据,如果 pod 没有正确部署,我的应用程序就会失败。
如何确保我的 pod总是部署正确吗?为什么有时部署不正确?谢谢