تختبر أسئلة مقابلة Kubernetes فهمك لتنسيق الحاويات ودورة حياة الكبسولة والخدمات والشبكات والقياس وعمليات الإنتاج. يغطي هذا الدليل أسئلة K8 الأكثر شيوعًا لمهندسي DevOps ومهندسي الأنظمة الأساسية في عام 2026.
أسئلة Kubernetes الأساسية
1. ما هو الكبسولة وكيف تختلف عن الحاوية؟
A Podهي أصغر وحدة قابلة للنشر في Kubernetes. يغلف حاوية واحدة أو أكثر تشترك في:
- مساحة اسم الشبكة (نفس عنوان IP، مشاركة المضيف المحلي)
- أحجام التخزين
- دورة الحياة
عادة حاوية واحدة لكل جراب. استخدم حاويات متعددة لأنماط السيارة الجانبية (وكيل التسجيل، الوكيل).
2. اشرح الفرق بين Deployment وStatefulSet وDaemonSet
| الموارد | حالة الاستخدام | الميزة الرئيسية |
|---|---|---|
| النشر | التطبيقات عديمة الحالة (خوادم الويب وواجهات برمجة التطبيقات) | التحديثات المتداولة، وإدارة النسخ المتماثلة |
| StatefulSet | التطبيقات ذات الحالة (قواعد البيانات، كافكا) | أسماء البودات الثابتة، والنشر المنظم، والأحجام المستمرة |
| DaemonSet | وكلاء على مستوى العقدة (التسجيل والمراقبة) | جراب واحد لكل عقدة تلقائيًا |
3. ما هي خرائط التكوين والأسرار؟ كيف تختلف؟
# ConfigMap — non-sensitive configuration
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_ENV: production
DB_HOST: postgres-service
LOG_LEVEL: info
# Secret — sensitive data (base64 encoded, not encrypted by default!)
apiVersion: v1
kind: Secret
metadata:
name: app-secrets
type: Opaque
data:
DB_PASSWORD: c2VjcmV0cGFzcw== # base64 encoded
# Use in Pod
env:
- name: APP_ENV
valueFrom:
configMapKeyRef:
name: app-config
key: APP_ENV
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: app-secrets
key: DB_PASSWORD
4. شرح خدمات Kubernetes وأنواعها
# ClusterIP (default) — only accessible within cluster
apiVersion: v1
kind: Service
spec:
type: ClusterIP
selector:
app: backend
ports:
- port: 8000
targetPort: 8000
# NodePort — exposes on each node's IP at static port
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080 # 30000-32767 range
# LoadBalancer — cloud provider creates LB
spec:
type: LoadBalancer
# Creates AWS ALB, GCP Load Balancer, Azure LB automatically
# Headless — no virtual IP, returns pod IPs directly (for StatefulSet)
spec:
clusterIP: None
selector:
app: kafka
5. ما الفرق بين مجسات الحيوية والاستعداد؟
containers:
- name: app
livenessProbe: # Is the container alive? If fails: RESTART container
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
periodSeconds: 10
failureThreshold: 3
readinessProbe: # Is the container ready for traffic? If fails: remove from load balancer
httpGet:
path: /ready
port: 8000
initialDelaySeconds: 5
periodSeconds: 5
startupProbe: # For slow-starting apps — delays liveness check
httpGet:
path: /startup
port: 8000
failureThreshold: 30 # gives 5*30=150s for startup
periodSeconds: 5
6. كيف يعمل المقياس التلقائي للكبسولة الأفقية (HPA)؟
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
minReplicas: 2
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70 # scale when avg CPU > 70%
- type: Resource
resource:
name: memory
target:
type: AverageValue
averageValue: 500Mi
# Custom metrics (requires metrics-server + Prometheus adapter)
- type: Pods
pods:
metric:
name: requests_per_second
target:
type: AverageValue
averageValue: 100
7. اشرح Kubernetes RBAC
# ServiceAccount — identity for pods
apiVersion: v1
kind: ServiceAccount
metadata:
name: myapp-sa
# Role — permissions within a namespace
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods", "pods/logs"]
verbs: ["get", "list", "watch"]
# ClusterRole — cluster-wide permissions
kind: ClusterRole
rules:
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "list", "create", "update", "delete"]
# RoleBinding — attach role to service account
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: myapp-pod-reader
subjects:
- kind: ServiceAccount
name: myapp-sa
namespace: production
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
8. ماذا يحدث عند تشغيل kubectl Apply -f Deployment.yaml؟
- يرسل kubectl البيان إلى خادم API (عبر HTTPS)
- يقوم خادم API بالتحقق من صحة الطلب والمصادقة عليه
- يستمر خادم API في إلخ (مخزن حالة المجموعة)
- تكتشف وحدة تحكم النشر التغيير عبر المراقبة
- تقوم وحدة التحكم بإنشاء ReplicaSet إذا لزم الأمر
- تقوم وحدة تحكم ReplicaSet بإنشاء مواصفات Pod
- يقوم المجدول بتعيين Pods للعقد (استنادًا إلى الموارد والعيوب والتقارب)
- kubelet الموجود على العقدة يسحب الصورة ويبدأ الحاوية
- تم تحديث حالة الكبسولة مرة أخرى إلى إلخ
نجاح مقابلة Kubernetes: فهم مستوى التحكم (خادم API، وما إلى ذلك، والمجدول، ووحدات التحكم)، ومعرفة الفرق بين Deployment/StatefulSet/DaemonSet، وشرح التحقيقات بوضوح، ومعرفة الشبكات (الخدمات، والدخول، وسياسات الشبكة). غالبًا ما تغطي أسئلة الإنتاج K8 RBAC وHPA وحدود الموارد وميزانيات تعطيل الكبسولة.
🔗 Share this article
✍️ Leave a Comment