我正在尝试手动控制 Pod 的使用寿命,但我似乎无法控制 Pod 在手动终止后不应重新启动。
概念是这样的:
部署文件是这样的
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: default
name: my-service-deployment
labels:
app: my-service
spec:
replicas: 1
selector:
matchLabels:
app: my-service
template:
metadata:
labels:
app: my-service
spec:
containers:
- name: my-service
image: my-service:latest
ports:
- containerPort: 81
知道如何实现这一点吗?我尝试过通过 api 放大/缩小副本,但没有任何运气
我尝试像这样使用
restartPolicy
:
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: default
name: my-service-deployment
labels:
app: my-service
spec:
replicas: 1
selector:
matchLabels:
app: my-service
template:
metadata:
labels:
app: my-service
spec:
containers:
- name: my-service
image: my-service:latest
ports:
- containerPort: 81
restartPolicy: Never
这会导致这个错误
The Deployment "my-service" is invalid: spec.template.spec.restartPolicy: Unsupported value: "Never": supported values: "Always"
从 Will 的评论中添加,您可以考虑使用
deployment
,而不是使用 statefulset
。从文档中,
StatefulSet 是用于管理有状态应用程序的工作负载 API 对象。
管理一组 Pod 的部署和扩展,并提供这些 Pod 的排序和唯一性保证。
与 Deployment 类似,StatefulSet 管理基于相同容器规范的 Pod。与 Deployment 不同,StatefulSet 为其每个 Pod 维护粘性身份。这些 Pod 是根据相同的规范创建的,但不可互换:每个 Pod 都有一个持久标识符,在任何重新调度中都会维护该标识符。
请注意,当您删除 Pod 时 `
kubectl删除pod`,statefulset仍然会替换pod,你应该运行命令
kubectl scale statefulset my-service --replicas=0 将其缩小到 0