AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
通常情况下不建议更新 Deployment 的标签选择器,因为这样会导致 Deployment 选择的 Pod 列表发生变化,可能与其他控制器发生冲突。 1. 添加标签选择器 在添加标签选择器时,注意要同步修改 Deployment 配置的 Pod 标签,为 Pod 添加新的标签。 这里有点不同的是,添加标签选择器无法向后兼容,新的标签选择器不会匹配和使用旧选择器创建的 ReplicaSets 和 Pod,因此添加新的选择器会导致所有旧版本的 ReplicaSets 和由旧 ReplicaSets 创建的 Pod 处于孤立状态,即:不会被系统自动删除,也不受新的 ReplicaSet 控制。 向字段`spec.selector.matchLabels`和字段`spec.template.matedata.labels`同时添加标签`k8s: nginx-pod`,使用如下命令进行修改: ~~~bash $ kubectl edit deployment/nginx-deployment deployment.extensions/nginx-deployment edited ~~~ 查看更新后的 Deployment、RS、Pods: ~~~bash # 可以看到更新完成 $ kubectl get deployment/nginx-deployment NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 3/3 3 3 3h58m # 创建了新的 RS: $ kubectl get rs nginx-deployment-8ff4cd577 NAME DESIRED CURRENT READY AGE nginx-deployment-5754944d6c 0 0 0 3h58m nginx-deployment-7448597cd5 3 3 3 101m nginx-deployment-8ff4cd577 3 3 3 88s # 使用新的 RS nginx-deployment-8ff4cd577 创建了 3 个 Pod,可以发现之前的 3 个 Pod 依然存在着,没有被删除 $ kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-7448597cd5-7c9ms 1/1 Running 0 101m nginx-deployment-7448597cd5-h6k89 1/1 Running 0 100m nginx-deployment-7448597cd5-m8dnk 1/1 Running 0 100m nginx-deployment-8ff4cd577-8gxw2 1/1 Running 0 95s nginx-deployment-8ff4cd577-8plkw 1/1 Running 0 95s nginx-deployment-8ff4cd577-g7bc2 1/1 Running 0 95s ~~~ 2. 更新标签选择器 比如更新选择器中标签的键或值,这种做法产生的效果与添加新选择器标签类似。 3. 删除标签选择器 从 Deployment 的标签选择器中删除一个或多个标签,该 Deployment 的 ReplicaSet 和 Pod 不会受到任何影响,只是被删除的标签依然会存在与现有的 ReplicaSet 和 Pod 上。