k8s指定node调度

概述

  • 在使用过程中,如果希望指定的pod放在自己希望的node节点上可以进行调度,选择对应的node节点。
    k8s指定node调度_第1张图片
  • 可以看出可以使用节点的ip地址或者是在node节点添加标签,让pod调度器使用selector进行选择,这里我将使用两种方法,将主服务的beego端放在node1上,将判题器的两个judger放在node2上,judger1使用ip选择,judger2使用lable选择。

调度

nodename调度

apiVersion: apps/v1
kind: Deployment
metadata:
  name: unioj-judger-deployment
  namespace: default
spec:
  selector:
    matchLabels:
      app: unioj-judger
  replicas: 1
  template:
    metadata:
      labels:
        app: unioj-judger
    spec:
      nodeName: k8s-node2
      restartPolicy: Always
      containers:
      - name: unioj-judger
        image: registry.cn-beijing.aliyuncs.com/uyistcoj/unioj-judger
        imagePullPolicy: Always
        ports:
        - containerPort: 7999
        resources:
          requests:
            memory: 100Mi
            cpu: 400m
        livenessProbe:
          httpGet:
            path: /healthy
            port: 7999
          initialDelaySeconds: 3
          periodSeconds: 3
          successThreshold: 1        # 健康阀值 
  • 问题:直接使用192.168.10.66会导致pending一直无法调度,故而使用node的名字,估摸着是集群不认识ip

lable调度

打标签

  • 打标签
kubectl label nodes <node-name> <label-key>=<label-value> 
  • 查看标签
[root@k8s-master1 pods]# kubectl get node --show-labels
NAME          STATUS   ROLES                  AGE   VERSION   LABELS
k8s-master1   Ready    control-plane,master   30d   v1.21.2   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master1,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=
k8s-node1     Ready    <none>                 30d   v1.21.2   beta

你可能感兴趣的:(k8s,云计算,云原生,k8s)