cncf/curriculum

Studying for the Certified Kubernetes Administrator Exam | CKA Study Guide

5%-Scheduling

Use label selectors to schedule Pods

Assigning Pods to Nodes

kubectl label nodes <node name> disktype=ssd
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  **nodeSelector:
    disktype: ssd**

Understand the role of DaemonSets

A DaemonSet ensures that all (or some) Nodes run a copy of a Pod.

apiVersion: **apps/v1**
kind: DaemonSet
metadata:
  name: fluentd-elasticsearch
  namespace: kube-system
  labels:
    k8s-app: fluentd-logging
spec:
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  template:
    metadata:
      labels:
        name: fluentd-elasticsearch
    spec:
      tolerations:
      - key: node-role.kubernetes.io/master
        effect: NoSchedule
      containers:
      - name: fluentd-elasticsearch
        image: gcr.io/fluentd-elasticsearch/fluentd:v2.5.1
        resources:
          limits:
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 200Mi
        volumeMounts:
        - name: varlog
          mountPath: /var/log
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
      terminationGracePeriodSeconds: 30
      volumes:
      - name: varlog
        hostPath:
          path: /var/log
      - name: varlibdockercontainers
        hostPath:
          path: /var/lib/docker/containers

A Pod Template in a DaemonSet must have a RestartPolicy equal to Always, or be unspecified, which defaults to Always.

Understand how resource limits can affect Pod scheduling

Managing Compute Resources for Containers

Limits and requests:

spec.containers[].resources.limits.cpu
spec.containers[].resources.limits.memory
spec.containers[].resources.requests.cpu
spec.containers[].resources.requests.memory
spec.containers[].resources.limits.ephemeral-storage
spec.containers[].resources.requests.ephemeral-storage

One cpu, in Kubernetes, is equivalent to 1 Hyperthread or 1 vCPU. Memory are measured in bytes: E, P, T, G, M, K, Ei, Pi, Ti, Gi, Mi, Ki . Limits and requests for ephemeral-storage are measured in bytes.

Each node has a maximum capacity for each of the resource types: the amount of CPU and memory it can provide for Pods. The scheduler ensures that, for each resource type, the sum of the resource requests of the scheduled Containers is less than the capacity of the node.

Each node has a maximum amount of local ephemeral storage it can provide for Pods. The scheduler ensures that the sum of the resource requests of the scheduled Containers is less than the capacity of the node.