apiVersion: v1 kind: ReplicationController metadata: name: rc-demo spec: replicas: 3 selector: app: rc-demo template: metadata: labels: app: rc-demo1 spec: containers: - name: rc-demo-container image: wangyanglinux/myapp:v1.0 env: - name: GET_HOSTS_FROM value: dns name: zhangsan value: "123" ports: - containerPort: 80
selector 去点名,而它自己创建出来的新 Pod 带着 template.metadata.labels 的铭牌。如果这两个标签不一样,RC 创建出来的新 Pod 就不在它的“点名册”上! 这会导致 RC 认为 Pod 数量不够,从而无限循环地创建新 Pod,最终把集群资源耗尽。selector 和 template.metadata.labels 必须匹配,否则 API 会直接拒绝你的创建请求。app=rc-demo。selector 也是 app=rc-demo,期望副本数是 3。selector(点名册)是一个全局搜索条件。kubectl apply 创建的,或者是别的程序创建的。app=rc-demo 标签改掉。RC 下次点名时发现少了一个,就会自动去创建一个新 Pod;而你那个有 Bug 的 Pod 就成了“无人托管”的状态,你可以慢慢排查。selector,这个 Pod 瞬间就会被另一个 RC 接管