Loading blog posts...
Loading blog posts...
جاري التحميل...
تشغيل Kubernetes في البيئات الإنتاجية يتطلب تخطيطاً دقيقاً والالتزام بأفضل الممارسات. يغطي هذا الدليل الاستراتيجيات الأساسية لنشر وإدارة كلاسترات Kubernetes على مستوى إنتاجي.
yamlresources: requests: memory: "256Mi" cpu: "500m" limits: memory: "512Mi" cpu: "1000m"
الفوائد:
التوسع التلقائي بناءً على المقاييس:
yamlapiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: my-app spec: minReplicas: 3 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70
لا تشغل أبداً نسخة واحدة في البيئة الإنتاجية:
yamlspec: replicas: 3
حماية ضد الانقطاعات:
yamlapiVersion: policy/v1 kind:PodDisruptionBudget metadata: name: my-app-pdb spec: minAvailable: 2 selector: matchLabels: app: my-app
توزيع الـ Pods عبر العقد:
yamlaffinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - my-app topologyKey: kubernetes.io/hostname
التحكم في حركة البيانات بين الـ Pods:
yamlapiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: api-allow spec: podSelector: matchLabels: app: api policyTypes: - Ingress ingress: - from: - podSelector: matchLabels: app: frontend
تطبيق مبدأ الصلاحيات الأدنى:
yamlapiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: pod-reader rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "list"]
تشغيل الحاويات بأقل الصلاحيات:
yamlsecurityContext: runAsNonRoot: true runAsUser: 1000 allowPrivilegeEscalation: false readOnlyRootFilesystem: true
فرض سياسات الأمان:
yamlapiVersion: v1 kind: Namespace metadata: name: production labels: pod-security.kubernetes.io/enforce: restricted
لا تقم أبداً بكتابة الإعدادات بشكل ثابت في الكود:
yaml# ConfigMap apiVersion: v1 kind: ConfigMap metadata: name: app-config data: app.properties: | log_level=info timeout=30 # Secret apiVersion: v1 kind: Secret metadata: name: app-secrets type: Opaque data: api-key: <base64-encoded-value>
ضع في اعتبارك أدوات مثل:
إعادة تشغيل الحاويات غير السليمة:
yamllivenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 30 periodSeconds: 10
التحكم في حركة البيانات إلى الـ Pods:
yamlreadinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 5 periodSeconds: 5
التعامل مع التطبيقات بطيئة البدء:
yamlstartupProbe: httpGet: path: /startup port: 8080 failureThreshold: 30 periodSeconds: 10
نشر حزمة Prometheus:
استخدم حزمة ELK أو EFK:
التنفيذ باستخدام:
الاستراتيجية الافتراضية مع الإعدادات:
yamlstrategy: type: RollingUpdate rollingUpdate: maxUnavailable: 1 maxSurge: 1
استخدام الخدمات لتبديل حركة البيانات:
yaml# Blue (الحالي) selector: app: my-app version: v1 # التبديل إلى Green selector: app: my-app version: v2
طرح تدريجي مع تقسيم حركة البيانات
نسخ احتياطية منتظمة لـ:
المراقبة والتعديل:
تعديل حجم الكلاستر تلقائياً:
yamlapiVersion: autoscaling/v1 kind: ClusterAutoscaler spec: minNodes: 3 maxNodes: 10
للأحمال غير الحرجة:
production
staging
development
team-api
team-frontend
team-data
تحديد الموارد لكل مساحة اسم:
yamlapiVersion: v1 kind: ResourceQuota metadata: name: compute-quota spec: hard: requests.cpu: "10" requests.memory: 20Gi limits.cpu: "20" limits.memory: 40Gi
التخطيط لـ:
تشغيل Kubernetes في البيئة الإنتاجية يتطلب الاهتمام بالتفاصيل والالتزام بأفضل الممارسات. ركز على:
ابدأ بهذه الأساسيات، وطور حسب احتياجاتك، وحسّن باستمرار عمليات Kubernetes الخاصة بك. الاستثمار في الإعداد والإدارة المناسبين يؤتي ثماره في الاستقرار والأمان والكفاءة التشغيلية.