配置标签
本文主要介绍在创建或部署应用时为应用的Pod配置标签。在集群中有大量的应用时,使用标签能够方便地对配置了特定标签的Pod进行分组管理。
背景信息
在微服务架构中,K8s集群中可能会部署大量的应用,且不同的应用可能存在多个版本,此时集群中会出现大量的Pod。基于K8s的Label在EDAS控制台对应用配置Label,能够为该应用的所有Pod配置标签,以键值对的形式对一组Pod进行标识。结合标签选择器,能够在大量的Pod中筛选出具有特定标签标识的一组Pod。
操作步骤
此处以部署应用的操作为例,讲解如何进行标签配置。
登录EDAS控制台。
在左侧导航栏,单击 ,在顶部菜单栏选择地域并在页面上方选择命名空间,在集群类型下拉列表,选择K8s集群,然后在页面单击具体的应用名称。
- 在应用总览页面右上角选择 。
- 在选择部署模式页面的其中一种部署模式区域的右上角单击开始部署。重要 本文以单批发布为例来说明操作步骤。
- 在单批发布页面,修改部署参数,并展开标签(Label)配置。
- 进行自定义标签键值对配置,根据您的需求完成配置后单击确定。
等待应用部署成功后,通过kubectl命令根据指定标签键值查询Pod。
kubectl get pod -l demo-app-name=sc-server-demo
结果示例如下:
NAME READY STATUS RESTARTS AGE sc-server-demo-group-1-1-5795d5487c-**** 2/2 Running 0 2m58s
基于Label实现应用亲和性
在部署K8s应用时,我们通常需要考虑不同组件间的依赖关系,比如将某些Pod调度到同一拓扑域下,或不能将某些Pod调度到同一拓扑域。此时为应用配置Label可以辅助配置自定义的应用亲和性和反亲和性。下面将介绍如何通过Label实现应用亲和性。
前提条件
已经按照操作步骤部署了标签为demo-app-name=sc-server-demo的应用。
登录EDAS控制台。
在左侧导航栏,单击 ,在顶部菜单栏选择地域并在页面上方选择命名空间,在集群类型下拉列表,选择K8s集群,然后在页面单击具体的应用名称。
- 在应用总览页面右上角选择 。
- 在选择部署模式页面的其中一种部署模式区域的右上角单击开始部署。重要 本文以单批发布为例来说明操作步骤。
- 在单批发布页面,修改应用的环境和部署包信息后,展开调度规则。选择模式配置为自定义配置,在应用亲和性页签添加规则,参数配置如下:
- 拓扑域选择
kubernetes.io/hostname
- 应用标签名配置为
demo-app-name
- 操作符号选择
In
- 应用标签值配置为
sc-server-demo
等待应用部署成功后,通过kubectl命令检查两个应用Pod所在的节点。
kubectl get pod -l demo-app-name=sc-client-demo -o wide kubectl get pod -l demo-app-name=sc-server-demo -o wide
结果示例如下:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES sc-client-demo-group-1-1-5c5cbb9889-**** 2/2 Running 0 24s 10.85.***.*4 cn-hangzhou.192.168.AAA.BBB <none> <none> NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES sc-server-demo-group-1-1-5795d5487c-**** 2/2 Running 0 35m 10.85.***.*3 cn-hangzhou.192.168.AAA.BBB <none> <none>
从结果中可以看到两个应用Pod所在节点为同一节点。
- 拓扑域选择