kubectl rollout status—命令何时完成?



目前我在我的管道中使用这个

kubectl apply -f deployment.yaml && kubectl rollout status -f deployment.yaml

在yaml

readinessProbe:
tcpSocket:
port: 90
initialDelaySeconds: 120
periodSeconds: 10
timeoutSeconds: 10
failureThreshold: 1
successThreshold: 1
livenessProbe:
tcpSocket:
port: 90
initialDelaySeconds: 120
periodSeconds: 20
timeoutSeconds: 2
failureThreshold: 1
successThreshold: 1

对我来说,kubectl rollout运行了很长时间,阻塞了部署管道。从文档

默认情况下'rollout status'将监视最近一次rollout的状态,直到它完成

我的问题:

1/在部署完成之前,哪些动作是对部署做出贡献的部分;(创建资源,拆除资源?…)

2/readinessProbe和livessprobe对部署时间有贡献吗

这个标准在kubectl源代码中。部署是"完成的"。如果:

  • 未超时
  • 它的更新副本计数至少是它想要的副本计数(每个新的pod已经创建)
  • 它的当前副本计数最多是它的更新副本计数(每个旧pod已被销毁)
  • 它的可用副本计数至少是它的更新副本计数(每个新pod正在运行)

您可以使用kubectl get deployment -wkubectl get pod -w来实时观察实际发生的部署;kubectl get -w选项监视给定的资源,并在资源发生变化时打印出新的一行。您将看到以下顺序发生(使用默认部署设置,一次一个用于"small";部署):

  1. 一个新的pod被创建
  2. 新pod通过探针并准备就绪
  3. 旧pod被终止
  4. 旧pod实际退出并被删除

所以要完成kubectl rollout status deployment/...,所有这些步骤都必须发生-创建新pod,新pod都通过健康检查,旧pod被销毁-对于部署中的每个副本。

kubectl源代码中有另一个参考:https://github.com/kubernetes/kubectl/blob/197123726db24c61aa0f78d1f0ba6e91a2ec2f35/pkg/polymorphichelpers/rollout_status.go L89

如果你看一下日志消息,这是不言自明的。

相关内容

  • 没有找到相关文章

最新更新