diff --git a/ansible/README.md b/ansible/README.md index 1d3112c..5e9bcca 100644 --- a/ansible/README.md +++ b/ansible/README.md @@ -98,6 +98,31 @@ kubectl get nodes | `enable_lb` | bool | - | 启用 K3s LB | | `netfilter_mode` | string | "" | Tailscale netfilter: off/nodivert/on | | `node_labels` | dict | - | 自定义标签 | +| `node_taints` | list | - | 节点污点 (格式: key=value:effect) | + +### 节点污点示例 + +```yaml +masters: + hosts: + master1: + ansible_host: 10.0.0.1 + node_taints: + - "node-role.kubernetes.io/control-plane:NoSchedule" + - "dedicated=gpu:NoSchedule" + +agents: + hosts: + gpu-node: + ansible_host: 10.0.0.10 + node_taints: + - "nvidia.com/gpu:NoSchedule" +``` + +常用污点效果(Effect): +- **NoSchedule**: 不允许新 Pod 调度到此节点 +- **PreferNoSchedule**: 尽量不调度(软限制) +- **NoExecute**: 驱逐已有 Pod 并禁止新 Pod | `kubelet_reserved` | string | - | 资源预留: cpu=500m,memory=512Mi | ## 环境变量 diff --git a/ansible/inventory/hosts.yml b/ansible/inventory/hosts.yml index f04d481..5165da8 100644 --- a/ansible/inventory/hosts.yml +++ b/ansible/inventory/hosts.yml @@ -22,16 +22,22 @@ all: cluster_init: true node_region: cn-sh use_mirror: true + node_taints: + - "node-role.kubernetes.io/control-plane:NoSchedule" tcb: ansible_host: tcb.node.dev.cm node_hostname: tcb node_region: cn-sh use_mirror: true + node_taints: + - "node-role.kubernetes.io/control-plane:NoSchedule" tcc: ansible_host: tcc.node.dev.cm node_hostname: tcc node_region: cn-sh use_mirror: true + node_taints: + - "node-role.kubernetes.io/control-plane:NoSchedule" # Agent 节点 (Worker) agents: diff --git a/ansible/roles/k3s/templates/k3s-agent.yaml.j2 b/ansible/roles/k3s/templates/k3s-agent.yaml.j2 index 431cd73..77e7dd2 100644 --- a/ansible/roles/k3s/templates/k3s-agent.yaml.j2 +++ b/ansible/roles/k3s/templates/k3s-agent.yaml.j2 @@ -20,6 +20,14 @@ node-label: {% endfor %} {% endif %} +# 节点污点 +{% if node_taints is defined %} +node-taint: +{% for taint in node_taints %} + - "{{ taint }}" +{% endfor %} +{% endif %} + # Kubelet 资源预留 {% if kubelet_reserved is defined %} kubelet-arg: diff --git a/ansible/roles/k3s/templates/k3s-server.yaml.j2 b/ansible/roles/k3s/templates/k3s-server.yaml.j2 index f9ccf49..67754c8 100644 --- a/ansible/roles/k3s/templates/k3s-server.yaml.j2 +++ b/ansible/roles/k3s/templates/k3s-server.yaml.j2 @@ -46,3 +46,11 @@ node-label: {% endfor %} {% endif %} +# 节点污点 +{% if node_taints is defined %} +node-taint: +{% for taint in node_taints %} + - "{{ taint }}" +{% endfor %} +{% endif %} +