python - 如何在结束进程后阻止 Kubernetes pod 重新启动
问题描述
我有一个 python 脚本,我在 Kubernetes 上使用过。在 python 脚本 Kubernetes 重新启动 pod 进程结束后。我不想这样。
我试图从 python 脚本中添加一行代码,如下所示:
text = input("please a key for exiting")
我收到 EOF 错误,因此它取决于容器在我的 Kubernetes 上没有 EOF 配置。
之后我尝试使用 restartPolicy: Never。但是 restartPolicy 不能是 Never 并且我得到这样的错误:
error validating data: ValidationError(Deployment.spec.template): unknown field \"restartPolicy\" in io.k8s.api.core.v1.PodTemplateSpec;
我怎样才能做到这一点?我只想不重启这个 pod。它可以在 python 脚本或 Kubernetes yaml 文件上。
解决方案
你得到unknown field \"restartPolicy\" in io.k8s.api.core.v1.PodTemplateSpec;
是因为你很可能搞砸了一些缩进。
这是一个字段缩进不正确的示例部署restartPolicy
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
restartPolicy: Never # <-------
这是一个具有正确缩进的部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
restartPolicy: Never # <-------
但这会导致错误:
kubectl apply -f deploy.yaml
The Deployment "nginx-deployment" is invalid: spec.template.spec.restartPolicy: Unsupported value: "Never": supported values: "Always"
这是一个解释为什么:restartpolicy-unsupported-value-never-supported-values-always
如果要运行一次性 pod,请使用k8s 作业或直接使用 pod:
apiVersion: v1
kind: Pod
metadata:
labels:
run: ngx
name: ngx
spec:
containers:
- image: nginx
name: ngx
restartPolicy: Never
推荐阅读
- javascript - 状态已更新但无法在 React todo 应用程序中显示该项目
- sql - 如何检查二进制类型的表列是否有值?
- javascript - 遍历映射以呈现组件键的对象数组未在道具中更新
- android - Cordova - WebGL 在手机上运行良好,但在模拟器上运行良好 [没有 CrossWalk]
- google-analytics - Google Analytics API 在 23/09/16 之前未返回任何数据
- xml - 用 kdiff3 合并 3 个 XML 文件(命令行)
- oracle - ORA-00933: 尝试刷新实体化视图时的 SQL
- html - 在框内包含可变大小的图像,保持比例,填充框
- c# - 如何检查 webclient 是否得到正确的响应 C#?
- ansible - 使用 ansible 过滤清单主机文件