Pod

Contents

    Documentation

    Pods are the fundamental unit of deployment in K8s.
    For running one or more closely related containers. Containers can NOT live outside a pod in K8s world.
    Containers in a Pod are started in parallel by default. As a result, there is no way to determine which container becomes available first inside a Pod. initContainers can be used to ensure some containers are ready before others in a pod.

    Pod have a random ip... and recreating a pod gives a new ip ! that's why we are using services...

    Containers inside a pod can communicate using ports on localhost.

    A standalone pod is NOT recreated on failure.

    IMPORTANT : if more than one container is linked to a pod, the containers MUST be strongly coupled. For instance, a database and its specific backup system.

    A Pod is a logical collection of one or more containers, which:

    Every pod runs a pause container, which handles networking. This container is hidden from Kubernetes commands, but will be displayed using docker ps.

    Configuration File

    apiVersion: v1
    kind: Pod
    metadata:
      name: client-pod
      labels:
        component: web
    spec:
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: my-pvc
      containers:
        - name: client
          image: foo/bar
          ports:
            - containerPort: 3000
          volumeMounts:
            - mountPath: /data
              name: data
    

    containerPort → ports to be exposed by the pod. Of course, it requires some knowledge about the container...

    kubectl commands

    NOTE: use run, NOT create pod :-)

    kubectl run my-nginx-pod --image=nginx --port=80
    kubectl run my-nginx-pod --image=nginx --generator=run-pod/v1

    kubectl run -it dnsutils --image gcr.io/kubernetes-e2e-test-images/dnsutils:1.3

    Proudly Powered by Zim 0.75.2.

    Template by Etienne Gandrille, based on ZeroFiveEight and using JQuery Toc Plugin.