Kubernetes(简称K8S) 是Google开源的分布式的容器管理平台,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。本文主要介绍Kubernetes(K8s) Label(标签)和selector(选择器)。

1、label(标签)

 label(标签)是附加到 pod、复制控制器和服务的键值对。它们被用作识别对象的属性,一个label是 一个key=value的键值对,其中key与value由用户自己指定。label可以被附加到各种资源对象上,例如,Node、Pod、Service、RC等,一个资源对 象可以定义任意数量的label,同一个label也可以被添加到任意数量的 资源对象上。label通常在资源对象定义时确定,也可以在对象创建后动态添加或者删除。

2、selector(选择器)

label(标签)不具唯一性。一般来说,我们可以说许多对象可以带有相同的标签。标签选择器是 Kubernetes 中的核心分组。用户使用它们来选择一组对象。

Kubernetes API 目前支持两种类型的选择器:

1)基于等式的选择器

它们允许按key和value进行过滤。匹配对象应满足所有指定的标签。

2)基于集合的选择器

基于集合的选择器允许根据一组value过滤key。

例如,

apiVersion: v1
kind: Service
metadata:
   name: sp-nginx-standalone
spec:
   ports:
      - port: 7474
      name: nginx
   type: NodePort
   selector:
      app: service
      component: nginx

label标签选择器用作app: service,将component组件用作component: nginx

一旦我们使用kubectl命令运行该文件,它将创建一个名为sp-nginx-standalone的服务,该服务将在8080端口上进行通信。typeNodePort,新的标签选择器为app: servicecomponent: nginx

相关文档:

Kubernetes(K8s) kubectl label 常用命令

推荐文档