在Kubernetes

时间:2018-02-07 10:39:52

标签: kubernetes

我是kubernetes和docker的新手。我试图在容器中链接2个容器,这样第二个容器在第一个容器运行之前不应该运行。我搜索并得到了解决方案here。它说在YAML文件中为依赖于另一个容器的容器添加“depends”字段。以下是我的YAML文件示例:

apiVersion: v1beta4
kind: Pod
metadata:
  name: test
  labels:
    apps: test
spec:
      containers:
      - name: container1
        image: <image-name>
        ports:
          - containerPort: 8080
            hostPort: 8080
      - name: container2
        image: <image-name>
        depends: ["container1"]

运行上面的yaml文件后,Kubernetes给出了以下错误:

Error from server (BadRequest): error when creating "new.yaml": Pod in version "v1beta4" cannot be handled as a Pod: no kind "Pod" is registered for version "v1beta4"

这里有apiVersion问题吗?我甚至尝试了v1apps/v1extensions/v1,但分别遇到了以下错误:

error: error validating "new.yaml": error validating data: ValidationError(Pod.spec.containers[1]): unknown field "depends" in io.k8s.api.core.v1.Container; if you choose to ignore these errors, turn validation off with --validate=false

error: unable to recognize "new.yaml": no matches for apps/, Kind=Pod

error: unable to recognize "new.yaml": no matches for extensions/, Kind=Pod

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

据我所知,Pod规范中没有名为依赖的字段。

您可以通过以下命令进行验证和验证:

kubectl explain pod.spec --recursive 

我附上了一个链接来了解k8s资源的结构。 kubectl-explain

答案 1 :(得分:0)

没有财产&#34;取决于&#34;在Container API对象中。

您将容器拆分为两个不同的容器,让kubernetes cli等待第一个容器可用:

kubectl create -f container1.yaml --wait # run command until the pod is available. 
kubectl create -f container2.yaml --wait