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

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


1、名称空间(namespace)

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

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

kubectl get namespace

k8s--基础--12.5--pod--名称空间,标签,节点名称_第1张图片

2、pod标签(pod label)

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

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

kubectl get pods --show-labels 

在这里插入图片描述

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

kubectl get pods -l web1 --show-labels 

k8s--基础--12.5--pod--名称空间,标签,节点名称_第2张图片

2.3、修改资源的标签

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

在这里插入图片描述

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个选择所有键等于k1,值为v1的资源。
  2. 第2个选择所有键等于k2,值不等于v2的资源,和那些没有键为k2的label的资源。
案例2
k1=v1,k2!=v2

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

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

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

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

案例2
k1 notin (v1, v2) 

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

3、node标签(node label)

3.1、查看nodes节点的标签

kubectl get nodes --show-labels

在这里插入图片描述

3.2、给node1节点打标签

 
kubectl label nodes node1 k1=v1
kubectl get nodes --show-labels 

在这里插入图片描述

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

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

3.3.1、查看定义

kubectl explain pods.spec.nodeSelector

内容

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/
 

3.3.2、修改web资源的节点

kubectl get pods -o wide

在这里插入图片描述

可以看到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

重新生成资源

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

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

4、节点名称(nodeName)

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

4.1、定义

kubectl explain pods.spec.nodeName

你可能感兴趣的:(k8s,kubernetes,docker,java)