انتقل إلى المحتوى الرئيسي

الفصل 1.6 - التثبيت والتكوين

نظرة عامة​

قبل البدء في استخدام Kubernetes، يجب عليك تثبيت الأدوات اللازمة. يوجهك هذا الفصل خلال تثبيت kubectl (أداة سطر الأوامر لـ Kubernetes) وتكوين مجموعة محلية للممارسة.

الأهداف​

في نهاية هذا الفصل، ستكون قادرًا على:

  • تثبيت kubectl على نظامك
  • فهم تكوين kubectl
  • بدء عنقود Kubernetes محلية
  • التحقق من أن كل شيء يعمل بشكل صحيح
  • استخدام أوامر kubectl الأساسية

ما هو kubectl؟​

kubectl (يُنطق "كوب-كونترول" أو "كوب-كتل") هو أداة سطر الأوامر الرسمية للتفاعل مع عنقود Kubernetes.

ميزات kubectl:

  • إنشاء وتعديل وحذف الموارد
  • فحص حالة العنقود
  • إدارة النشر
  • تصحيح التطبيقات
  • الوصول إلى سجلات البودات

تثبيت kubectl​

التحقق من التثبيت​

قبل التثبيت، دعونا نتحقق مما إذا كان kubectl مثبتًا بالفعل:

kubectl version --client

إذا رأيت إصدارًا، فإن kubectl مثبت بالفعل! وإلا، فاتبع التعليمات أدناه.

التثبيت على Windows​

الطريقة 1: عبر Chocolatey (موصى به)​

إذا كان لديك Chocolatey مثبتًا:

choco install kubernetes-cli

الطريقة 2: التحميل المباشر​

  1. قم بتحميل أحدث إصدار من:

    https://dl.k8s.io/release/v1.28.0/bin/windows/amd64/kubectl.exe

    (استبدل v1.28.0 بالإصدار المطلوب)

  2. أضف kubectl.exe إلى PATH الخاص بك:

    • أنشئ مجلدًا C:\kubectl
    • ضع kubectl.exe في هذا المجلد
    • أضف C:\kubectl إلى متغير البيئة PATH
  3. تحقق من التثبيت:

    kubectl version --client

الطريقة 3: عبر PowerShell​

# تحميل kubectl
$version = "v1.28.0"
$url = "https://dl.k8s.io/release/$version/bin/windows/amd64/kubectl.exe"
Invoke-WebRequest -Uri $url -OutFile "$env:TEMP\kubectl.exe"

# نقل إلى مجلد في PATH
Move-Item -Path "$env:TEMP\kubectl.exe" -Destination "C:\Windows\System32\kubectl.exe"

# التحقق
kubectl version --client

التثبيت على Linux​

الطريقة 1: عبر Package Manager (أوبونتو/ديبيان)​

# تحديث الحزم
sudo apt-get update

# تثبيت التبعيات
sudo apt-get install -y apt-transport-https ca-certificates curl

# إضافة مفتاح GPG لـ Kubernetes
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

# إضافة المستودع
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

# تثبيت kubectl
sudo apt-get update
sudo apt-get install -y kubectl

# التحقق
kubectl version --client

الطريقة 2: التحميل المباشر​

# تحميل أحدث إصدار
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

# جعله قابلاً للتنفيذ
chmod +x kubectl

# نقل إلى مجلد في PATH
sudo mv kubectl /usr/local/bin/

# التحقق
kubectl version --client

التثبيت على macOS​

الطريقة 1: عبر Homebrew (موصى به)​

brew install kubectl

الطريقة 2: التحميل المباشر​

# تحميل
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"

# جعله قابلاً للتنفيذ
chmod +x kubectl

# نقل إلى مجلد في PATH
sudo mv kubectl /usr/local/bin/

# التحقق
kubectl version --client

تكوين kubectl​

ملف التكوين​

يستخدم kubectl ملف تكوين يقع في:

  • Linux/macOS: ~/.kube/config
  • Windows: %USERPROFILE%\.kube\config

يحتوي هذا الملف على:

  • معلومات الاتصال بالمجموعات
  • السياقات (أي مجموعة تستخدم)
  • المستخدمون والمصادقات

