تثبيت Kubernetes مع K3s: تنسيق الحاويات الخفيف
إعداد كلاستر Kubernetes أحادي ومتعدد العقد مع K3s، استخدام kubectl، إنشاء deployments وservices، إدارة التطبيقات مع Helm. دليل Kubernetes لبيئات VPS.
جدول المحتويات
تثبيت Kubernetes مع K3s: تنسيق الحاويات الخفيف
Kubernetes هو المعيار الصناعي لتنسيق الحاويات. لكن تثبيت Kubernetes الكامل قد يكون مكثفاً في استهلاك الموارد ومعقداً. K3s هو توزيعة Kubernetes خفيفة من Rancher — تقدم جميع ميزات Kubernetes في ملف ثنائي واحد وتعمل بشكل ممتاز في البيئات محدودة الموارد مثل VPS.
لماذا تختار K3s؟
| الميزة | Kubernetes الكامل | K3s |
|---|---|---|
| حجم الملف الثنائي | ~500MB+ | ~100MB |
| الحد الأدنى من RAM | 2GB+ | 512MB |
| وقت التثبيت | 30-60 دقيقة | 5 دقائق |
| التبعيات | كثيرة | ضئيلة |
| توافق Kubernetes | كامل | كامل |
| الاستخدام في الإنتاج | نعم | نعم |
K3s متوافق تماماً مع Kubernetes API. kubectl و Helm وأدوات Kubernetes الأخرى تعمل بسلاسة مع K3s. مثالي للبيئات الإنتاجية الصغيرة والمتوسطة.
متطلبات النظام
# الحد الأدنى من المتطلبات
# 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)
# تثبيت K3s (وضع الخادم)
curl -sfL https://get.k3s.io | sh -
# التحقق من حالة الخدمة بعد التثبيت
systemctl status k3s
# التحقق من حالة الكلاستر
kubectl get nodes
# عرض جميع الـ pods
kubectl get pods -A
إعداد Kubeconfig
# نسخ 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)
# تثبيت العقدة الرئيسية وحفظ التوكن
curl -sfL https://get.k3s.io | sh -
# الحصول على توكن العقدة (مطلوب للعقد العاملة)
cat /var/lib/rancher/k3s/server/node-token
العقدة العاملة (Agent)
# ربط العقدة العاملة بالعقدة الرئيسية
curl -sfL https://get.k3s.io | K3S_URL=https://MASTER_IP:6443 K3S_TOKEN=NODE_TOKEN sh -
# التحقق على العقدة الرئيسية من انضمام العقدة العاملة
kubectl get nodes
أوامر kubectl الأساسية
# عرض العقد
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
# 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"
# تطبيق الـ deployment
kubectl apply -f nginx-deployment.yaml
# التحقق من حالة الـ deployment
kubectl get deployments
kubectl rollout status deployment/nginx-deployment
إنشاء Service
# 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
kubectl apply -f nginx-service.yaml
kubectl get services
# الوصول: http://SERVER_IP:30080
إدارة التطبيقات مع Helm
# تثبيت 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
# تحديث 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 الحديثة.
مقالات ذات صلة
إدارة Docker Volume والشبكات: التخزين الدائم وتكوين الشبكة
أنواع Docker volume (named, bind mount, tmpfs)، إدارة الـ volumes، أوضاع شبكات Docker (bridge, host, overlay)، إنشاء شبكات مخصصة والتواصل بين الحاويات. دليل شامل.
تسجيل الحاويات: إدارة سجلات Docker و Kubernetes
مشغلات سجلات Docker، أمر docker logs، سجلات pods في Kubernetes، جمع السجلات المركزي (Loki, ELK Stack)، تدوير السجلات وأفضل ممارسات إدارة السجلات في بيئة الإنتاج.
أمان Docker: تصليب بيئة الحاويات
أفضل ممارسات أمان Docker: مستخدم غير root، نظام ملفات للقراءة فقط، ملفات seccomp، فحص الصور، أمان Docker socket، عزل الشبكة وإدارة الأسرار.