• kubernetes之Pod分配到指定Node


    简介

    此文主要讲述如何将Pod分配到指定Node节点

    备注:此文档参考官方文档,并加以自己的理解。如有误导性的内容,请批评指正。

    给Node添加标签

    1、查看当前集权中,所有node的标签

    # kubectl get nodes --show-labels
    
    

    输出结果如下:

    NAME           STATUS   ROLES    AGE   VERSION   LABELS
    k8s-master01   Ready    master   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master01,kubernetes.io/os=linux,node-role.kubernetes.io/master=
    k8s-master02   Ready    master   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master02,kubernetes.io/os=linux,node-role.kubernetes.io/master=
    k8s-master03   Ready    master   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master03,kubernetes.io/os=linux,node-role.kubernetes.io/master=
    k8s-node01     Ready    <none>   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node01,kubernetes.io/os=linux
    k8s-node02     Ready    <none>   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node02,kubernetes.io/os=linux
    k8s-node03     Ready    <none>   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node03,kubernetes.io/os=linux
    k8s-node04     Ready    <none>   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node04,kubernetes.io/os=linux
    

    2、选择一个node节点,打上labels

    # kubectl label nodes k8s-node04 disktype=ssd
    

    3、查看node上的标签

    # kubectl get nodes k8s-node04 --show-labels
    

    输出如下:

    NAME         STATUS   ROLES    AGE   VERSION   LABELS
    k8s-node04   Ready    <none>   25d   v1.17.0   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disktype=ssd,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node04,kubernetes.io/os=linux
    

    从上输出结果中看出,k8s-node04节点的labels打上了disktype=ssd标签

    创建一个调度到指定Node的Pod

    此Pod配置文件描述了具有节点选择器(磁盘类型为ssd)的Pod。 这意味着,将在具有disktype = ssd标签的节点上调度Pod。文件:pod-nginx.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      labels:
        env: test
    spec:
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: IfNotPresent
      nodeSelector:
        disktype: ssd
    

    创建Pod

    # kubectl apply -f /root/k8s-example/pods/pod-nginx.yaml
    

    查看Pod详情

    # kubectl get pods -o wide
    

    从输出结果看,该Pod已被调度到指定的k8s-node04

    NAME                                READY   STATUS             RESTARTS   AGE    IP                NODE         NOMINATED NODE   READINESS GATES
    nginx                               1/1     Running            0          107s   100.88.217.86     k8s-node04   <none>           <none>
    

    创建一个调度到指定Node的Pod

    也可以用nodeName选择调度到指定Node节点上。

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
    spec:
      nodeName: k8s-node1
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: IfNotPresent
    

    总结

    1、Pod调度到指定Node上有两种方法:

    • node打上labels,通过nodeSelect调度到含有指定lables的Node上
    • nodeName指定Node的名称。
  • 相关阅读:
    Oracle执行计划(三)
    执行计划-数据访问方式(全表扫描与4种索引的方式)
    比较两个文件内容是否相同
    设置myeclipse控制台输出到文件中
    Java出现NoSuchElementException异常
    Spring-Aop编程(三)-AspectJ
    Spring AOP编程(二)-AOP实现的三种方式
    Spring AOP编程(一)-AOP介绍
    java.lang.OutOfMemoryError: GC overhead limit exceeded异常处理
    Spring 属性依赖注入
  • 原文地址:https://www.cnblogs.com/mcsiberiawolf/p/12220871.html
Copyright © 2020-2023  润新知