The document provides an overview of Kubernetes concepts and components. It discusses the basic architecture including pods, nodes, clusters and controllers. It also covers services, networking, configuration, security, storage, maintenance, extensions, integration with cloud providers, continuous deployment, scheduling and more. The goal is to introduce readers to the main ideas in Kubernetes.
The document provides an overview of Kubernetes concepts and components. It discusses the basic architecture including pods, nodes, clusters and controllers. It also covers services, networking, configuration, security, storage, maintenance, extensions, integration with cloud providers, continuous deployment, scheduling and more. The goal is to introduce readers to the main ideas in Kubernetes.
● 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.
By: Waleed Mousa
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.
By: Waleed Mousa
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.
By: Waleed Mousa
● 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.
15. Kubernetes Federation:
● Cluster Federation: Allows the synchronization of resources across
multiple clusters.
By: Waleed Mousa
16. Windows in Kubernetes:
● Windows Nodes: Support for Windows worker nodes and Windows
containers in Kubernetes.
17. Kubernetes Testing:
● Kubetest: Kubernetes end-to-end testing.
18. Kubernetes Add-ons:
● DNS: DNS server for service name resolution.
● Web UI (Dashboard): Web-based Kubernetes user interface. ● Container Resource Monitoring: Time-series monitoring of resource utilization. ● Cluster-level Logging: Save container logs to a logging backend.
19. Other Essential Concepts:
● Quotas: Constraints applied to resources like Pods, Persistent
Volumes. ● Annotations: Attach arbitrary non-identifying metadata to objects. ● Labels and Selectors: Labels are key/value pairs attached to objects and selectors are used to select objects based on labels. ● Liveness and Readiness Probes: Health checks for running applications.
20. Kubernetes Failure Handling:
● Pod Disruption Budgets (PDBs): Provides constraints that limit
voluntary disruptions for Pods.
21. Kubernetes Architecture Concepts:
● Cloud Controller Manager: Embeds cloud-specific control logic for
the cloud provider. ● Kube-Proxy: Maintains network rules and enables connection forwarding. ● Container Runtime: The software used to run containers, e.g., Docker, containerd.
By: Waleed Mousa
22. Kubernetes Community and Development:
● Special Interest Groups (SIGs): The Kubernetes project is divided
into several Special Interest Groups or SIGs. ● Contributing to Kubernetes: Guide to becoming an active contributor to the Kubernetes project.
23. Kubernetes Best Practices:
● Logging Best Practices: Guidelines for logging in Kubernetes.
● Monitoring Best Practices: Guidelines for monitoring in Kubernetes. ● Security Best Practices: Guidelines for securing your applications in Kubernetes. ● Performance Best Practices: Guidelines for ensuring optimal performance in Kubernetes.
24. 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.
25. Kubernetes Development Tools:
● 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. ● Skaffold: Command line tool that facilitates continuous development for Kubernetes applications. ● Kompose: Conversion tool for all Docker Compose users to help them move to Kubernetes. ● Kubeadm: Tool for bootstrapping a best-practice Kubernetes cluster.
By: Waleed Mousa
26. Advanced Kubernetes Networking:
● Network Plugins: Extend Kubernetes networking.
● CNI (Container Network Interface): Standard for writing plugins to configure network interfaces in Linux containers. ● Flannel: Overlay network provider. ● Calico: Provides secure network connectivity.
27. Kubernetes Performance Tuning:
● Kubelet Garbage Collection: Cleanup of unused images or
containers. ● Kernel Tuning: Adjusting Linux kernel parameters to optimize performance.
28. Kubernetes Service Mesh:
● Istio: Open platform to connect, manage, and secure microservices.
● Linkerd: Another popular service mesh for Kubernetes.
29. Kubernetes Mobile Integration:
● Kubernetes on Edge: Running Kubernetes in edge computing
environments.
30. Additional Kubernetes Ecosystem Tools:
● Cilium: Security and networking for cloud-native applications.
● Knative: Kubernetes-based platform to build, deploy, and manage modern serverless workloads. ● OpenFaas: Open-source Function as a Service (FaaS) platform built on Kubernetes. ● Metacontroller: Creates custom controllers using simple JavaScript (or other scripting languages).
By: Waleed Mousa
Kubernetes Commands & Usages:
1- Basic Cluster Information:
○ kubectl cluster-info: Display information about the cluster.
○ kubectl version: Display version info.
2- Working with Nodes and Cluster:
○ kubectl get nodes: List nodes in a cluster.
○ kubectl describe node <node-name>: Show details of a specific node.
3- Working with Pods:
○ kubectl get pods: List all pods in all namespaces.
○ kubectl run <name> --image=<image>: Deploy a new Pod with a given image. ○ kubectl describe pod <pod-name>: Describe a specific pod. ○ kubectl logs <pod-name>: Fetch the logs from a pod. ○ kubectl delete pod <pod-name>: Delete a specific pod.
4- Working with Deployments:
○ kubectl create deployment <name> --image=<image>: Create a new
deployment. ○ kubectl get deployments: List all deployments. ○ kubectl describe deployment <deployment-name>: Describe a specific deployment. ○ kubectl scale deployment <deployment-name> --replicas=<num>: Scale up/down a deployment.
--port=8080: Expose a deployment as a service. ○ kubectl get services: List all services. ○ kubectl describe service <service-name>: Describe a specific service.
By: Waleed Mousa
6- Config and Storage:
○ kubectl get configmaps: List all config maps.
○ kubectl create configmap <name> --from-file=<path>: Create a config map from a file. ○ kubectl get secrets: List all secrets. ○ kubectl create secret: Create a secret. ○ kubectl get pv: List all persistent volumes. ○ kubectl get pvc: List all persistent volume claims.
7- Namespaces and Context:
○ kubectl get namespaces: List all namespaces.
○ kubectl config get-contexts: Show all contexts. ○ kubectl config use-context <context-name>: Switch to a different context.
8- Others:
○ kubectl apply -f <filename>: Apply a configuration from a file.
○ kubectl delete -f <filename>: Delete resources defined in a file. ○ kubectl exec -it <pod-name> -- /bin/sh: Execute a command inside a running pod. ○ kubectl port-forward <pod-name> <local-port>:<pod-port>: Forward a port from a running pod to a local port.
9- Advanced:
○ kubectl get all: List all resources.
○ kubectl rollout status deployment/<deployment-name>: View the rollout status of a deployment. ○ kubectl rollout history deployment/<deployment-name>: View the history of a deployment. ○ kubectl rollout undo deployment/<deployment-name>: Rollback to a previous version of a deployment.
By: Waleed Mousa
10- Monitoring & Logging:
● kubectl top nodes: Display resource (CPU/Memory/Storage) usage of
nodes. ● kubectl top pods: Display resource (CPU/Memory/Storage) usage of pods.