<p>你会得到<code>unknown field \"restartPolicy\" in io.k8s.api.core.v1.PodTemplateSpec;</code>,因为你很可能弄乱了一些缩进</p>
<p>下面是一个缩进<code>restartPolicy</code>字段<strong>不正确的部署示例:</p>
<pre><code>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 # < -
</code></pre>
<hr/>
<p>这是一个缩进正确的展开图:</p>
<pre><code>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 # < -
</code></pre>
<p>但这将导致错误:</p>
<pre><code>kubectl apply -f deploy.yaml
The Deployment "nginx-deployment" is invalid: spec.template.spec.restartPolicy: Unsupported value: "Never": supported values: "Always"
</code></pre>
<p>以下是原因的解释:<a href="https://stackoverflow.com/questions/55169075/restartpolicy-unsupported-value-never-supported-values-always">restartpolicy-unsupported-value-never-supported-values-always</a></p>
<hr/>
<p>如果要运行一次性pod,请使用<a href="https://kubernetes.io/docs/concepts/workloads/controllers/job/" rel="nofollow noreferrer">k8s job</a>或直接使用pod:</p>
<pre><code>apiVersion: v1
kind: Pod
metadata:
labels:
run: ngx
name: ngx
spec:
containers:
- image: nginx
name: ngx
restartPolicy: Never
</code></pre>