node节点把标签,设置污点

问题描述

某个单独的系统需要对他进行单独的做防火墙隔离出来,用集群的几台虚机给系统使用,这些虚拟机只能这个系统使用别的系统不能使用。
方法:首先可以给几点和系统deployment打标签,可以是pod落在这些节点,其次就是在节点打污点,让别的pod不能落在该节点上,在deployment添加污点容忍,这样可以保证只有这个应用的pod落在这些节点。

1. *节点打标签*

kubectl  get node
kubectl  label  node  <ip>  disktype=test
kubectl get node --show-labels


删除标签
kubectl label nodes <ip> disktype-

2. *Deployment修改添加标签*

apiVersion: apps/v1
kind: Deployment
metadata:
  name: dev-nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
     app: dev-nginx-deployment
  template:
    metadata: 
      labels:
        app: dev-nginx-deployment
    spec:
      containers:
      - name: nginx
        image: nginx:1.19.5
```
      nodeSelector:   #应用打标签
        disktype: test
```

3. *节点添加污点*

#查看节点我有点
kubectl describe node <ip>
#添加污点
kubectl taint nodes <ip> key=node:NoSchedule
4. *应用deployment修改容忍污点*
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dev-nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: dev-nginx-deployment
  template:
    metadata: 
      labels:
        app: dev-nginx-deployment
    spec:
      containers:
      - name: nginx
        image: nginx:1.19.5
```
    nodeSelector:
      disktype: test
    tolerations:
    - key: key
      operator: Exists
      effect: NoSchedule
```

5. *删除污点*

kubectl taint nodes <ip> key- 
Kubernetes (简称 K8S) 中的节点可以设置污点(Taints),用于避免某些类型的 Pod 被调度到特定节点上,除非这些 Pod 具有相应的容忍度(Tolerations)。 ### 污点的应用场景 - **专用资源**:当你有一组特殊的硬件资源只希望分配给特定的工作负载; - **维护窗口**:标记即将进行系统升级或其他维护工作的节点,在此期间不应再安排新的工作负载; - **隔离需求**:例如确保生产环境和测试环境的任务不会混排在同一物理机器上; ### 打标签操作步骤: 要在现有的集群中对某个已有的节点添加污点,你可以通过 `kubectl taint` 命令来进行配置。命令的基本格式如下所示: ```bash $ kubectl taint nodes <node-name> <key>=<value>:<effect> ``` 这里 `<node-name>` 就是你想要设定污点的目标节点名称,而 `<key>`、`<value>` 和 `<effect>` 则共同构成了这条规则的具体内容。“Effect” 参数指定了该条目所起的作用,默认值包括但不限于 NoSchedule(不允许新Pod被调度至此节点), PreferNoSchedule(尽量不在此节点),以及 NoExecute(驱逐现有pod,并阻止未来的新 pod 创建). #### 示例: 假设我们要把名为 "special-node" 的节点设为仅供 GPU 工作使用的状态,则可以执行类似下面这样的指令: ```bash $ kubectl taint nodes special-node gpu=true:NoSchedule ``` 这将使得普通不含对应 Toleration 设置的服务无法自动部署到这里来. ### 移除污点: 如果你想移除之前设置过的某项或所有项目,也可以利用同样的工具完成清理任务: 要删除单个指定 key=value 组合下的记录: ```shell $ kubectl taint nodes node01 key:value- ``` 如果想清除整个 Node 上的所有关联数据,则可以直接省略掉后面的条件部分直接加减号即可实现全量清空效果: ```shell $ kubectl taint nodes node01 - ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值