Kubernetes 带命令休眠k8的多容器吊舱
我正在udemy上尝试模拟考试,并创建了一个多容器吊舱。但检查结果显示,容器Kubernetes 带命令休眠k8的多容器吊舱,kubernetes,Kubernetes,我正在udemy上尝试模拟考试,并创建了一个多容器吊舱。但检查结果显示,容器test2上的命令设置不正确。我无法确定问题所在 apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: multi-pod name: multi-pod spec: containers: - image: nginx name: test1 env: - name: type
test2
上的命令设置不正确。我无法确定问题所在
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: multi-pod
name: multi-pod
spec:
containers:
- image: nginx
name: test1
env:
- name: type
value: demo1
- image: busybox
name: test2
env:
- name: type
value: demo2
command: ["sleep", "4800"]
一种简单的方法是使用命令式kubectl命令为单个容器生成yaml,并编辑yaml以添加其他容器
kubectl run nginx --image=nginx --command -oyaml --dry-run=client -- sh -c 'sleep 1d' > nginx.yaml
在本例中,sleep 1d
是命令
生成的yaml如下所示
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: nginx
name: nginx
spec:
containers:
- command:
- sh
- -c
- sleep 1d
image: nginx
name: nginx
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
您的问题在于第19行中的YAML。 请记住,
YAML
语法对空格和制表符非常敏感
您的问题:
- image: busybox
name: test2
env:
- name: type
value: demo2 ### Issue is in this line, you have one extra space
command: ["sleep", "4800"]
解决方案:
删除空间,它将如下所示:
env:
- name: type
value: demo2
对于YAML
的验证,您可以使用外部验证器,如
如果您将您的YAML
粘贴到上述验证器,您将收到错误:
(<unknown>): mapping values are not allowed in this context at line 19 column 14
如何验证命令是否运行?一种方法是使用Falco。我正在为CKAD做准备,所以想知道,不需要任何额外的库。您可以说1m,然后等待1m,看看pod是否终止,然后将1m增加到运行kubectl exec multipod中要求的任何值。测试2给出错误:您必须指定至少一个命令集装箱
Valid YAML!