【问题标题】:How to externally check Kubernetes readiness on deployment?如何在外部检查 Kubernetes 的部署准备情况?
【发布时间】:2019-08-26 17:05:56
【问题描述】:

我们的目标是确保部署成功并且服务可用
我们已经遇到过Ingress 角色未正确配置且 API 已关闭的情况

我们考虑部署到 staging 命名空间,从集群外部调用 readiness如果一切顺利,将部署移动到其生产命名空间如果没有,删除暂存并将部署声明为失败。

有没有更好的方法来处理这种情况?

【问题讨论】:

  • 你在使用helm进行部署吗?
  • @BimalVasan 是的,我愿意,目前正在运行helm upgrade --install --wait ...
  • 我认为这不是一个好主意。健康检查旨在检测 pod 故障,而不是入口错误配置。
  • @efratlevitan 我没注意使用健康检查;我可以使用专用 API 或现有 API,问题在于方法。
  • 我们有两个级别的检查。如果 pod/app 没有启动,首先通过 helm 图表和部署文件中的就绪探测。然后我们使用外部 url 进行冒烟测试。

标签: deployment kubernetes continuous-deployment azure-aks


【解决方案1】:

使用 kubernetes namespaces 进行暂存和生产是个好主意。

另一种方法是:

  1. 创建一个暂存 kubernetes 集群并在其中安装部署、服务和入口。
  2. 从暂存集群外部测试暂存集群中部署、服务和入口的准备情况。
  3. 如果一切正常,则将部署移至生产集群。

  4. 使用kubectlconfigcontextswitch between staging cluster and production cluster

    apiVersion: v1
    kind: Config
    preferences: {}
    clusters:
    - cluster:
      name: staging
    - cluster:
      name: production
    ...
    

【讨论】:

  • 谢谢,这看起来是一个不错的方法,但是,由于我们有多个集群(不同的区域),所以我们拥有比实际需要多两倍的集群并不实用
  • 您可以重复使用单个暂存集群(其中包含多个暂存命名空间)来测试多个生产集群的部署,并使用kubectlhelm 在集群/配置/上下文之间跳转/namespaces - 不知道这是否适合你。
  • 我希望它这么简单,我不认为我可以为不同区域的集群切换配置。 Azure 顺便说一句
猜你喜欢
  • 2019-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
  • 2019-10-14
  • 2020-06-13
  • 2019-01-06
相关资源
最近更新 更多