Le/les noeuds master kubernetes vont permettre de déployer des pods ainsi que tous les objets Kubernetes.
- Un pod est un groupe de containers. Un pod peut donc déployer de multiples container (ubuntu, nginx par exemple). Ces containers seront considérés comme un seul hôte. Ubuntu pourra donc communiquer avec nginx en localhost.
- Un pod aura qu'une seule IP, quelque soit son nombre de container
Voici en détails les fonctions d'un master Kubernetes :
- kube-apiserver : composant qui permet l'exposition de l'API kubernetes
- etcd : permet le stockage des clés/valeurs pour tout le cluster
- kube-scheduler : Observe la création de pods et assigne un pod à un noeud (selon les ressources, contraintes etc...)
- kube-controller manager : Permet de faire tourner les noeuds, les réplicas, endpoints, compte de service et les token sur le master. Il gère que tout se passe bien
- cloud-controller manager : permet de relier le cluster à l'API de votre cloud provider (AWS, Azure, GCP...) et de séparer les composants qui interagissent avec ce cloud provider des composants qui interagissent uniquement avec votre cluster (volume par exemple).
Voici en détails les fonctions d'un worker Kubernetes :
- kubelet : agent qui permet de communiquer avec le master et de gérer le noeud.
- kube-proxy : Kube-proxy s'exécute sur chaque nœud. Il reflète les services définis dans l'API Kubernetes sur chaque nœud et peut effectuer un simple transfert de flux TCP, UDP et SCTP ou un transfert TCP, UDP et SCTP circulaire sur un ensemble de backends.
- Container Runtime : containerd / Docker / CRI-O, défini dans la configuration de kubernetes