k8s集群调度之固定节点调度

1. 指定调度节点

1.1. 实例一:

  • pod.spec.nodeName将pod直接调度到指定的Node节点上,会跳过Scheduler的调度策略,该匹配规则是强制匹配。
vim  pod.yaml 

apiVersion: apps/v1  #这指定了使用的Kubernetes API版本是apps/v1
kind: Deployment    #指定要创建的对象类型,这里是deployment
metadata:    #元数据信息,包括对象的名称、标签等信息
  name: my-nginx   #对象的名称,这里是 my-nginx
spec:       #指定deployment对象的配置信息
  replicas: 4   #指定需要运行的副本数,这里是 4
  selector:     #指定选择器,用于选择需要管理的 Pod
    matchLabels:   # #匹配标签,这里是 app: my-app,表示选择具有 app=my-app 标签的Pod
      app: my-app
  template:   #指定 Pod 的模板,用于创建和管理 Pod
    metadata:  #Pod 元数据信息,包括标签等信息
      labels:   #Pod 标签,这里是 app: my-app
        app: my-app
    spec:   #Pod 配置信息
      nodeName: node1  #这指定了Pod所需运行的节点名称为"node1",这将使Pod只能运行在具有该名称的节点上
      containers:   #容器列表
        - name: my-nginx  #容器名称
          image: nginx   #容器使用的镜像
          imagePullPolicy: IfNotPresent   #本地不存在镜像时才尝试拉取新镜像
          ports:   #容器对外暴露的端口号,这里是 80,表示将容器的 80 端口映射到集群中的一个随机端口上
          - containerPort: 80  

//创建pod
[root@master1 scheduler]# kubectl apply -f  pod.yaml
deployment.apps/my-nginx created

//查看pod是不是所有都在node1节点创建
[root@master1 scheduler]# kubectl get pod -o wide
NAME                        READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
my-nginx-6994b6475f-m2bmt   1/1     Running   0          10s   10.244.1.66   node1   <none>           <none>
my-nginx-6994b6475f-t6k8g   1/1     Running   0          10s   10.244.1.69   node1   <none>           <none>
my-nginx-6994b6475f-v88zq   1/1     Running   0          10s   10.244.1.67   node1   <none>           <none>
my-nginx-6994b6475f-xllf4   1/1     Running   0          10s   10.244.1.68   node1   <none>           <none>

1.2. 实例二:

  • pod.spec.nodeSelector:通过k8s的label-selector机制选择节点,由调度器调度策略匹配label,而后调度pod到目标节点,该匹配规则属于强制约束
vim  pod.yaml


apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 4
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      nodeSelector:    #指定Pod应该运行在具有特定节点标签的节点上,这里选择具有disk: ssd标签的节点
        disk: ssd
      containers:
        - name: my-nginx
          image: nginx
          imagePullPolicy: IfNotPresent
          ports:
          - containerPort: 80

//在node1上打标签为disk=ssd
[root@master1 scheduler]# kubectl label nodes node1 disk=ssd
node/node1 labeled

//创建pod
[root@master1 scheduler]# kubectl apply -f pod.yaml
deployment.apps/my-nginx created


//查看pod创建是否在node1节点创建:
[root@master1 scheduler]# kubectl get pod -o wide
NAME                        READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
my-nginx-5d8fbfdd98-52m26   1/1     Running   0          8s    10.244.1.79   node1   <none>           <none>
my-nginx-5d8fbfdd98-gf5bg   1/1     Running   0          8s    10.244.1.78   node1   <none>           <none>
my-nginx-5d8fbfdd98-mt5jf   1/1     Running   0          8s    10.244.1.80   node1   <none>           <none>
my-nginx-5d8fbfdd98-wbq64   1/1     Running   0          8s    10.244.1.81   node1   <none>           <none>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值