我在 Kubernetes 上使用带有postStart
钩子的 MySQL,它应该在数据库启动后运行查询。
这是我的相关部分template.yaml
:
spec:
containers:
- name: ${{APP}}
image: ${REGISTRY}/${NAMESPACE}/${APP}:${VERSION}
imagePullPolicy: Always
lifecycle:
postStart:
exec:
command:
- /bin/sh
- -c
- hostname && sleep 12 && echo $QUERY | /opt/rh/rh-mysql80/root/usr/bin/mysql
-h localhost -u root -D grafana
-P 3306
ports:
- name: tcp3306
containerPort: 3306
readinessProbe:
tcpSocket:
port: 3306
initialDelaySeconds: 15
timeoutSeconds: 1
livenessProbe:
tcpSocket:
port: 3306
initialDelaySeconds: 120
timeoutSeconds: 1
当 pod 启动时,数据库的 PVC 被损坏并且 pod 崩溃。当我重新启动 pod 时,它可以工作。我猜查询会在数据库尚未启动时运行。我想这可能会通过 readinessprobe 解决,但我不是这些主题的专家。
有没有其他人遇到过类似的问题并知道如何解决?