Understanding Deployments in Kubernetes: A Behind-the-Scenes Look
Kubernetes Deployments are a fundamental aspect of working with Kubernetes. While the process may seem straightforward, understanding the intricate steps behind the scenes is crucial for troubleshooting and gaining a deeper understanding.
Deployment Request Workflow:
There are three primary ways to initiate deployments:
- YAML/JSON file: Applying a file containing the deployment manifest using kubectl apply.
- kubectl run command: This simplifies deployment by providing image name and basic configuration in the command line.
- kubectl create command: Offers greater control by specifying detailed deployment parameters.
Internal Workflow:
Client-Side:
- Validation: Ensures resource type, group, and client credentials are valid.
- Context & Authentication: Extracts current context, cluster, and authentication information from
kubeconfig
. - HTTP Request: Forms and sends the deployment request to the API server.
Server-Side:
API Server:
- Authentication: Verifies client credentials using certificates, tokens, or basic authentication.
- Authorization: Evaluates user privileges using RBAC, ABAC, or webhooks.
- Admission Control: Validates the request against defined criteria, potentially modifying it before storing it in etcd.
- Persistence: Stores the deployment request in etcd.
Deployment Controller:
- ReplicaSet Creation: Watches for new deployments in etcd and creates corresponding ReplicaSet objects.
ReplicaSet Controller:
- Pod Creation: Creates Pod objects based on the ReplicaSet spec.
Pod Controller:
- Pod Scheduling: Waits for the scheduler to update node information and create a binding object.
Continue Reading on https://foxutech.com/understanding-deployments-in-kubernetes-a-behind-the-scenes-look/
If you like our posts, please share with your friends.
You can subscribe us on https://www.youtube.com/@FoxuTech