Skip to content

Latest commit

 

History

History
89 lines (56 loc) · 2.99 KB

File metadata and controls

89 lines (56 loc) · 2.99 KB

Pod

  • A wrapper around a set of closely connected containers (see also auxillary containers)
    •  All containers (co-located and co-scheduled)

      • sharing
        • do share same:
        • do not share
          • pid namespace
          • cgroups
      • are collocated - on a single node (containers never spread across multiple nodes)
    • contains some glue that help integrate them into rest of kubernetes

      • metadata (names, labels, annotations, restart policy)

  • All pods are ultimately started by Kubelet on node in question, but some (staic) it does so independently and directly reading manifests in a pre-defined location, and the rest (workloads) only when/where told to do so by scheduler (and controller manager) we distinguish
flowchart TD
    classDef class_pod fill:goldenrod,stroke-width:2px
    classDef class_sys fill:cyan,stroke-width:2px  
    classDef class_nonsys fill:antiquewhite,stroke-width:2px  
    
    classDef class_stat fill:darkgrey,stroke-width:2px  
    classDef class_nonstat fill:cornsilk,stroke-width:2px    

    A[Pod]:::class_pod
    B[**Workload**]:::class_nonstat
    C[**Static**]:::class_stat

    D[Non-System]:::class_nonsys
    E[**System**]:::class_sys

    F[Non-System]:::class_nonsys
    G[**System**]:::class_sys



    H((in namespace **system**)):::class_sys


    

    A --> B
    A --> |/etc/kubernetes/manifests/| C

    B --> F
    B -->|"CoreDNS, Cni, Metrics Server" | G

    C --> D
    C -->|"on each control plane node" | E

    E <-.- H
    G -.-> H

 
Loading

  • Those managed by controller manager and scheduler, which in turn tell kubelet when/where to start/stop them. This includes system workloads like CoreDNS, metrics server, and network (CNI) plugins.

  • Static Pods

    • are those which an individual kubelet instance, on a given node, starts/stops a pod based on presence of a manifest file in /etc/kubernetes/manifests/, on said node
      • Critical system components have, by default, a copy of the respective manifest on every control plane node
        • Api Server, Controller Manager, Scheduler, Etcd, so that each control plane node runs a copy of these system static pods
      • but you can create any non-system pod static you create by placing a manifest file into /etc/kubernetes/manifests