انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

تثبيت Kubernetes مع K3s: تنسيق الحاويات الخفيف

إعداد كلاستر Kubernetes أحادي ومتعدد العقد مع K3s، استخدام kubectl، إنشاء deployments وservices، إدارة التطبيقات مع Helm. دليل Kubernetes لبيئات VPS.

وقت القراءة: 20 dk الحاويات والتنسيق
k3skubernetesحاويةتنسيقكلاسترkubectlhelmvps

جدول المحتويات

تثبيت Kubernetes مع K3s: تنسيق الحاويات الخفيف

Kubernetes هو المعيار الصناعي لتنسيق الحاويات. لكن تثبيت Kubernetes الكامل قد يكون مكثفاً في استهلاك الموارد ومعقداً. K3s هو توزيعة Kubernetes خفيفة من Rancher — تقدم جميع ميزات Kubernetes في ملف ثنائي واحد وتعمل بشكل ممتاز في البيئات محدودة الموارد مثل VPS.

لماذا تختار K3s؟

الميزةKubernetes الكاملK3s
حجم الملف الثنائي~500MB+~100MB
الحد الأدنى من RAM2GB+512MB
وقت التثبيت30-60 دقيقة5 دقائق
التبعياتكثيرةضئيلة
توافق Kubernetesكاملكامل
الاستخدام في الإنتاجنعمنعم

K3s متوافق تماماً مع Kubernetes API. kubectl و Helm وأدوات Kubernetes الأخرى تعمل بسلاسة مع K3s. مثالي للبيئات الإنتاجية الصغيرة والمتوسطة.

متطلبات النظام

hljs bash
# الحد الأدنى من المتطلبات
# CPU: نواة واحدة
# RAM: 512MB (موصى به: 1GB+)
# Disk: 5GB
# OS: Ubuntu 20.04+, Debian 11+, CentOS 8+

# تحديث النظام
apt update && apt upgrade -y

# تثبيت الأدوات المطلوبة
apt install -y curl wget

تثبيت K3s على عقدة واحدة (Server)

hljs bash
# تثبيت K3s (وضع الخادم)
curl -sfL https://get.k3s.io | sh -

# التحقق من حالة الخدمة بعد التثبيت
systemctl status k3s

# التحقق من حالة الكلاستر
kubectl get nodes

# عرض جميع الـ pods
kubectl get pods -A

إعداد Kubeconfig

hljs bash
# نسخ kubeconfig لـ kubectl
mkdir -p ~/.kube
cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
chmod 600 ~/.kube/config

# تعيين متغير البيئة KUBECONFIG
export KUBECONFIG=~/.kube/config
echo 'export KUBECONFIG=~/.kube/config' >> ~/.bashrc

# عرض معلومات الكلاستر
kubectl cluster-info

إعداد كلاستر متعدد العقد

العقدة الرئيسية (Server)

hljs bash
# تثبيت العقدة الرئيسية وحفظ التوكن
curl -sfL https://get.k3s.io | sh -

# الحصول على توكن العقدة (مطلوب للعقد العاملة)
cat /var/lib/rancher/k3s/server/node-token

العقدة العاملة (Agent)

hljs bash
# ربط العقدة العاملة بالعقدة الرئيسية
curl -sfL https://get.k3s.io | K3S_URL=https://MASTER_IP:6443 K3S_TOKEN=NODE_TOKEN sh -

# التحقق على العقدة الرئيسية من انضمام العقدة العاملة
kubectl get nodes

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

hljs bash
# عرض العقد
kubectl get nodes
kubectl get nodes -o wide

# عرض الـ pods
kubectl get pods
kubectl get pods -n kube-system
kubectl get pods -A

# عرض الـ deployments
kubectl get deployments

# عرض الـ services
kubectl get services

# عرض تفاصيل المورد
kubectl describe pod POD_NAME
kubectl describe node NODE_NAME

# عرض سجلات الـ pod
kubectl logs POD_NAME
kubectl logs -f POD_NAME

# تنفيذ أمر داخل الـ pod
kubectl exec -it POD_NAME -- /bin/bash

إنشاء أول Deployment

NGINX Deployment

hljs yaml
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"
hljs bash
# تطبيق الـ deployment
kubectl apply -f nginx-deployment.yaml

# التحقق من حالة الـ deployment
kubectl get deployments
kubectl rollout status deployment/nginx-deployment

إنشاء Service

hljs yaml
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30080
  type: NodePort
hljs bash
kubectl apply -f nginx-service.yaml
kubectl get services
# الوصول: http://SERVER_IP:30080

إدارة التطبيقات مع Helm

hljs bash
# تثبيت Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

# إضافة مستودع Bitnami
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

# تثبيت WordPress
helm install my-wordpress bitnami/wordpress \
  --set wordpressUsername=admin \
  --set wordpressPassword=StrongPass123! \
  --set service.type=NodePort

# عرض الـ charts المثبتة
helm list

# إزالة الـ chart
helm uninstall my-wordpress

إدارة K3s

hljs bash
# تحديث K3s
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.28.0+k3s1 sh -

# إدارة خدمة K3s
systemctl stop k3s
systemctl start k3s
systemctl restart k3s

# عرض سجلات K3s
journalctl -u k3s -f

# إلغاء تثبيت K3s
/usr/local/bin/k3s-uninstall.sh

الخلاصة

يوفر K3s كامل قوة Kubernetes مع الحد الأدنى من استهلاك الموارد. إنه الحل المثالي لتنسيق الحاويات على مستوى الإنتاج في بيئات VPS. مع K3s على خوادم REXE يمكنك توسيع تطبيقاتك بسهولة وضمان التوفر العالي وتطبيق ممارسات DevOps الحديثة.