Kubernetes Concepts
Kubernetes (often abbreviated as K8s) is an open-source container orchestration platform designed to automate the deployment, scaling, and management of containerized applications. Originally developed by Google, Kubernetes provides a robust framework for managing clusters of hosts that run containers, offering features like self-healing, automated rollouts and rollbacks, and horizontal scaling. It has become the de facto standard for container orchestration in modern cloud-native environments.
Key Concepts
- Pod: The smallest and simplest Kubernetes object, representing a single instance of a running process in a cluster. A pod can contain one or more containers that share resources.
- Node: A physical or virtual machine in a Kubernetes cluster that runs containers. Each node is managed by a control plane and contains services like Kubelet and Kube-proxy.
- Service: An abstract way to expose an application running on a set of pods as a network service, providing a stable IP address and DNS name.
- Deployment: A declarative object used to manage the lifecycle of pods and replicasets, enabling automated rollouts and rollbacks of application versions.
- Namespace: A logical partition within a Kubernetes cluster that allows for resource isolation and organization among different teams or projects.
- ConfigMap and Secret: Objects used to store configuration data and sensitive information (like passwords or API keys) outside of application code.
Common Patterns or Tools
- Helm: A package manager for Kubernetes that uses “charts” to define, install, and upgrade even the most complex Kubernetes applications.
- Istio (Service Mesh): An open platform that provides a uniform way to connect, manage, and secure microservices in a Kubernetes environment.
- Horizontal Pod Autoscaler (HPA): A mechanism that automatically scales the number of pods in a deployment or replicaset based on observed CPU utilization or other metrics.
- Sidecar Pattern: A design pattern where an auxiliary container is added to a pod to provide supporting functionality (e.g., logging, monitoring, or proxying) to the main application container.
- Kubectl: The command-line tool used to interact with the Kubernetes API server and manage cluster resources.