做项目时发现以前环境里的pod都有名为app的label,但是现场环境里的pod却没有,导致某些以label为app来筛选的业务查询不到对应的pod。
第一种方法-直接给pod打标签
在k8s中,给组件打标签的语法都很类似:
kubectl label deployment/pod/其他 xxxxx -n 命名空间 标签名=标签值 --overwrite
那我给名为imagemanagement-7698dfccc4-vvlhq的pod增加一个标签:
kubectl label pod imagemanagement-7698dfccc4-vvlhq -n testns app=imagemanagement --overwrite
观察业务,发现已经生效,通过label为app来筛选的业务可以查询到该pod了。
第二种方法-更改deployment
在k8s中,我们使用deployment来管理pod,即使当前pod死掉,也会立刻拉起新的pod,使实例数和deployment里配置的一致。
按照方法一只更新当前pod不是长久之计,所以建议使用第二种方法:更改deployment。
kubectl -n testns edit deployments imagemanagement
在编辑操作中,给spc下的template里添加对应label,如图所示: