[英]Kubernetes — Helm — Mysql Chart loses stored data after stopping pod
[英]helm hook for both Pod and Job for kubernetes not running all yamls
我在 Helm 3 中使用 Kube.netes。
它在 CentOS Linux 7(核心)上運行。
K8S(通過運行查看:kubectl版本):
git 版本(kube.netes):v1.21.6,go 版本:go1.16.9。
掌舵版本:v3.3.4
掌舵版本(git)go1.14.9。
我需要創建一個在創建 Pod 后運行的作業。
吊艙 yaml:
apiVersion: v1
kind: Pod
metadata:
name: {{ include "test.fullname" . }}-mysql
labels:
app: {{ include "test.fullname" . }}-mysql
annotations:
"helm.sh/hook": post-install
"helm.sh/hook-weight": "-20"
"helm.sh/delete-policy": before-hook-creation
spec:
containers:
- name: {{ include "test.fullname" . }}-mysql
image: {{ .Values.mysql.image }}
imagePullPolicy: IfNotPresent
env:
- name: MYSQL_ROOT_PASSWORD
value: "12345"
- name: MYSQL_DATABASE
value: test
工作:
apiVersion: batch/v1
kind: Job
metadata:
name: {{ include "test.fullname" . }}-migration-job
labels:
app: {{ include "test.fullname" . }}-migration-job
annotations:
"helm.sh/hook": post-install
"helm.sh/hook-weight": "-10"
"helm.sh/hook-delete-policy": hook-succeeded, hook-failed
spec:
parallelism: 1
completions: 1
backoffLimit: 1
template: #PodTemplateSpec (Core/V1)
spec: #PodSpec (core/v1)
initContainers: # regular
- name: wait-mysql
image: bitnami/kubectl
imagePullPolicy: IfNotPresent
args:
- wait
- pod/{{ include "test.fullname" . }}-mysql
- --namespace={{ .Release.Namespace }}
- --for=condition=ready
- --timeout=120s
containers:
- name: {{ include "test.fullname" . }}
image: {{ .Values.myMigration.image }}
imagePullPolicy: IfNotPresent
command: {{- toYaml .Values.image.entrypoint | nindent 12 }}
args: {{- toYaml .Values.image.cmd | nindent 12}}
MySQL 是 MySQL 5.6 圖片。
當我寫上面的時候,也運行helm install test./test --namespace test --create-namespace
即使我更改了預安裝的掛鈎(針對 Pod 和 Job),該作業也從未運行過。
在這兩種情況下,我都會收到消息(並且需要按 - 退出 - 我也不希望出現這種情況:
Pod test-mysql pending Pod test-mysql pending Pod
test-mysql pending Pod test-mysql running Pod
test-mysql 運行 Pod test-mysql 運行 Pod
測試mysql正在運行...
在此示例中,當我在作業中放置一個“錯誤”時,例如: containersx
而不是container
,我沒有收到任何語法錯誤的通知。
可能是因為 MySQL 正在運行(但未完成),我可以強制將 go 強制到鈎子聲明的下一個 yaml 嗎? (即使我聲明了 Pod 和 Job 的正確順序。Pod 應該在 Job 之前運行)。
出了什么問題,如何確保在作業之前創建 pod? 當 pod 開始運行時,我的工作會在那之后運行嗎?
謝謝。
根據您的配置,您似乎需要為 Job 精確設置post-install
掛鈎,因為它應該在所有資源加載到 Kube.netes 后執行。 在 Pod 和 Job 上執行pre-install
掛鈎時,它在加載圖表的 rest 之前運行,這似乎阻止了 Job 啟動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.