仅在某些节点上运行 Pod
此页面演示了如何仅在一些 Pod 中运行 节点 上作为 DaemonSet 的一部分
开始之前
您需要拥有一个 Kubernetes 集群,并且 kubectl 命令行工具必须配置为与您的集群通信。建议在至少有两个未充当控制平面主机的节点的集群上运行本教程。如果您还没有集群,可以使用 minikube 创建一个,或者可以使用以下 Kubernetes 游乐场之一
仅在一些节点上运行 Pod
假设您想运行一个 DaemonSet,但您只需要在具有本地固态 (SSD) 存储的节点上运行这些守护程序 Pod。例如,Pod 可能会向节点提供缓存服务,并且仅当低延迟本地存储可用时缓存才有用。
步骤 1:向您的节点添加标签
将标签 ssd=true
添加到具有 SSD 的节点。
kubectl label nodes example-node-1 example-node-2 ssd=true
步骤 2:创建清单
让我们创建一个 守护进程集,它将仅在标记为 SSD 的 节点 上配置守护进程 Pod。
接下来,使用 nodeSelector
来确保守护进程集仅在将 ssd
标签设置为 "true"
的节点上运行 Pod。
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: ssd-driver
labels:
app: nginx
spec:
selector:
matchLabels:
app: ssd-driver-pod
template:
metadata:
labels:
app: ssd-driver-pod
spec:
nodeSelector:
ssd: "true"
containers:
- name: example-container
image: example-image
步骤 3:创建守护进程集
通过使用 kubectl create
或 kubectl apply
从清单创建守护进程集
让我们将另一个节点标记为 ssd=true
。
kubectl label nodes example-node-3 ssd=true
标记节点会自动触发控制平面(特别是守护进程集控制器)在该节点上运行一个新的守护进程 Pod。
kubectl get pods -o wide
输出类似于
NAME READY STATUS RESTARTS AGE IP NODE
<daemonset-name><some-hash-01> 1/1 Running 0 13s ..... example-node-1
<daemonset-name><some-hash-02> 1/1 Running 0 13s ..... example-node-2
<daemonset-name><some-hash-03> 1/1 Running 0 5s ..... example-node-3
上次修改时间为 2023 年 8 月 24 日下午 6:38 PST:使用 code_sample 简码而不是 code 简码 (e8b136c3b3)