kubectl申请一个revHistoryLimit为0的deployment不删除旧副本集
Kubectl apply for a deployment with revHistoryLimit 0 does not delete the old replica set
这是我的部署模板:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
name: XXX
version: {{ xxx-version }}
deploy_time: "{{ xxx-time }}"
name: XXX
spec:
replicas: 1
revisionHistoryLimit : 0
strategy:
type : "RollingUpdate"
rollingUpdate:
maxUnavailable : 0%
maxSurge : 100%
selector:
matchLabels:
name: XXX
version: {{ xxx-version }}
deploy_time: "{{ xxx-time }}"
template:
metadata:
labels:
name: XXX
version: {{ xxx-version }}
deploy_time: "{{ xxx-time }}"
spec:
containers:
- image: docker-registry:{{ xxx-version }}
name: XXX
ports:
- name: XXX
containerPort: 9000
文档中与此问题相关的关键部分是:
Existing Replica Set controlling Pods whose labels match .spec.selector
but whose template does not match .spec.template
are scaled down. Eventually, the new Replica Set will be scaled to .spec.replicas
and all old Replica Sets will be scaled to 0.
http://kubernetes.io/docs/user-guide/deployments/
因此 spec.selector 不应因多个部署而异:
selector:
matchLabels:
name: XXX
version: {{ xxx-version }}
deploy_time: "{{ xxx-time }}"
应该变成:
selector:
matchLabels:
name: XXX
其余标签可以保持不变
这是我的部署模板:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
name: XXX
version: {{ xxx-version }}
deploy_time: "{{ xxx-time }}"
name: XXX
spec:
replicas: 1
revisionHistoryLimit : 0
strategy:
type : "RollingUpdate"
rollingUpdate:
maxUnavailable : 0%
maxSurge : 100%
selector:
matchLabels:
name: XXX
version: {{ xxx-version }}
deploy_time: "{{ xxx-time }}"
template:
metadata:
labels:
name: XXX
version: {{ xxx-version }}
deploy_time: "{{ xxx-time }}"
spec:
containers:
- image: docker-registry:{{ xxx-version }}
name: XXX
ports:
- name: XXX
containerPort: 9000
文档中与此问题相关的关键部分是:
Existing Replica Set controlling Pods whose labels match
.spec.selector
but whose template does not match.spec.template
are scaled down. Eventually, the new Replica Set will be scaled to.spec.replicas
and all old Replica Sets will be scaled to 0.
http://kubernetes.io/docs/user-guide/deployments/
因此 spec.selector 不应因多个部署而异:
selector:
matchLabels:
name: XXX
version: {{ xxx-version }}
deploy_time: "{{ xxx-time }}"
应该变成:
selector:
matchLabels:
name: XXX
其余标签可以保持不变