🌐 Detecting your location…
📢 Advertisement — Configure AdSense in Appearance → Customize → AdSense Settings

أسئلة مقابلة Kubernetes 2026: البودات والخدمات وRBAC وHPA

⏱️2 min read  ·  397 words

تختبر أسئلة مقابلة 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؟

  1. يرسل kubectl البيان إلى خادم API (عبر HTTPS)
  2. يقوم خادم API بالتحقق من صحة الطلب والمصادقة عليه
  3. يستمر خادم API في إلخ (مخزن حالة المجموعة)
  4. تكتشف وحدة تحكم النشر التغيير عبر المراقبة
  5. تقوم وحدة التحكم بإنشاء ReplicaSet إذا لزم الأمر
  6. تقوم وحدة تحكم ReplicaSet بإنشاء مواصفات Pod
  7. يقوم المجدول بتعيين Pods للعقد (استنادًا إلى الموارد والعيوب والتقارب)
  8. kubelet الموجود على العقدة يسحب الصورة ويبدأ الحاوية
  9. تم تحديث حالة الكبسولة مرة أخرى إلى إلخ

نجاح مقابلة Kubernetes: فهم مستوى التحكم (خادم API، وما إلى ذلك، والمجدول، ووحدات التحكم)، ومعرفة الفرق بين Deployment/StatefulSet/DaemonSet، وشرح التحقيقات بوضوح، ومعرفة الشبكات (الخدمات، والدخول، وسياسات الشبكة). غالبًا ما تغطي أسئلة الإنتاج K8 RBAC وHPA وحدود الموارد وميزانيات تعطيل الكبسولة.

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇬🇧 English🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা