k8s yaml文件中标记策略的不同值之间有什么区别

时间:2018-07-05 06:47:58

标签: kubernetes

我用两个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命令更新部署。 似乎只有新广告连播的开始时间有所不同。 并且当新容器启动失败并丢失图像时,在两种情况下旧容器将在最后终止。

有人知道吗?

非常感谢〜

1 个答案:

答案 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}")命令,您可以重新创建策略并重建对象,但不能进行更新。