Chaining container error in Kubernetes

2/7/2018

I am new to kubernetes and docker. I am trying to chain 2 containers in a pod such that the second container should not be up until the first one is running. I searched and got a solution here. It says to add "depends" field in YAML file for the container which is dependent on another container. Following is a sample of my YAML file:

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"]

Kubernetes gives me following error after running the above yaml file:

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"

Is the apiVersion problem here? I even tried v1, apps/v1, extensions/v1 but got following errors (respectively):

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

What am I doing wrong here?

-- Pranjal
kubernetes

2 Answers

2/7/2018

As I understand there is no field called depends in the Pod Specification.

You can verify and validate by following command:

kubectl explain pod.spec --recursive 

I have attached a link to understand the structure of the k8s resources. kubectl-explain

-- Suresh Vishnoi
Source: StackOverflow

2/7/2018

There is no property "depends" in the Container API object.

You split your containers in two different pods and let the kubernetes cli wait for the first container to become available:

kubectl create -f container1.yaml --wait # run command until the pod is available. 
kubectl create -f container2.yaml --wait
-- Lukas Eichler
Source: StackOverflow