我是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
问题吗?我甚至尝试了v1
,apps/v1
,extensions/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
我在这里做错了什么?
答案 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