Kubernetes Pod Manifest: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 100: Line 100:
{{External|https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell}}
{{External|https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell}}


Optional field. If present, represents the entrypoint array of the container. Not executed within a shell, so if a shell is required, must be specified as below. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated.
Optional field. If not present, the docker image's ENTRYPOINT is used. If present, represents the entrypoint array of the container. Not executed within a shell, so if a shell is required, must be specified as below. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated.


Example:
Example:


  command:  
  command: ['sh', '-c', 'while true; do echo .; sleep 1; done']


Also see: {{Internal|Dockerfile#ENTRYPOINT_and_CMD|Dockerfile ENTRYPOINT and CMD}}
Also see: {{Internal|Dockerfile#ENTRYPOINT_and_CMD|Dockerfile ENTRYPOINT and CMD}}

Revision as of 20:20, 19 September 2019

External

Internal

Overview

Example

apiVersion: v1
kind: Pod
metadata:
  name: loop
  labels:
    color: blue
spec:
  dnsPolicy: ClusterFirst
  restartPolicy: Always
  schedulerName: default-scheduler
  terminationGracePeriodSeconds: 120
  containers:
  - name: loop-container
    image: docker.io/ovidiufeodorov/loop:latest
    imagePullPolicy: Always
    resources:
      limits:
        memory: '4096Mi'
        cpu: '1000m'
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    command: ...
    ports:
    - containerPort: 8080
      protocol: TCP
    - containerPort: 8787
      protocol: TCP
    env:
    - name: SOMETHING
      value: 'something else'
    volumeMounts:
    - name: 'mount-0'
      mountPath: '/red'
      # 'orange' must exist in the root of the volume identified by 'mount-0'; the content of that
      # directory will be exposed in the container under the '/red' directory.
      subPath: 'orange' 
  initContainers:
  - name: init-container1
    image: busybox
    command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
  volumes:
  - name: mount-0
    hostPath:
      # '/yellow' must contain an 'orange' sub-directory
      path: '/yellow'

.spec Elements

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.14/#podspec-v1-core

hostname

Optional field. If not specified, the hostname exposed to the processes running inside the pod will be the name of the pod.

restartPolicy

Optional field. See:

Container Restart Policy

containers

name

image

imagePullPolicy

The value is one of "Always", "Never", "IfNotPresent". Defaults to "Always" if ":latest" tag is specified, or "IfNotPresent" otherwise.

TODO: https://kubernetes.io/docs/concepts/containers/images#updating-images

volumeMounts

Pod volumes to mount into the container's filesystem.

name

The identifier of the volume. Must match the name the volume specification was declared under, in the volumes section of the specification.

mountPath

Specifies the path within the container where the volume will be mounted. Must not contain ':'.

subPath

Specifies the path within the volume (it needs to exist inside the external volume) from which the container's volume should be mounted. Defaults to "" (volume's root).

readOnly

Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

command

https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

Optional field. If not present, the docker image's ENTRYPOINT is used. If present, represents the entrypoint array of the container. Not executed within a shell, so if a shell is required, must be specified as below. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated.

Example:

command: ['sh', '-c', 'while true; do echo .; sleep 1; done']

Also see:

Dockerfile ENTRYPOINT and CMD

initContainers

init Containers

volumes

List of volumes that can be mounted by containers belonging to the pod.

TODO: https://kubernetes.io/docs/concepts/storage/volumes