代码之家  ›  专栏  ›  技术社区  ›  Hana Alaydrus

部分推出Kubernetes豆荚

  •  0
  • Hana Alaydrus  · 技术社区  · 6 年前

    我有一个节点和三个豆荚。我想在三个豆荚中的一个中展示一个新的图像,另外两个豆荚与旧图像保持一致。有可能吗?

    第二个问题。我试图推出一个包含错误的新图像,并且我已经定义了maxUnavailable。但是kubernetes仍然推出所有的豆荚。我以为一旦库伯内特发现第一个豆荚有错误,库伯内特就会停止把整个豆荚铺开。是否需要手动停止卷展?

    这是我的部署脚本。

    # Service setup
    apiVersion: v1
    kind: Service
    metadata:
      name: semantic-service
    spec:
      ports:
        - port: 50049
      selector:
        app: semantic
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: semantic-service
    spec:
      selector:
        matchLabels:
          app: semantic
      replicas: 3
      strategy:
        type: RollingUpdate
        rollingUpdate:
          maxUnavailable: 1
          maxSurge: 1
      template:
        metadata:
          labels:
            app: semantic
        spec:
          containers:
          - name: semantic-service
            image: something/semantic-service:v2
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Nick_Kh    6 年前

    正如@David Maze在评论中所写,您可以考虑使用 canary 如果可以使用多个标签区分不同版本的部署或同一组件的配置,然后跟踪这些标签并指向不同版本,有关 Canary deployments 可以找到 here . 另一种实现目标的方法是 Blue/Green deployment 如果您希望使用两个尽可能相同的不同环境,并在任何时候以一种全面的方式在蓝/绿环境和回滚部署之间进行切换,请使用。

    回答第二个问题取决于给定图像包含的错误类型以及Kubernetes如何在Pod中识别这个问题,如 maxUnavailable: 1 参数表示在更新期间不可用的最大数量的吊舱。在 Deployment update 在集群部署控制器中,创建一个新的Pod,然后删除旧的Pod,前提是可用Pod的数量匹配 rollingUpdate 策略参数。

    另外,Kubernetes使用 liveness/readiness probes 在部署更新期间检查吊舱是否准备就绪(活动),并使旧吊舱一直运行到 probes 已在新副本上成功。我建议你检查一下 探针 当部署尝试在集群pod上发布更新时,确定pod的状态。