In today's tech landscape, the Kubernetes container orchestration platform is widely used across various projects. With its increasing popularity and widespread adoption, Kubernetes often comes up during interviews for certain IT roles, including DevOps, SRE, system administration, development, and operations. The questions can range from very simple ones about cluster components to more advanced topics like networking within the cluster and network policies. In this article, we’ll go over the top Kubernetes interview questions and provide detailed answers.
Kubernetes is an open-source platform for managing containerized applications. It enables the deployment, scaling, and management of containerized workloads and services.
At the core of Kubernetes lies the Control Plane, which resides on the master node. The Control Plane includes the following components:
kube-api-server
– The API server processes REST requests and serves as the "brain" of the cluster. All interactions, including object creation and deletion, go through the API server, which also manages communication between cluster components.etcd
– A highly available key-value store that saves configuration data and cluster state. It can be deployed externally for improved fault tolerance. etcd is an independent project maintained by a separate team.kube-scheduler
– The component responsible for determining which nodes will run which pods. It monitors available resources on each node to balance workload distribution.kube-controller-manager
– Runs controllers that monitor resources and ensure the cluster matches the desired state by making necessary changes.kube-proxy
– A network service that acts as a load balancer. It distributes network traffic between pods and runs on every node in the cluster.A Pod is the smallest deployable unit in Kubernetes and serves as an abstraction for running containers. A pod usually contains one or more containers, its own IP address, and data storage. Kubernetes doesn’t interact directly with containers, but rather through pods.
Both Deployment and StatefulSet are Kubernetes objects for managing applications, but they serve different purposes.
Deployment:
StatefulSet:
In conclusion, data persistence is the main difference between a Deployment and a StatefulSet. Use Deployment if the application does not require state to be preserved. However, if the application needs to retain its state, then a StatefulSet is the appropriate choice.
A Service in Kubernetes defines how to access a set of pods. It provides a stable IP and DNS name, allowing internal or external communication with pods.
Types of Services:
ClusterIP
– The default type. Exposes the service on an internal IP, accessible only within the cluster.NodePort
– Exposes the service on a specific port across all nodes. Allows external access via NodeIP:NodePort.LoadBalancer
– Provisions an external load balancer (mainly in cloud environments) and assigns a public IP for external traffic distribution.ExternalName
– Maps the service name to an external hostname or IP address using a DNS CNAME record. Works purely at the DNS level.Ingress is a Kubernetes object that defines rules for routing external HTTP/HTTPS traffic to internal services within the cluster. It enables fine-grained control over how traffic is handled and directed.
An Ingress Controller is a component that implements the Ingress rules. It typically consists of:
The controller watches for changes to Ingress objects and configures the reverse proxy accordingly to handle incoming traffic.
Kubernetes provides the Secret object for storing sensitive information. There are six types of secrets:
tls.crt
and tls.key
fields (Base64-encoded). Secrets are usually injected into containers via volumeMount
or secretKeyRef
.
You can also use external secret management tools like HashiCorp Vault.
Probes in Kubernetes check the health and readiness of applications. There are three types:
Pod Disruption Budget is a Kubernetes feature used to ensure a minimum number of pods are available during voluntary disruptions (e.g., node maintenance or upgrades).
Example: If you have an application with 3 replicas that can tolerate the loss of 1 pod, then the PDB should specify that no more than 1 pod can be unavailable at any time. This prevents disruptions that would make the application non-functional.
Use requests and limits in your pod definitions:
You can learn more about Kubernetes requests and limits in our article.
To provide external access to an application, you can use:
CNI (Container Network Interface) is a Kubernetes specification maintained by the Cloud Native Computing Foundation. It defines how network interfaces are managed in Linux containers. CNI is responsible for connecting pods to the network.
CNI features are implemented through plugins, with popular ones including:
CRI (Container Runtime Interface) is the primary communication interface between the kubelet component in a Kubernetes cluster and the container runtime environment. Using CRI, Kubernetes interacts with the container engine responsible for creating and managing containers (Kubernetes itself does not create containers directly).
Popular container runtimes that implement CRI include containerd and CRI-O.
A Persistent Volume (PV) is a Kubernetes object used to store data persistently across pod lifecycles. Volumes in Kubernetes are implemented via plugins, and the platform supports the following types:
A Persistent Volume Claim (PVC) is a user request for storage resources. It allows users to claim a portion of a Persistent Volume based on parameters such as requested size and access mode. PVCs enable dynamic provisioning of storage in Kubernetes, meaning the cluster can automatically create a volume that matches the claim.
Kubernetes manages access control using RBAC (Role-Based Access Control). RBAC allows administrators to define who can do what within the cluster using the following entities:
In this article, we covered a list of common interview questions that candidates might encounter when applying for IT roles involving Kubernetes. These questions span a range of foundational and advanced topics, including architecture, security, networking, and storage in Kubernetes.