概述
kubernetes中有个Label的概念,是用来给集群中的对象打标签的,比如Node, Pod, Service, ReplicationController, ReplicaSet。它采用key=value的形式,在实际运用中这一功能是很有用处的,下面我会着重从给Node打标签为例从各个不同的维度来说明它的神奇的用法。
区分环境
一个发展成熟的互联网公司的产品完整周期包含开发环境、测试环境、预发布环境、生产环境这几个阶段,你可以在你的容器平台中把这几个阶段都包含进去,那怎么区分哪些机器是属于哪种环境呢?这时就用到了Label,比如你可以给测试环境的node1打标签:
kubectl label node node1 zone=test
当然,在实际情况下,开发、测试、预发布、生产这几个环境互相都是不通的或者只是单向通,比如只有生产的机器才能向预发布的机器发送消息,以此类推。如果容器平台需要能操作所有环境,需要网络上打通防火墙。
区分机房
你的容器平台可能会跨多个不同的机房,这样为了把某个应用发布到指定机房就需要在发布的时候指定机房的标签了,比如:
kubectl label node node1 zone=A
区分业务
如果你想在容器平台中给不同的业务分别固定的资源池,就可以给Node打业务标签,比如给广告业务打标签:
kubectl label node node1 business=guanggao