راه اندازی کلاستر Kubernetes روی سرور HP DL360 G10
راه اندازی کلاستر Kubernetes روی سرور HP DL360 G10 : راهاندازی یک کلاستر Kubernetes روی یک سرور فیزیکی مانند HPE DL۳۶۰ G۱۰ که ESXi ۸U۳ روی آن نصب شده، نیازمند برنامهریزی دقیق، مدیریت منابع و رعایت استانداردهای امنیتی است. در این مقاله، مراحل گامبهگام ایجاد نودهای Master و Worker، بهینهسازی منابع، مدیریت شبکه، ذخیرهسازی و امنیت کلاستر توضیح داده شده است.
جهت خرید سرور HP DL360 G10 میتوانید به فروشگاه ما مراجعه کنید …
معماری کلاستر Kubernetes
برای یک سرور فیزیکی واحد، تمام نودهای Kubernetes به صورت ماشینهای مجازی (VMs) ایجاد میشوند. این رویکرد مزایای زیر را دارد:
-
ایزولهسازی محیطها: هر نود مستقل از دیگر نودها عمل میکند و خطا در یک نود باعث اختلال در کل کلاستر نمیشود.
-
مدیریت منابع بهینه: RAM، CPU و Storage برای هر نود به صورت اختصاصی تخصیص داده میشود.
-
انعطافپذیری توسعه و تست: امکان اضافه یا حذف نودها بدون تأثیر مستقیم بر سرور فیزیکی فراهم است.
پیشنهاد معماری برای یک سرور فیزیکی
-
۱ کنترلپلین (Master Node)
-
۲ یا ۳ نود Worker (با توجه به منابع سرور)
-
۱ نود برای ذخیرهسازی (Storage Node) اختیاری برای Ceph یا NFS
توصیه میشود حداقل ۴GB رم و ۲vCPU برای Master و ۸GB رم و ۴vCPU برای هر Worker در نظر گرفته شود. فضای دیسک بسته به تعداد پادها و حجم دادهها متغیر است.
آمادهسازی ESXi و ایجاد ماشینهای مجازی
قبل از نصب Kubernetes، باید ماشینهای مجازی روی ESXi ایجاد و پیکربندی شوند.
۱. ایجاد VM در ESXi
برای هر نود:
-
سیستمعامل: Ubuntu ۲۲.۰۴ LTS (نسخه Server)
-
پردازنده: ۲vCPU برای Master، ۴vCPU برای Worker
-
رم: ۴GB Master، ۸GB Worker
-
دیسک: ۲۰GB Master، ۴۰GB Worker
-
شبکه: Bridge Mode (دستگاهها باید به شبکه LAN دسترسی داشته باشند)
برای نودهای Worker، سه VM مشابه ایجاد کنید تا بتوانید پایداری و مقیاسپذیری را بررسی کنید.
۲. بهینهسازی منابع VM
-
از Resource Pools در ESXi استفاده کنید تا CPU و RAM به صورت منظم و کنترلشده بین نودها تقسیم شود.
-
Reservation و Limits برای CPU و RAM هر VM تعیین کنید تا Master همیشه منابع کافی داشته باشد.
-
از Thin Provisioning برای دیسکها استفاده کنید تا فضای ذخیرهسازی بهینه مصرف شود.
نصب و پیکربندی سیستمعامل روی VMها
۱. نصب Ubuntu
-
نصب Ubuntu ۲۲.۰۴ Server روی هر VM
-
فعالسازی SSH برای مدیریت از راه دور
-
ایجاد کاربر با دسترسی sudo
۲. تنظیم نام نودها
sudo hostnamectl set-hostname master-node
sudo hostnamectl set-hostname worker-node1
sudo hostnamectl set-hostname worker-node2
۳. تنظیم فایل Hosts
برای شناسایی نودها توسط یکدیگر:
192.168.1.10 master-node
192.168.1.11 worker-node1
192.168.1.12 worker-node2
این تنظیم باعث میشود Podها و سرویسها بتوانند نودهای دیگر را بهراحتی شناسایی کنند.
نصب Docker و Kubernetes
۱. آپدیت سیستم
sudo apt update && sudo apt upgrade -y
۲. نصب Docker
sudo apt install docker.io -y
sudo systemctl enable docker && sudo systemctl start docker
۳. نصب Kubernetes
sudo apt install -y kubelet kubeadm kubectl
sudo systemctl enable kubelet
توصیه میشود Swap را غیرفعال کنید تا Kubernetes بدون مشکل اجرا شود:
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab
راهاندازی کنترلپلین (Master Node)
۱. اجرای kubeadm
sudo kubeadm init --pod-network-cidr=192.168.1.0/16
۲. پیکربندی Kubeconfig
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
۳. نصب شبکه CNI
برای مثال، Calico:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
شبکه CNI برای ارتباط Podها ضروری است و مدیریت IPها و سیاستهای امنیتی را فراهم میکند.
اضافه کردن Worker Nodes
-
روی هر Worker، دستور join ارائهشده توسط kubeadm Master اجرا میشود:
sudo kubeadm join 192.168.1.10:6443 --token xyz --discovery-token-ca-cert-hash sha256:abc
-
بررسی وضعیت نودها در Master:
kubectl get nodes
هر نود باید در وضعیت Ready نمایش داده شود. در صورت خطا، با بررسی لاگهای kubelet و اتصال شبکه اقدام به رفع مشکل کنید.
ذخیرهسازی Persistent و Volume Management
-
برای Podهای Stateful، نیاز به Persistent Volume دارید.
-
استفاده از NFS Server یا Ceph روی یک نود جداگانه توصیه میشود.
-
نمونه PV و PVC در Kubernetes:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
nfs:
path: /srv/nfs
server: 192.168.1.20
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-nfs
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
بهینهسازی منابع و Performance Tuning
-
CPU & Memory Limits: هر Pod باید محدودیت منابع داشته باشد تا نودها دچار Resource Starvation نشوند.
-
Node Affinity: پادها میتوانند روی نودهای خاص اجرا شوند تا منابع بهینه استفاده شود.
-
Monitoring: نصب Prometheus و Grafana برای مانیتورینگ استفاده CPU، RAM، Network و Disk.
امنیت کلاستر Kubernetes
-
RBAC: تنظیم نقشها برای کنترل دسترسی کاربران و سرویسها.
-
Network Policies: محدود کردن ترافیک بین پادها.
-
TLS و Certificates: اطمینان از رمزنگاری تمام ارتباطات داخلی کلاستر.
-
Pod Security Policies: جلوگیری از اجرای Podها با دسترسی root یا privileged.
تست کلاستر و استقرار اپلیکیشنها
-
اجرای پاد Nginx برای تست:
kubectl run nginx --image=nginx --port=80
kubectl get pods -o wide
-
بررسی Logها و Network:
kubectl logs nginx
kubectl describe pod nginx
پس از تست موفق، میتوانید سرویسها، Deployments و StatefulSetها را بر اساس نیازهای سازمان مستقر کنید.
نکات پیشرفته
-
Backup etcd: اطلاعات Kubernetes در etcd ذخیره میشود. پشتیبانگیری منظم ضروری است.
-
Auto-scaling: امکان Scale کردن نودها و Podها با استفاده از Cluster Autoscaler.
-
High Availability: اگر منابع سرور کافی باشد، Masterهای اضافه برای HA راهاندازی کنید.
-
Logging مرکزی: استفاده از EFK Stack (Elasticsearch, Fluentd, Kibana) برای مدیریت لاگها.
نتیجه گیری
راهاندازی کلاستر Kubernetes روی یک سرور فیزیکی با ESXi امکانپذیر است و با رعایت موارد زیر، کلاستر پایدار و امن ایجاد میشود:
-
ایجاد VMها با تخصیص منابع بهینه
-
نصب و پیکربندی صحیح سیستمعامل، Docker و Kubernetes
-
مدیریت شبکه و Persistent Storage
-
بهینهسازی منابع، مانیتورینگ و امنیت
با رعایت این اصول، میتوانید یک محیط Kubernetes حرفهای و مقیاسپذیر روی سرور HPE DL۳۶۰ G۱۰ خود داشته باشید و اپلیکیشنهای سازمانی را با اطمینان کامل اجرا کنید.
اگر قصد خرید سرور HP را دارید، میتوانید از کارشناسان فنی تجهیز شبکه فیدار مشاوره رایگان دریافت کنید و سپس با توجه به نیازهای کسب و کاری که دارید، بهترین گزینه موجود را انتخاب کنید.