【发布时间】:2020-09-07 02:42:04
【问题描述】:
我创建了一个带有活动性和就绪性探测以及初始延迟的部署,效果很好。如果我想用启动探测替换初始延迟,则使用 kubectl apply 创建时,startupProbe 键及其嵌套元素永远不会包含在部署描述符中,并在保存后从 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.com/ubuntu/microk8s/issues/770)。我认为这对于 GKE 集群是不可能的,因为它们不会公开这些文件,这可能是有充分理由的。
我假设该功能需要启用,因为它位于功能门之后。如何在版本 >= 1.16 的 Google Kubernetes Engine (GKE) 集群上启用它?目前我正在使用常规频道 1.16.8-gke.15 的默认值。
【问题讨论】:
标签: kubernetes google-kubernetes-engine kubernetes-1.16 startup-probe