GKE 1.18 中未使用的启动探测
Startup probes not used in GKE 1.18
我最近将我们项目中使用的 GKE 集群更新到版本 1.18.16-gke.1200。我们一直期待的功能之一是启动探测器。根据 overview of feature gates on Kubernetes' site,启动探测器在 Kubernetes 1.18 版本进入 Beta 阶段,应该默认启用,除非在 kubelet 配置中明确禁用。在使用 minikube 部署的 1.18 集群上,Deployment 已正确发现其启动探测器:
在 GKE 1.18 集群上没有提到探测:
两个部署都有 API 版本 apps/v1
并且具有相同的探测配置,但是 GKE 忽略启动探测一。
我已经对 GKE 集群执行了 kubectl cluster-info dump
以确定 kubelet 的 --feature-gates
标志的参数,如果 StartupProbe
没有被 Google 禁用的话对于那个版本。但是,dump 返回的唯一特征门信息是 kube-proxy 容器的参数,如下所示:--feature-gates=DynamicKubeletConfig=false,RotateKubeletServerCertificate=true
。转储中根本没有提到启动探测器,这意味着应该启用探测器。
GKE release notes does not seem to mention startup probes anywhere, even in the entry about introducing version 1.20 探针进入 GA 的地方,尽管提到了一些其他功能 (RuntimeClass) 的毕业。会不会是 Google 出于某种原因阻止在 GKE 中引入启动探测器?有没有其他方法可以为 GKE 1.18 版启用启动探测?我不再使用 alpha 集群,而且探针不再是 alpha 功能。
我已经意识到我应该在我的问题中提到的非常明显的事情:我正在使用 Helm 来部署我的应用程序。由于 Helm 只是生成 Kubernetes YAML 并将其应用于集群,因此在应用于 GKE 1.16 集群时忽略了启动探测配置。
解决方案非常简单:重新部署所有 Helm Charts,以便集群正确处理生成的模板(包括启动探测信息)。
希望这对某些人也有帮助。
我最近将我们项目中使用的 GKE 集群更新到版本 1.18.16-gke.1200。我们一直期待的功能之一是启动探测器。根据 overview of feature gates on Kubernetes' site,启动探测器在 Kubernetes 1.18 版本进入 Beta 阶段,应该默认启用,除非在 kubelet 配置中明确禁用。在使用 minikube 部署的 1.18 集群上,Deployment 已正确发现其启动探测器:
在 GKE 1.18 集群上没有提到探测:
两个部署都有 API 版本 apps/v1
并且具有相同的探测配置,但是 GKE 忽略启动探测一。
我已经对 GKE 集群执行了 kubectl cluster-info dump
以确定 kubelet 的 --feature-gates
标志的参数,如果 StartupProbe
没有被 Google 禁用的话对于那个版本。但是,dump 返回的唯一特征门信息是 kube-proxy 容器的参数,如下所示:--feature-gates=DynamicKubeletConfig=false,RotateKubeletServerCertificate=true
。转储中根本没有提到启动探测器,这意味着应该启用探测器。
GKE release notes does not seem to mention startup probes anywhere, even in the entry about introducing version 1.20 探针进入 GA 的地方,尽管提到了一些其他功能 (RuntimeClass) 的毕业。会不会是 Google 出于某种原因阻止在 GKE 中引入启动探测器?有没有其他方法可以为 GKE 1.18 版启用启动探测?我不再使用 alpha 集群,而且探针不再是 alpha 功能。
我已经意识到我应该在我的问题中提到的非常明显的事情:我正在使用 Helm 来部署我的应用程序。由于 Helm 只是生成 Kubernetes YAML 并将其应用于集群,因此在应用于 GKE 1.16 集群时忽略了启动探测配置。
解决方案非常简单:重新部署所有 Helm Charts,以便集群正确处理生成的模板(包括启动探测信息)。
希望这对某些人也有帮助。