Interview Question Series - 1 (Kubernetes)

Interview Question Series — 1(Kubernetes)

  1. What is Kubernetes, and why is it important for container orchestration?
    Kubernetes is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications. It is important because it simplifies the process of managing containerized applications in a highly available and scalable manner, providing features like load balancing, automated scaling, and self-healing.

    2. Explain the architecture of a Kubernetes.

    · Master Node:

    1) API Server: Acts as the central control point for managing the cluster, receiving commands through the Kubernetes API.
    2) etcd: A distributed key-value store that stores configuration data, serving as the cluster’s “brain.”
    3) Controller Manager: Maintains desired state of the cluster by regulating various controllers (e.g., node, replica, endpoints).
    4) Scheduler: Assigns work (containers) to nodes based on resource availability and constraints.

    · Node:

    1) Kubelet: Ensures containers are running in a Pod (smallest deployable unit) by interacting with the API Server and managing containers.
    2) Kube Proxy: Maintains network rules to route traffic to appropriate containers within Pods.
    3) Container Runtime: Executes containers (e.g., Docker, containerd) and manages their lifecycle.

  2. · Pod:

    1) Smallest deployable unit in Kubernetes, encapsulating one or more containers that share networking and storage.
    2) Containers within a Pod share the same IP address and port space, allowing easy communication.
    3) Pods can be scheduled and scaled as a unit.

    · Controller:

    1) Controllers ensure the desired state of the system and respond to changes to maintain that state.
    2) ReplicaSet: Ensures a specified number of replicas of a Pod are running at all times.
    3) Deployment: Manages rolling updates and rollbacks of application versions.
    4) StatefulSet: Manages stateful applications requiring stable network identities and ordered deployment.
    5) DaemonSet: Ensures a copy of a Pod is running on each node.
    6) Job/CronJob: Runs batch or scheduled tasks.

    · Service:

    1) Provides a stable IP and DNS name for accessing a set of Pods.
    Types include ClusterIP (default), NodePort, and LoadBalancer.
    · Volume:
    1) Allows data to persist across container restarts and be shared among containers in a Pod.
    2) Various types include emptyDir, hostPath, PersistentVolume, etc.

    · Namespace:

    1) Virtual clusters within a physical cluster, allowing resource segregation and access control.

    · ConfigMap and Secret:

    1) ConfigMap stores configuration data as key-value pairs.
    2) Secret stores sensitive data securely.

3. What is a Pod in Kubernetes, and why is it the smallest deployable unit?
Answer: A Pod is the smallest deployable unit in Kubernetes, representing a single instance of a running process in the cluster. It is the smallest unit because it can contain one or more containers that share the same network namespace and storage, making them tightly coupled for co-located services or dependencies.

4. How do you scale applications in Kubernetes? What are Horizontal and Vertical Pod Autoscalers?
Answer: Applications in Kubernetes can be scaled using Horizontal Pod Autoscalers (HPA) and Vertical Pod Autoscalers (VPA).

HPA: Automatically adjusts the number of Pods based on CPU or custom metrics, ensuring optimal resource utilization.
VPA: Adjusts the CPU and memory resources allocated to Pods based on their actual resource usage, ensuring efficient utilization.

5. Describe the difference between a StatefulSet and a Deployment in Kubernetes.
Deployment: Used for stateless applications, provides easy scaling, updates, and rollbacks.
StatefulSet: Used for stateful applications that require stable network identities and persistent storage. Ensures ordered deployment and scaling.

6. What is a Service in Kubernetes, and why is it needed?
A Service in Kubernetes is an abstraction that exposes a set of Pods as a network service. It is needed to provide a stable and network-accessible endpoint to access Pods, load balance traffic, and enable communication between different parts of an application.

7. How does Kubernetes manage container networking, and what is a Pod Network?
Answer: Kubernetes uses a Container Network Interface (CNI) to manage container networking. A Pod Network is a flat, overlay network that allows Pods to communicate with each other regardless of their physical or virtual host, making it easier to manage container networking in a cluster.

