• k8s--基础--12.5--pod--名称空间,标签,节点名称


    k8s–基础–12.5–pod–名称空间,标签,节点名称


    1、名称空间(namespace)

    1. 可以把k8s集群划分成多个名称空间,然后对不同的名称空间的资源做隔离
      1. 可以将不同命名空间,当成不同的虚拟主机
    2. 可以控制各个名称空间的入栈,出栈策略
    3. 是一种在多个用户之间划分群集资源的方法

    1.1、查看k8s集群当前有哪些名称空间

    kubectl get namespace
    
    • 1

    在这里插入图片描述

    2、pod标签(pod label)

    1. 是多对 key/value
      1. key值必须是唯一的
    2. 作用:
      1. 可以用来划分特定组的对象(比如版本,服务类型等)
      2. 告诉我们这个Pod是干什么的
    3. 标签可以在创建一个对象的时候直接给与,也可以在后期随时修改
    4. 每一个对象可以拥有多个标签

    2.1、查看所有pod资源对象的标签

    kubectl get pods --show-labels 
    
    • 1

    在这里插入图片描述

    2.2、查看拥有web1这个标签的资源对象,并且把标签显示出来

    kubectl get pods -l web1 --show-labels 
    
    • 1

    在这里插入图片描述

    2.3、修改资源的标签

    # 给web资源新增标签 K1=V1
    kubectl label pods web K1=V1
    # 查看
    kubectl get pods --show-labels
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    2.4、k8s的标签选择器

    1. 通过标签选择器,客户端/用户能方便辨识出一组对象。
    2. 目前支持两种标签选择器:
      1. 基于等值的标签选择器
      2. 基于集合的标签选择器
    3. 一个label选择器可以由多个条件组成,由逗号分隔。而逗号起着AND逻辑运算符的作用。
    4. 一个空的label选择器(即有0个必须条件的选择器)会选择集合中的每一个对象。
    5. 一个null型label选择器(仅对于可选的选择器字段才可能)不会返回任何对象。

    2.4.1、基于等值关系的标签选择器

    1. 基于相等性或者不相等性的条件允许用label的键或者值进行过滤。
    2. 支持三种运算符
      1. “=” :代表相等性
      2. “==”:代表相等性
      3. “!=”:代表非相等性

    案例1

    k1=v1  k2!=v2
    
    • 1
    1. 第1个选择所有键等于k1,值为v1的资源。
    2. 第2个选择所有键等于k2,值不等于v2的资源,和那些没有键为k2的label的资源。

    案例2

    k1=v1,k2!=v2
    
    • 1

    所有键等于k1,值为v1,且键等于k2,值不等于v2的资源

    2.4.2、基于集合的标签选择器:

    1. 允许用一组值来过滤键。
    2. 支持三种操作符
      1. in
      2. notin
      3. exists(仅针对于key符号)

    案例1

    k1 in (v1, v2) 
    
    • 1

    选择所有键等于k1 ,且值等于v1或者v2的资源。

    案例2

    k1 notin (v1, v2) 
    
    • 1

    选择所有键等于k1且值是除了v1, v2之外的资源,和那些没有label的键是 k1 的资源。

    3、node标签(node label)

    3.1、查看nodes节点的标签

    kubectl get nodes --show-labels
    
    • 1

    在这里插入图片描述

    3.2、给node1节点打标签

     
    kubectl label nodes node1 k1=v1
    kubectl get nodes --show-labels 
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    3.3、节点标签选择器(nodeSelector)

    1. 可以限制pod运行在哪个节点上

    3.3.1、查看定义

    kubectl explain pods.spec.nodeSelector
    
    • 1

    内容

    KIND:     Pod
    VERSION:  v1
    
    FIELD:    nodeSelector 
    
    DESCRIPTION:
         NodeSelector is a selector which must be true for the pod to fit on a node.
         Selector which must match a node's labels for the pod to be scheduled on
         that node. More info:
         https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3.3.2、修改web资源的节点

    kubectl get pods -o wide
    
    • 1

    在这里插入图片描述

    可以看到web运行在node1上,如果我们想要让它运行在master上,就需要用到节点选择器

    修改配置pod.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: web
      namespace: default
      labels:
        web1: tomcat
    spec:
      containers:
      - name: tomcat1
        image: tomcat:8.5-jre8-alpine
        imagePullPolicy: IfNotPresent
      nodeSelector: 
        k1: v1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    重新生成资源

    kubectl delete -f /root/k8s/test/pod.yaml
    kubectl apply -f /root/k8s/test/pod.yaml
    kubectl get pods -o wide 
    
    • 1
    • 2
    • 3

    显示pod运行在node1上
    如果node1和node2都有k1这个标签,那么nodeSelector则根据调度策略调度pod到相应节点上

    4、节点名称(nodeName)

    1. 指定pod节点运行在哪个具体node上
    2. 不存在调度说法

    4.1、定义

    kubectl explain pods.spec.nodeName
    
    • 1
  • 相关阅读:
    2023_Spark_实验十:RDD基础算子操作
    电脑如何截屏?一起来揭晓答案!
    0基础学习PyFlink——使用Table API实现SQL功能
    发了3000个短视频作品才总结出的9点快速破播放的技巧
    【数据结构初阶】一. 复杂度讲解
    部署 TiDB Lightning
    墨天轮沙龙 | 庚顿数据姚羽:实时数据技术赋能流程工业,保障业务连续性
    【Python自然语言处理】隐马尔可夫模型中维特比(Viterbi)算法解决商务选择问题实战(附源码 超详细必看)
    前端重绘重排
    数据治理-GDPR准则
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/126232297