CKAD 3 | Pod Design

Labels and Selectors

  • select pod by labels

kubectl get pods --selector key=value --show-labels
  • select all object by labels

kubectl get all --selector key=value --show-labels
  • select pods by multiple labels

kubectl get pods --selector key1=value1,key2=value2

Rolling Updates & Rollbacks

  • image update

kubectl edit objectType objectName
# then change the image
  • edit strategy to recreate

    • Recreate: All old pods are terminated before any new pods are added. Note that there can be a downtime expected because all the containers are brought down at one time.

spec -> strategy:

type: Recreate
  • edit strategy to rolling update

    • RollingUpdate: New pods are added gradually, and old pods are terminated gradually

    • maxSurge: The number of pods that can be created above the desired amount of pods during an update

    • maxUnavailable: The number of pods that can be unavailable during the update process

spec -> strategy:

rollingUpdate:
  maxSurge: 25%
  maxUnavailable: 25%
type: RollingUpdate

Jobs

  • Create a job definition

kubectl create job jobName --image=kodekloud/throw-dice --dry-run=client -o yaml > jobName.yaml
  • Edit a job definition

    • backoffLimit: how many times it can fail before it reaches one success. Setting a large number will ensure the job does not quit before it succeeds.

    • completions: how many times of success do we need to reach the success.

    • parallelism: how many jobs of completion can run in parallel.

apiVersion: batch/v1
kind: Job
metadata:
  name: jobName
spec:
  completions: compNum
  parallelism: paraNum
  backoffLimit: limitNum
  template:
    spec:
      containers:
      - name: containerName
        image: imageName

CronJob

  • Cronjob definition

    • schedule: the time of execution in the cronjob format. Reference: https://crontab.guru/

apiVersion: batch/v1
kind: CronJob
metadata:
  name: jobName
spec:
  schedule: cornjobSchedule
  jobTemplate:
    spec:
      completions: compNum
      parallelism: paraNum
      backoffLimit: limitNum
      template:
        spec:
          containers:
          - name: containerName
            image: imageName