Kubernetes Hierarchy
- image
- container
- pod ( one or more containers that would be deployed together on the same host to share volumes )
- deployment
- service
Kubelet
Kubelets run on every host to start and stop pods and communicate with the Docker engine on the host level.
Kube-proxy
Kube-proxies also run on every host to redirect the traffic to specific services and pods.
Container Linux
Container Linux by CoreOS (formerly known as CoreOS Linux, or just CoreOS) an OS specifically designed to run containers, a lightweight Linux distribution that uses containers to run applications. It does not even have a package manager, but contains the basic GNU Core Utilities for administration. It also include include Kubelet, Docker, etcd and flannel.
Kubernetes Networking
Flannel
Flannel gives each host a separate IP subnet range to prevent IP address collisions, providing a unique IP address to each container. Flannel is the standard SDN ( software-defined network ) tool for CoreOS (Container Linux), it is shipped with the distribution.
Calico
Calico provides security in the Kubernetes cluster. By default in the Kubernetes cluster any pod can communicate to any other pod on any host. Calico restricts the inter pod communication using namespaces and selectors. It allows the communication from the host to the pods to enable health checks. Calico has tight integration with Flannel.
Canal
As Calico and Flannel nicely fit together, Canal is the combination of the two to provide a comprehensive inter-pod networking solution in the Kubernetes cluster.