新年快乐,我有 2 个部署,MySQL 和应用程序,我的应用程序依赖于 MySQL pod,我有 initContainers 确保应用程序在 MySQL pod 完全应用程序并准备好之后运行,但我正在尝试制作下一个场景工作。
我希望应用程序 pod 检查 MySQL pod,如果端口 3306 不可用,那么应用程序 pod 本身将重新启动,这将一直发生,直到 MySQL pod 完全准备好。
我在应用程序部署/吊舱中使用它
livenessProbe:
httpGet:
host: ???
path: /
port: 3306
但不是“???”我不知道我需要写什么,因为,我知道我不能写他们的DNS名称,我被告知livenessProbe不适用于DNS,所以我尝试输入这个IP ENV 的地址,但仍然无法正常工作。
我怎样才能做到这一点 ?
SQL 部署 yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.deployment.mysql.name }}
namespace: {{ .Values.namespace }}
spec:
selector:
matchLabels:
app: {{ .Values.deployment.mysql.name }}
strategy:
type: Recreate
template:
metadata:
labels:
app: {{ .Values.deployment.mysql.name }}
spec:
containers:
- image: {{ .Values.deployment.mysql.image }}
name: {{ .Values.deployment.mysql.name }}
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: mysql-root-password
ports:
- containerPort: {{ .Values.deployment.mysql.port }}
name: {{ .Values.deployment.mysql.name }}
volumeMounts:
- name: sqlvol
mountPath: /var/lib/mysql/
readOnly: false
# - name: db
# mountPath: /etc/notebook-db/
# command:
# - mysql < /etc/notebook-db/crud.sql
livenessProbe:
tcpSocket:
port: 3306
initialDelaySeconds: 15
periodSeconds: 20
initContainers:
- name: init-myservice
image: busybox:1.28
command: ['sh', '-c', "sleep 10"]
volumes:
- name: sqlvol
persistentVolumeClaim:
claimName: mysqlvolume
readOnly: false
应用程序部署 yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.deployment.nodejs.name }}
namespace: {{ .Values.namespace }}
labels:
app: {{ .Values.deployment.nodejs.name }}
name: {{ .Values.deployment.nodejs.name }}
spec:
replicas: 1
selector:
matchLabels:
app: {{ .Values.deployment.nodejs.name }}
template:
metadata:
labels:
app: {{ .Values.deployment.nodejs.name }}
spec:
containers:
- name: {{ .Values.deployment.nodejs.name }}
image: {{ .Values.deployment.nodejs.image }}:{{ .Values.deployment.nodejs.tag }}
ports:
- containerPort: {{ .Values.deployment.nodejs.targetPort }}
livenessProbe:
httpGet:
host: $MYSQL_CLUSTERIP_SERVICE_HOST
path: /
port: 3306
initContainers:
- name: init-myservice
image: busybox:1.28
command: ['sh', '-c', "sleep 60"]
$MYSQL_CLUSTERIP_SERVICE_HOST - 这是 ENV(它对我不起作用)。
那么如果 pod mysql 未准备好,我该如何重新启动 pod 应用程序?