k8s之Label学习

1.Label

Label机制是K8S中一个重要设计,通过Label进行对象弱关联,灵活地分类和选择不同服务或业务,让用户根据自己特定的组织结构以松耦合方式进行服务部署。

Label是一对KV,对用户而言非常有意义的,但对K8S本身而言没有直接意义的。Label可以在创建对象时指定,也可以在后期修改,每个对象可以拥有多个标签,但key值必须是唯一的。

Label可随意定义,但建议可读性,比如设置Pod的应用名称和版本号等。另外Lable是不具有唯一性的,为了更准确标识资源对象,应为资源对象设置多维度的label。


2.Label选择器

label选择器(selector)是K8S中核心的组织原语,通过label选择器,客户端能方便辨识和选择一组资源对象。API目前支持两种选择器:基于相等的和基于集合的。

使用基于相等的选择器时,选择器的所有键值和其他资源对象的label键值完全相同(包括数量,key和value),才能匹配。

而使用基于集合的label选择器,只要选择器部分键值匹配其他资源对象的label,就算匹配。选择器可以由一个以上条件(KV键值)组成,在多个条件的情况下,所有条件都必须满足。
 

3.Label实验

1).以pod_busybox.yml文件为例:内容如下:

apiVersion: v1
kind: Pod
metadata:
  name: busybox-pod
  labels:
    app: busybox
spec:
  nodeSelector:
    hardware:good  # 通过这个文件创建的pod是要选择在label哦hardware:good上的node(指k8s节点)上
  containers:
  - name: busybox-container
    image: busybox
    command:
      - sleep
      - "360000"

2).创建pod

kubectl create -f pod_busybox.yml

k8s之Label学习_第1张图片

上图可以看出创建的pod并没有运行,而是挂起,由于本环境就一个k8snode,node上没有配置label,所以找不到hardware:good的label的node

k8s之Label学习_第2张图片

3).给w1添加label

kubectl label node node名称 hardware=good设置label

查看label是否创建成功

k8s之Label学习_第3张图片

然后等待一会查看pod的状态是否由pedding变成running了

 

 

你可能感兴趣的:(容器docker)