هيكل ملف config​

apiVersion: v1
kind: Config
clusters:
- name: my-cluster
cluster:
server: https://api.my-cluster.com
certificate-authority-data: <cert-data>
contexts:
- name: my-context
context:
cluster: my-cluster
user: my-user
current-context: my-context
users:
- name: my-user
user:
token: <token>

أوامر التكوين المفيدة​

# عرض التكوين الحالي
kubectl config view

# عرض السياقات المتاحة
kubectl config get-contexts

# تغيير السياق
kubectl config use-context my-context

# عرض السياق الحالي
kubectl config current-context

المجموعة المحلية: minikube​

للتدرب على Kubernetes محليًا، سنستخدم minikube، الذي ينشئ عنقود Kubernetes بعقدة واحدة في جهاز افتراضي.

تثبيت minikube​

Windows​

# عبر Chocolatey
choco install minikube

# أو التحميل المباشر
# قم بالتحميل من: https://github.com/kubernetes/minikube/releases

Linux​

# تحميل
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

# تثبيت
sudo install minikube-linux-amd64 /usr/local/bin/minikube

macOS​

brew install minikube

بدء minikube​

# بدء minikube
minikube start

# التحقق من الحالة
minikube status

# عرض معلومات العنقود
kubectl cluster-info

أوامر minikube المفيدة​

# إيقاف المجموعة
minikube stop

# بدء المجموعة
minikube start

# حذف المجموعة
minikube delete

# فتح لوحة التحكم Kubernetes
minikube dashboard

# الوصول إلى بيئة minikube
minikube ssh

المجموعة المحلية: kind (بديل)​

kind (Kubernetes in Docker) هو بديل لـ minikube يستخدم Docker بدلاً من VM.

تثبيت kind​

Windows​

choco install kind

Linux/macOS​

# تحميل
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
# لـ macOS: kind-darwin-amd64

# جعله قابلاً للتنفيذ
chmod +x ./kind

# نقل إلى PATH
sudo mv ./kind /usr/local/bin/kind

استخدام kind​

# إنشاء مجموعة
kind create cluster --name my-cluster

# سرد المجموعات
kind get clusters

# حذف مجموعة
kind delete cluster --name my-cluster

التحقق من التثبيت​

اختبار كامل​

قم بتشغيل هذه الأوامر للتحقق من أن كل شيء يعمل:

# 1. التحقق من إصدار kubectl
kubectl version --client

# 2. التحقق من الاتصال بالمجموعة
kubectl cluster-info

# 3. سرد العقد
kubectl get nodes

# 4. سرد جميع البودات (يجب أن تكون فارغة في البداية)
kubectl get pods --all-namespaces

# 5. التحقق من مكونات النظام
kubectl get componentstatuses
# ملاحظة: هذا الأمر تم إهماله في الإصدارات الحديثة

النتيجة المتوقعة​

إذا كان كل شيء يعمل، يجب أن ترى:

$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 1m v1.28.0

أوامر kubectl الأساسية​

إليك الأوامر الأساسية التي ستستخدمها طوال الدورة:

الأوامر العامة​

# الحصول على المعلومات
kubectl get <resource> # سرد الموارد
kubectl describe <resource> <name> # تفاصيل المورد
kubectl explain <resource> # توثيق المورد

# إنشاء الموارد
kubectl create <resource> # إنشاء من سطر الأوامر
kubectl apply -f <file.yaml> # إنشاء من ملف YAML

# تعديل الموارد
kubectl edit <resource> <name> # تحرير مورد
kubectl patch <resource> <name> # تعديل جزئي

# حذف الموارد
kubectl delete <resource> <name> # حذف مورد
kubectl delete -f <file.yaml> # حذف من ملف

أمثلة عملية​

# سرد جميع البودات
kubectl get pods

# سرد جميع البودات في جميع النطاقات
kubectl get pods --all-namespaces

# عرض تفاصيل بود
kubectl describe pod my-pod

# عرض سجلات بود
kubectl logs my-pod

# تنفيذ أمر في بود
kubectl exec -it my-pod -- /bin/bash

# نسخ ملف إلى/من بود
kubectl cp my-pod:/path/file ./local-file

