Kubernetes Cheetbook
1. Basics:
- Pods: Smallest deployable units in Kubernetes that can hold one or multiple containers.
- Nodes: Worker machines in Kubernetes.
- Clusters: A set of worker machines, called nodes, that run containerized applications.
- Kubectl: Command-line tool for interacting with a Kubernetes cluster.
- Kubelet: An agent running on each node in the cluster.
- API Server: Front-end to the cluster's control plane.
- Etcd: Consistent and highly-available key-value store used as Kubernetes' backing store for all cluster data.
- Control Plane: The collection of processes that control Kubernetes nodes.
- Namespace: Virtual clusters backed by the same physical cluster.
2. Workloads & Controllers:
- Deployments: Manages a replicated application.
- ReplicaSets: Ensures that a specified number of replicas of a Pod are running at all times.
- StatefulSets: Manages the deployment and scaling of a set of Pods,providing guarantees about ordering and uniqueness.
- DaemonSets: Ensures that all (or some) nodes run a copy of a Pod.
- Jobs: Creates one or more Pods and ensures that a specified number of them successfully terminate.
- CronJobs: Manages time-based Jobs, such as running a Job at a specific time or periodic intervals.
- Horizontal Pod Autoscaler: Automatically scales the number of Pods in a deployment, replica set, or replication controller based on observed CPU or memory usage.
3. Services & Networking:
- Services: A way to expose an application running in Pods as a network service.
- Ingress: Manages external access to services within a cluster.
- Network Policies: Define how Pods communicate with each other.
- Service Discovery: Mechanism to connect to services dynamically based on a logical name.
- Load Balancer: A service that distributes network traffic across multiple Pods.
4. Configuration & Secrets:
- ConfigMaps: Manage configuration data separately from container images.
- Secrets: Manages sensitive information, such as passwords, OAuth tokens, and ssh keys.
- Environment Variables: Used within Kubernetes for service discovery.
- Volumes: Persistent storage in Kubernetes.
- Persistent Volume Claims (PVCs): Request for storage by a user.
5. Monitoring, Logging, and Debugging:
- Kube-state-metrics: A simple service that listens to the Kubernetes API server and generates metrics about the state of the objects.
- Prometheus: An open-source system monitoring and alerting toolkit.
- Grafana: Open platform for beautiful analytics and monitoring (often used with Prometheus).
- ELK Stack: Elasticsearch, Logstash, and Kibana used for logging in Kubernetes.
- Kubernetes Dashboard: General-purpose web UI for Kubernetes clusters.
- Kubectl Debug: Tool for debugging pods.
- Heapster: Collects monitoring and performance metrics.
6. Security & Authorization:
- Role-Based Access Control (RBAC): Access control system.
- Security Policies: Security constraints applied to a Pod.
- Service Account: Identity attached to Pods to interact with the Kubernetes API Server.
- Transport Layer Security (TLS): Protocol for privacy and data integrity.
7. Kubernetes Storage:
- Persistent Volumes (PVs): Offers storage to the cluster that is independent of Pod life cycles.
- Storage Classes: Allow administrators to describe the "classes" of storage offered.
8. Kubernetes Cluster Maintenance:
- Node Maintenance: Taking a node down for service or replacing a failing node.
- Cluster Upgrades: Upgrading the cluster to a newer Version.
- Backup and Disaster Recovery: Ensuring data continuity and integrity.
9. Extending Kubernetes:
- Custom Resources: Extension of the Kubernetes API.
- API Server Extension: Custom endpoints in the Kubernetes API.
- Custom Controllers: Automate handling of Custom Resources.
- Operators: Application-specific controllers to create, configure, and manage instances of complex stateful applications.
10. Advanced Features:
- Service Mesh (e.g., Istio): Manage microservices in a transparent way.
- Pod Priority & Preemption: Specifies priorities for Pods and allows preemption of lower-priority Pods.
- Taints and Tolerations: Allows a node to repel a set of Pods.
- Node Affinity: Controls where a Pod runs based on labels on nodes and conditions called node affinity rules.
- Pod Presets: Injects information like secrets, volume mounts, and environment variables into pods at creation time.
11. Kubernetes Cloud Integration:
- Amazon EKS: Managed Kubernetes service on AWS.
- Google Kubernetes Engine (GKE): Managed Kubernetes service on Google Cloud.
- Azure AKS: Managed Kubernetes service on Azure.
12. Continuous Deployment/Integration in Kubernetes:
- Jenkins: Popular open-source tool to perform continuous integration and build automation.
- GitLab CI: Continuous integration service included with GitLab that builds and tests the software whenever a developer pushes code to the application.
- Spinnaker: Open-source, multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence.
13. Helm: Kubernetes Package Manager:
- Helm Charts: Packages of pre-configured Kubernetes resources.
- Helm Repository: A collection of charts for Kubernetes packages.
14. Kubernetes Custom Scheduling:
- Custom Scheduler: You can implement a custom scheduler to have more control over the scheduling of your Pods.
- Cluster Federation: Allows the synchronization of resources cross multiple clusters.
16. Kubernetes Automation and Autoscaling:
- Cluster Autoscaler: Automatically adjusts the size of the cluster, scaling it up or down as necessary.
- Vertical Pod Autoscaler: Automatically adjusts the amount of CPU and memory requested by containers in a Pod.
- Horizontal Pod Autoscaler (HPA): Automatically scales the number of Pods in a deployment or replica set based on observed CPU or memory utilization.
17. Kubernetes Development Tools:
- MicroK8s : is the simplest production-grade conformant K8s. Lightweight and focused. Single command install on Linux, Windows and macOS
- Minikube: Runs a single-node Kubernetes cluster inside a VM on your laptop for users looking to try out Kubernetes or develop with it day-to-day.
- Kompose: Conversion tool for all Docker Compose users to help them move to Kubernetes.
- Kubeadm: Tool for bootstrapping a best-practice Kubernetes cluster.
Ref:
1. https://kubernetes.io/
2. https://en.wikipedia.org/wiki/Kubernetes
3. https://github.com/kubernetes/kubernetes
Leave a Comment