我创建了一个部署,其中包含了活力和准备度探针以及初始延迟,工作正常。如果我想用启动探针来替换初始延迟,则会出现以下问题 startupProbe
键及其嵌套的元素永远不会包含在使用 kubectl apply
并在保存后从GKE部署编辑器中的部署yaml中删除。
举个例子:
apiVersion: v1
kind: Namespace
metadata:
name: "test"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-sleep
namespace: test
spec:
selector:
matchLabels:
app: postgres-sleep
replicas: 2
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 50%
template:
metadata:
labels:
app: postgres-sleep
spec:
containers:
- name: postgres-sleep
image: krichter/microk8s-startup-probe-ignored:latest
ports:
- name: postgres
containerPort: 5432
readinessProbe:
tcpSocket:
port: 5432
periodSeconds: 3
livenessProbe:
tcpSocket:
port: 5432
periodSeconds: 3
startupProbe:
tcpSocket:
port: 5432
failureThreshold: 60
periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
name: postgres-sleep
namespace: test
spec:
selector:
app: httpd
ports:
- protocol: TCP
port: 5432
targetPort: 5432
---
用 krichter/microk8s-startup-probe-ignored:latest
被
FROM postgres:11
CMD sleep 30 && postgres
我重用了这个例子,在microk8s的同样问题上,我可以通过更改 kubelet
和 kubeapi-server
配置文件(见 https:/github.comubuntumicrok8sissues770。 以防你感兴趣)。) 我假设这在GKE集群中是不可能的,因为他们不暴露这些文件,可能是出于好的原因。
我假设这个功能需要启用,因为它在一个功能门后面。我如何在版本为>=1.16的Google Kubernetes Engine (GKE)集群上启用它?目前我使用的是常规渠道的默认版本1.16.8-gke.15。
正如我在评论中提到的,我能够在我的测试环境中重现同样的行为,经过研究我找到了原因。
在GKE中,只有当你使用Alpha Cluster时才允许使用特征门。你可以看到一个完整的特征门的列表 此处
我已经创建了一个alpha集群,并应用了同样的yaml,对我来说,它的工作原理是这样的。startupProbe
是有的地方。
所以,你将只能使用 startupProbe
在GKE阿尔法集群中,请按照以下步骤进行。文件 来创建一个新的。
要注意阿尔法集群中的限制。
- 阿尔法集群有以下限制。
- 不包括在... GKE SLA
- 不能升级
- 在alpha集群上,节点自动升级和自动修复被禁用。
- 30天后自动删除
- 不接收安全更新
此外,谷歌不建议用于生产工作负载。
警告: 不要使用Alpha集群或alpha功能的生产工作负载。Alpha集群会在三十天后过期,并且不会收到安全更新。您必须在过期前将数据从阿尔法集群中迁移出来。GKE 不会自动保存存储在 Alpha 群集上的数据。