让K8S某个节点不参加调度
时间: 2023-09-16 15:07:30 浏览: 114
k8s单节点(软件及脚本).rar
要让Kubernetes集群中的某个节点不参加调度,可以使用节点标签和调度器的节点选择器。具体步骤如下:
1. 给该节点打上一个标签,例如 `node-role/exclude=true`。
可以使用以下命令为节点打上标签:
```
kubectl label nodes <node-name> node-role/exclude=true
```
其中 `<node-name>` 是节点的名称。
2. 在 Pod 的 YAML 文件中添加 `nodeSelector` 字段来指定节点选择器,确保 Pod 不会被调度到被标记的节点上。
例如:
```
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
nodeSelector:
node-role/exclude: "false"
```
以上 YAML 文件中的 `node-role/exclude: "false"` 表示选择 `node-role/exclude=true` 的节点之外的节点来进行调度。
3. 更新现有的 Deployment、StatefulSet、DaemonSet 等资源的 YAML 文件,添加相应的 `nodeSelector` 字段,以确保新的 Pod 也不会被调度到被标记的节点上。
例如:
```
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
selector:
matchLabels:
app: my-app
replicas: 3
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx
nodeSelector:
node-role/exclude: "false"
```
以上 YAML 文件中的 `nodeSelector` 字段指定了选择 `node-role/exclude=true` 的节点之外的节点来进行调度。
注意,如果您使用的是 Helm Chart,需要在 Chart 的 values.yaml 文件中添加相应的 `nodeSelector` 配置项来确保新的 Pod 不会被调度到被标记的节点上。
完成以上步骤后,被标记的节点将不再参与调度。
阅读全文