K8s NodeSelector 示例

以nginx部署为例,指定部署到disktype为ssd的节点上。

Deployment File

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      imagePullSecrets: 
      - name: kleven-registry
      containers:
        - name: nginx
          image: kleven-repository:8083/nginx
      nodeSelector:
        disktype: ssd

假如文件名为 nginx-node-selector.yaml:

kubectl create -f nginx-node-selector.yaml

当没有节点匹配时

没有节点匹配时,pod无法被调度,会一直处于Pending状态。

kubectl get pod

NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-6f54d5c657-tp8kr   0/1     Pending   0          2m17s

通过describe可以查看到原因为所有节点(2个节点)都没有和node selector 匹配上。

kubectl describe pod nginx-deployment-6f54d5c657-tp8kr 

Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  34s   default-scheduler  0/2 nodes are available: 2 node(s) didn't match Pod's node affinity/selector.

当有节点匹配到时

我们给其中一个节点打上标签

kubectl label node i-jgdj1gg0 disktype=ssd
node/i-jgdj1gg0 labeled

再去看node,就会发现已经被成功调度,状态已经变成Running。

kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-6f54d5c657-tp8kr   1/1     Running   0          5m48s

我们同样可以通过describe命令查看到完成的Events,并且可以看到container已经成功started。

kubectl describe pod nginx-deployment-6f54d5c657-tp8kr

Events:
  Type     Reason            Age                   From               Message
  ----     ------            ----                  ----               -------
  Warning  FailedScheduling  3m6s (x5 over 7m58s)  default-scheduler  0/2 nodes are available: 2 node(s) didn't match Pod's node affinity/selector.
  Normal   Scheduled         2m47s                 default-scheduler  Successfully assigned default/nginx-deployment-6f54d5c657-tp8kr to i-jgdj1gg0
  Normal   Pulling           2m46s                 kubelet            Pulling image "kleven-repository:8083/nginx"
  Normal   Pulled            2m38s                 kubelet            Successfully pulled image "kleven-repository:8083/nginx" in 7.441114609s
  Normal   Created           2m38s                 kubelet            Created container nginx
  Normal   Started           2m38s                 kubelet            Started container nginx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i余数

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值