尝试在 kubernetes 的生命周期标签下使用命令时出错
Getting an error while trying to use a command under the lifecycle tag on kubernetes
我成功 运行 kubernetes、gcloud 和 postgres 但我想在 pod 启动后进行一些修改,我试图移动一些文件所以我尝试了这 3 个选项
1
image: paunin/postgresql-cluster-pgsql
lifecycle:
postStart:
exec:
command: [/bin/cp /var/lib/postgres/data /tmpdatavolume/]
2
image: paunin/postgresql-cluster-pgsql
lifecycle:
postStart:
exec:
command:
- "cp"
- "/var/lib/postgres/data"
- "/tmpdatavolume/"
3
image: paunin/postgresql-cluster-pgsql
lifecycle:
postStart:
exec:
command: ["/bin/cp "]
args: ["/var/lib/postgres/data","/tmpdatavolume/"]
在选项 1 和 2 上,我得到了相同的错误(来自 kubectl get events)
Killing container with docker id f436e40f5df2: PostStart handler: Error ex
ecuting in Docker Container: -1
在选项 3 上,它甚至不允许我上传 yaml 文件,给我这个错误
error validating "postgres-master.yaml": error validating data: found invalid field args for v1.ExecAction; if you choose to ignore these errors, turn validation off with --validate=false
如有任何帮助,我们将不胜感激!谢谢。
pd:我只是粘贴了我的 yaml 文件的一部分,因为自从我添加了这些新行后我没有收到任何错误
这是您可能会觉得有用的 document about lifecycle hooks。
您的选项 1 无效,应该会显示您看到的错误,应该是 ["/bin/cp","/var/lib/postgres/data","/tmpdatavolume/"]
。选项 2 也是指定它的正确方法。您可以 kubectl exec
进入您的 pod 并键入这些命令以查看生成的错误消息吗?做一些像 kubectl exec <pod-name> -i -t -- bash -il
选项 3 中显示的错误消息表示您没有将有效配置传递给 API 服务器。要了解 API 定义,请参阅 v1.Lifecycle,在其子字段中单击几下后,您会发现 args
在 lifecycle.postStart.exec
下无效。
或者,您可以使用 kubectl explain
找到那些 API 定义,例如kubectl explain pods.spec.containers.lifecycle.postStart.exec
在这种情况下。
我成功 运行 kubernetes、gcloud 和 postgres 但我想在 pod 启动后进行一些修改,我试图移动一些文件所以我尝试了这 3 个选项
1
image: paunin/postgresql-cluster-pgsql
lifecycle:
postStart:
exec:
command: [/bin/cp /var/lib/postgres/data /tmpdatavolume/]
2
image: paunin/postgresql-cluster-pgsql
lifecycle:
postStart:
exec:
command:
- "cp"
- "/var/lib/postgres/data"
- "/tmpdatavolume/"
3
image: paunin/postgresql-cluster-pgsql
lifecycle:
postStart:
exec:
command: ["/bin/cp "]
args: ["/var/lib/postgres/data","/tmpdatavolume/"]
在选项 1 和 2 上,我得到了相同的错误(来自 kubectl get events)
Killing container with docker id f436e40f5df2: PostStart handler: Error ex
ecuting in Docker Container: -1
在选项 3 上,它甚至不允许我上传 yaml 文件,给我这个错误
error validating "postgres-master.yaml": error validating data: found invalid field args for v1.ExecAction; if you choose to ignore these errors, turn validation off with --validate=false
如有任何帮助,我们将不胜感激!谢谢。 pd:我只是粘贴了我的 yaml 文件的一部分,因为自从我添加了这些新行后我没有收到任何错误
这是您可能会觉得有用的 document about lifecycle hooks。
您的选项 1 无效,应该会显示您看到的错误,应该是 ["/bin/cp","/var/lib/postgres/data","/tmpdatavolume/"]
。选项 2 也是指定它的正确方法。您可以 kubectl exec
进入您的 pod 并键入这些命令以查看生成的错误消息吗?做一些像 kubectl exec <pod-name> -i -t -- bash -il
选项 3 中显示的错误消息表示您没有将有效配置传递给 API 服务器。要了解 API 定义,请参阅 v1.Lifecycle,在其子字段中单击几下后,您会发现 args
在 lifecycle.postStart.exec
下无效。
或者,您可以使用 kubectl explain
找到那些 API 定义,例如kubectl explain pods.spec.containers.lifecycle.postStart.exec
在这种情况下。