8. What are Ingress controllers in Kubernetes, and why are they used?
Ingress controllers are used to manage external access to services within a cluster. They provide HTTP and HTTPS routing, load balancing, and SSL termination. Examples include Nginx Ingress Controller and Traefik.

9. Explain Kubernetes’ role in handling storage and persistent volumes.
Kubernetes manages storage using Persistent Volumes (PVs) and Persistent Volume Claims (PVCs). PVs are physical storage resources, and PVCs are requests for storage. Kubernetes ensures that the correct PV is bound to a PVC and then mounted to a Pod, providing persistent storage.

10. What is a ConfigMap and a Secret in Kubernetes? How are they used?
ConfigMaps store configuration data, and Secrets store sensitive information like passwords and API keys. They are used to decouple configuration from Pods, making it easier to manage configuration changes and secrets without modifying the application code or container images.
11. How does Kubernetes handle application updates and rollbacks?
Kubernetes handles updates and rollbacks by managing Deployments. You can update a Deployment by changing its container image, and Kubernetes will perform rolling updates by gradually replacing old Pods with new ones. Rollbacks can be triggered if issues arise during the update.

12. What is a DaemonSet, and when would you use it?
A DaemonSet ensures that a specific Pod runs on all or selected Nodes in the cluster. It is used for tasks that should run on every Node, such as logging agents or monitoring tools.

13. Describe Kubernetes’ role in handling application health checks and self-healing.
Answer: Kubernetes continuously monitors Pods and can automatically restart or replace Pods that are unhealthy based on liveness and readiness probes. This self-healing capability ensures that applications remain available and reliable.

14. What is a Namespace in Kubernetes, and why is it useful?
A Namespace is a way to divide a cluster into multiple virtual clusters, each with its own resources and isolation. It is useful for organizing and segregating applications, teams, or environments within a shared Kubernetes cluster.

15. How can you manage secrets and sensitive information securely in Kubernetes?
Secrets can be managed securely in Kubernetes using Kubernetes Secrets or external secret management tools. Secrets are stored encrypted in etcd, and access control can be applied to restrict who can access them.
16. Explain the difference between a Rolling Update and a Blue-Green Deployment in Kubernetes.

Rolling Update: Gradually replaces old Pods with new ones, ensuring zero downtime and minimal resource impact.
Blue-Green Deployment: Deploys a new version of an application alongside the old one, allowing for quick switching between versions by updating a load balancer.

17. What is Helm, and how does it simplify the deployment of applications in Kubernetes?
Helm is a package manager for Kubernetes that simplifies application deployment and management by providing pre-configured packages (Charts) with customizable values. It streamlines the process of deploying complex applications and ensures consistency.
18. How can you monitor and log Kubernetes clusters effectively?
Effective monitoring and logging in Kubernetes can be achieved using tools like Prometheus for monitoring and Grafana for visualization. For logging, solutions like Elasticsearch, Fluentd, and Kibana (EFK stack) or Loki and Grafana (Grafana Loki) can be used to collect, store, and query logs.

19. What are the main differences between Kubernetes and Docker Swarm for container orchestration?

Kubernetes is more feature-rich, suitable for complex deployments, and has a larger community.
Docker Swarm is simpler to set up and use, better for smaller projects, and tightly integrated with Docker.

20. Describe the process of deploying a multi-container application with Kubernetes, including defining the necessary YAML files.
The process involves creating Pods, Services, Deployments, and other resources in YAML files, defining container specifications, networking, and scaling requirements. YAML files are then applied to the cluster using kubectl apply -f.

Hope you find this helpful. Do connect/ follow for more such content.

~ Vishal Kushwah



Did you find this article valuable?

Support vishal kushwah by becoming a sponsor. Any amount is appreciated!