一、概念

我们在创建pod资源是,k8s集群系统会给我们将pod资源随机分配到不同服务器上。我们通过配置nodeSelector可以将pod资源指定到拥有某个标签的服务器上。

[root@master deployment-demo]# cat nodeselector.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dm02
spec:
  replicas: 5
  selector:
    matchLabels:
      k8s: dolphin
  template:
    metadata:
      name: pod01
      labels:
        k8s: dolphin
    spec:
      containers:
      - name: c1
        image: nginx
        ports:
        - containerPort: 80
[root@master deployment-demo]# kubectl apply -f nodeselector.yaml 

 我们可以看到资源被随机分配到两台服务器上

二、使用

1. 查看节点的标签

2. 给集群节点打标签

# 查看节点名称

[root@master deployment-demo]# kubectl get nodes
NAME     STATUS   ROLES                  AGE   VERSION
master   Ready    control-plane,master   25d   v1.23.5
node1    Ready    <none>                       25d   v1.23.5

node2    Ready    <none>                       24d   v1.23.5

# 给节点打标签

[root@master deployment-demo]# kubectl label node node1 k8s=node1
node/node1 labeled
[root@master deployment-demo]# kubectl label node node2 k8s=node2
node/node2 labeled

使用命令查看节点标签 kubectl get nodes --show-labels

如下图,说明成功打上标签

3.编辑修改nodeselector.yaml 添加nodeSelector选择调度资源标签

[root@master deployment-demo]# cat nodeselector.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dm02
spec:
  replicas: 5
  selector:
    matchLabels:
      k8s: dolphin
  template:
    metadata:
      name: pod01
      labels:
        k8s: dolphin
    spec:
      nodeSelector:
        k8s: node1

      containers:
      - name: c1
        image: nginx
        ports:
        - containerPort: 80
[root@master deployment-demo]# kubectl apply -f nodeselector.yaml 
 

查看命令kubectl get pod -o wide,看到全都调度到了节点1上,使用成功

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