Question 6: What are labels and selectors in Kubernetes?
Labels are key-value pairs attached to Kubernetes objects (like pods, services, nodes) to provide metadata and organization.
Selectors are expressions used to filter Kubernetes objects based on their labels. Selectors enable flexible matching and querying of objects for management tasks.
Use Cases:
- Versioning: Distinguish different versions of deployments with labels like “app: webserver” and “version: 1.2”.
- Application Tiering: Identify components of a multi-tier application using labels like “tier: frontend” or “tier: database”.
- Management Operations: Selectors target updates, rollbacks, or scaling operations to specific groups of objects (e.g., select all pods with the label “app: webserver”).
Example & Syntax:
A label: "app: nginx
”
A selector to match that label: “app=nginx"
Question 7: How do you create a deployment in Kubernetes?
Deployments are typically created using declarative YAML configuration files, or through imperative commands using the kubectl
command-line tool.
Use Cases:
- Application Deployment: Create and manage replicated pods for your application.
- Rolling Updates: Seamlessly update your application code with zero downtime strategies.
- Rollbacks: Revert to previous deployment versions in case of failures.
Example (YAML configuration):
Question 8: What is a Kubernetes namespace, and why would you use it?
Namespaces are virtual clusters within a physical Kubernetes cluster. They logically partition resources and objects.
They provide a mechanism for organizing and isolating Kubernetes resources within a shared environment.
Use Cases:
- Multi-tenancy: Separate different teams, projects, or environments within a single cluster.
- Resource Management: Set resource quotas and limits at the namespace level.
- Access Control: Implement role-based access control (RBAC) policies specific to namespaces.
Example:
Namespaces named “development,” “staging,” and “production” could be used to run various stages of an application in different isolated environments within the same cluster.
Question 9: How does Kubernetes manage secrets and configuration data?
To understand how Kubernetes manages secrets & config data, first understand below:
- Secrets: Kubernetes provides Secrets objects to store sensitive data base64-encoded (e.g., passwords, tokens, API keys).
- ConfigMaps: These resources store non-confidential configuration data (e.g., database URLs, feature flags) as key-value pairs.
- Environment Variables: Inject Secrets and ConfigMap data into containers as environment variables.
- Volume Mounting: Secrets and ConfigMaps can be mounted as files within pods.
Use Cases:
- Avoiding Hardcoding: Prevent embedding sensitive information directly in pod specifications.
- Separation of Concerns: Isolate application code from the configuration, providing flexible configuration management.
Question 10: What is the difference between a StatefulSet and a Deployment in Kubernetes?
Deployments are ideal for stateless applications, where replicas are interchangeable and don’t maintain a persistent identity.
StatefulSets are designed for stateful applications (e.g., databases, message queues) where:
- Pods need stable, persistent identities.
- Pods require ordered deployments, scaling, and deletion.
- Pods require stable and persistent storage.
Use Cases:
- Deployments: Web servers, API backends
- StatefulSets: Databases (MySQL, MongoDB), distributed data stores (Kafka, Zookeeper)
Part 1- Kubernetes Interview Q & A (Q1-Q5)
Hope you find this post helpful.
Telegram: https://t.me/LearnDevOpsForFree
Twitter: https://twitter.com/techyoutbe
Youtube: https://www.youtube.com/@T3Ptech