.. This work is licensed under a Creative Commons Attribution 4.0 International Licence. .. http://creativecommons.org/licenses/by/4.0 .. (c) by Yifei Xue (HUAWEI) and Justin Chi (HUAWEI) K8s introduction ================ Kubernetes Architecture ----------------------- Currently Compass can deploy kubernetes as NFVI in 3+2 mode by default. **The following figure shows a typical architecture of Kubernetes.** .. figure:: images/architecture.png :alt: K8s architecture :figclass: align-center Fig 3. K8s architecture Kube-apiserver ~~~~~~~~~~~~~~ Kube-apiserver exposes the Kubernetes API. It is the front-end for the Kubernetes control plane. It is designed to scale horizontally, that is, it scales by deploying more instances. Etcd ~~~~ Etcd is used as Kubernetes' backing store. All cluster data is stored here. Always have a backup plan for etcd's data for your Kubernetes cluster. Kube-controller-manager ~~~~~~~~~~~~~~~~~~~~~~~ Kube-controller-manager runs controllers, which are the background threads that handle routine tasks in the cluster. Logically, each controller is a separate process, but to reduce complexity, they are all compiled into a single binary and run in a single process. These controllers include: - Node Controller: Responsible for noticing and responding when nodes go down. - Replication Controller: Responsible for maintaining the correct number of pods for every replication controller object in the system. - Endpoints Controller: Populates the Endpoints object (that is, joins Services & Pods). - Service Account & Token Controllers: Create default accounts and API access tokens for new namespaces. kube-scheduler ~~~~~~~~~~~~~~ Kube-scheduler watches newly created pods that have no node assigned, and selects a node for them to run on. Kubelet ~~~~~~~ Kubelet is the primary node agent. It watches for pods that have been assigned to its node (either by apiserver or via local configuration file) and: - Mounts the pod's required volumes. - Downloads the pod's secrets. - Runs the pod's containers via docker (or, experimentally, rkt). - Periodically executes any requested container liveness probes. - Reports the status of the pod back to the rest of the system, by creating a mirror pod if necessary. - Reports the status of the node back to the rest of the system. Kube-proxy ~~~~~~~~~~ Kube-proxy enables the Kubernetes service abstraction by maintaining network rules on the host and performing connection forwarding. Docker ~~~~~~ Docker is used for running containers. POD ~~~ A pod is a collection of containers and its storage inside a node of a Kubernetes cluster. It is possible to create a pod with multiple containers inside it. For example, keeping a database container and data container in the same pod. Understand Kubernetes Networking in Compass configuration --------------------------------------------------------- **The following figure shows the Kubernetes Networking in Compass configuration.** .. figure:: images/k8s.png :alt: Kubernetes Networking in Compass :figclass: align-center Fig 4. Kubernetes Networking in Compass