الإكمال التلقائي (مكافأة)​

تكوين الإكمال التلقائي​

الإكمال التلقائي يجعل استخدام kubectl أسهل بكثير:

Bash (Linux/macOS)​

# إضافة إلى ~/.bashrc
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc

Zsh (macOS)​

# إضافة إلى ~/.zshrc
echo 'source <(kubectl completion zsh)' >> ~/.zshrc
source ~/.zshrc

PowerShell (Windows)​

# تثبيت الوحدة
Install-Module -Name PSKubectlCompletion

# استيراد في الملف الشخصي
Add-Content $PROFILE "Import-Module PSKubectlCompletion"

ملخص​

في هذا الفصل، تعلمت:

كيفية تثبيت kubectl على أنظمة مختلفة
كيفية تكوين kubectl للاتصال بمجموعة
كيفية بدء مجموعة محلية باستخدام minikube أو kind
كيفية التحقق من أن كل شيء يعمل بشكل صحيح
الأوامر الأساسية لـ kubectl


الخطوات التالية​

الآن بعد أن قمت بتثبيت kubectl ولديك مجموعة محلية تعمل، أنت جاهز لـ:

مختبر 1.1: النشر الأول على Kubernetes
الوحدة 2: الهندسة المعمارية التفصيلية ومكونات Kubernetes


الموارد​


استكشاف الأخطاء وإصلاحها​

المشاكل الشائعة والحلول​

المشكلة 1: kubectl: command not found​

الأعراض:

kubectl: command not found

الحلول:

  1. التحقق من التثبيت:

    # Windows
    where kubectl

    # Linux/macOS
    which kubectl
  2. التحقق من PATH:

    • تأكد من أن المجلد الذي يحتوي على kubectl في PATH الخاص بك
    • Windows: تحقق من متغيرات البيئة النظامية
    • Linux/macOS: تحقق من echo $PATH
  3. إعادة التثبيت:

    • اتبع تعليمات التثبيت مرة أخرى لنظام التشغيل الخاص بك

المشكلة 2: Unable to connect to the server​

الأعراض:

The connection to the server <server> was refused

الحلول:

  1. التحقق من أن المجموعة بدأت:

    # لـ minikube
    minikube status
    minikube start

    # لـ kind
    kind get clusters
  2. التحقق من التكوين:

    kubectl config view
    kubectl config current-context
  3. التحقق من الاتصال بالشبكة:

    kubectl cluster-info

المشكلة 3: minikube start يفشل​

الأعراض المحتملة:

  • خطأ في الافتراضية
  • مشكلة في الموارد (RAM/CPU)
  • تعارض مع Docker

الحلول:

  1. التحقق من الافتراضية:

    • Windows: تفعيل Hyper-V أو VirtualBox
    • Linux: تحقق من KVM
    • macOS: تحقق من VirtualBox أو HyperKit
  2. تخصيص المزيد من الموارد:

    minikube start --memory=4096 --cpus=2
  3. استخدام محرك مختلف:

    minikube start --driver=docker
    # أو
    minikube start --driver=virtualbox
  4. إعادة تعيين minikube:

    minikube delete
    minikube start

المشكلة 4: خطأ في شهادة SSL​

الأعراض:

x509: certificate signed by unknown authority

الحلول:

  1. التحقق من تاريخ النظام:

    • تأكد من أن تاريخ/وقت النظام الخاص بك صحيح
  2. إعادة تعيين السياق:

    kubectl config use-context minikube
  3. إعادة إنشاء المجموعة:

    minikube delete
    minikube start

المشكلة 5: kubectl version يعرض فقط العميل​

الأعراض:

kubectl version --client
# يعمل، ولكن
kubectl version
# خطأ: Unable to connect to the server

الحل:

  • المجموعة لم تبدأ أو kubectl غير مكون
  • اتبع خطوات "التحقق من التثبيت" أعلاه

التنقل​

الفصل السابق: الفصل 1.5 - المفاهيم الأساسية
العودة إلى الوحدة: الوحدة 1 - مقدمة في Kubernetes
المختبر التالي: مختبر 1.1 - النشر الأول


تم إنشاء الفصل في: ديسمبر 2024