Kubernetes
Understanding the Kubernetes platform, its architecture, and its role in modern application deployment
What is Kubernetes? Definition and explanation
Kubernetes Definition
Kubernetes is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications. It helps ensure that applications run reliably across different environments, providing self-healing, load balancing, and rolling updates.
Kubernetes, commonly known as “K8s,” was created by engineers at Google and draws heavily from Google’s internal system called Borg, which managed applications on a massive scale. While Borg was built for Google’s internal use, Kubernetes was designed as an open-source solution to manage containerized applications across diverse environments, whether on-premises, in the cloud, or in hybrid setups.
Kubernetes was the first project to graduate from the Cloud Native Computing Foundation (CNCF). Many other CNCF projects build on Kubernetes to add capabilities in areas like monitoring, security, and service mesh, which is why it sits at the center of the cloud-native ecosystem.
As Google engineer Kelsey Hightower puts it, “Kubernetes is a platform for creating platforms.” It does more than run containers: it gives you a foundation to build more complex, tailored platforms on top of.
At its core, Kubernetes is built around a set of basic objects, such as Pods, Services, and Deployments, designed to manage applications. Beyond this, it introduces the concept of Custom Resource Definitions (CRDs), which allow developers to extend the platform to meet their unique needs. This flexibility lets teams adapt Kubernetes to many use cases and build custom workflows and operations.
Kubernetes architecture
Structurally, Kubernetes follows a master-worker architecture, where the control plane manages the cluster, and nodes (workers) run the applications. The control plane handles scheduling, state management, and communication, ensuring that desired states for applications are met.
Kubernetes uses object abstraction to manage workloads, networking, storage, and more. It is a complex technology. That complexity stems from the large number of objects and the steep learning curve involved in configuring and using them effectively.
Below is a non-exhaustive list of key Kubernetes objects:
Workloads
- Pod
- ReplicaSet
- Deployment
- StatefulSet
- DaemonSet
- Job
- CronJob
Service Discovery & Networking
- Service
- Ingress
- Endpoint
- NetworkPolicy
Configuration & Storage
- ConfigMap
- Secret
- PersistentVolume (PV)
- PersistentVolumeClaim (PVC)
- StorageClass
Metadata
- Namespace
- Labels
- Annotations
Cluster Resources
- Node
- ResourceQuota
- LimitRange
Security
- ServiceAccount
- Role
- RoleBinding
- ClusterRole
- ClusterRoleBinding
Custom Resources
- CustomResourceDefinition (CRD)
Kubectl
kubectl is the command-line tool used to interact with Kubernetes clusters. It serves as the primary interface for administrators and developers to manage and control Kubernetes resources. With kubectl, users can perform a wide range of tasks, such as deploying applications, inspecting and troubleshooting workloads, managing configurations, and scaling services.
How kubectl is applied to Kubernetes administration:
- Deploy and Manage Applications:
kubectlallows users to create, update, and delete resources like Pods, Deployments, and Services. There are multiple ways to deploy applications to Kubernetes, including using Package Managers such as Helm. - Monitor Cluster Resources: Administrators can check the status of the cluster and its components by using commands like
kubectl getorkubectl describe. - Modify Configurations:
kubectlprovides ways to interact with ConfigMaps, Secrets, and other configuration resources to manage environment variables and sensitive data. Configuration management in Kubernetes can be complex, additional tools like Kustomize exist to simplify and enhance this process. - Scale Applications: With commands like
kubectl scale, users can increase or decrease the number of instances for a deployment to handle changes in traffic or resource needs. - Troubleshoot Issues: Commands such as
kubectl logsandkubectl exechelp in diagnosing problems with running applications by inspecting logs or interacting with containers directly.
Kubernetes also has a large open-source community and extensive documentation. Thousands of developers contribute to it, and its wide adoption has produced a broad set of tools, services, and established practices. That ecosystem is a big part of why it has become a common default for deploying and managing modern applications.





