Kubernetes 带命令休眠k8的多容器吊舱

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

我正在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
       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!