我用两个Yaml文件进行了测试,只是标签策略不同
第一个:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
test.k8s: test
name: test
spec:
replicas: 1
strategy:
type: Recreate
template:
metadata:
labels:
test.k8s: test
spec:
containers:
- name: test
image: alpine3.6
imagePullPolicy: IfNotPresent
...
第二个:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
test.k8s: test
name: test
spec:
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
labels:
test.k8s: test
spec:
containers:
- name: test
image: alpine3.6
imagePullPolicy: IfNotPresent
...
然后我用kubectl补丁和kubectl replace命令更新部署。 似乎只有新广告连播的开始时间有所不同。 并且当新容器启动失败并丢失图像时,在两种情况下旧容器将在最后终止。
有人知道吗?
非常感谢〜
答案 0 :(得分:0)
基本上,.spec.strategy.type==Recreate
标签指定集群引擎如何用新的Pod替换旧的Pod。
对于您而言,.spec.strategy.type==RollingUpdate
标签告诉集群引擎在创建新Pod之前终止(杀死)所有现有Pod。
对于第二个示例,.spec.strategy.rollingUpdate.maxUnavailable
标签描述了在没有临时中断的情况下更新服务的方法,因为它涉及到每次更新一个pod以避免服务不可用的情况。
在您的示例中,有两个参数定义RollingUpdate策略:
.spec.strategy.rollingUpdate.maxSurge
-指示更新过程中不可用的Pod的最大数量。
RollingUpdate
-指定可以在所需数量的Pod上最多创建的Pod。
您可以考虑在kubectl replace
中使用几个其他参数,有关更多信息,请参考Documentation。
通过使用GetMapping("/register/{Id}")
命令,您可以重新创建策略并重建对象,但不能进行更新。