راه اندازی آزمایشگاه خوشه ای Kubernetes (K8S) در سرور اوبونتو 24.04

Kubernetes (K8S) یک بستر ارکستراسیون کانتینر منبع باز است که به شما امکان می دهد برنامه های کانتینر شده را در یک خوشه از گره ها به طور کارآمد مدیریت کنید. راه اندازی آزمایشگاه خانگی یک روش عملی برای یادگیری Kubernetes و استقرار آزمایش در یک محیط کنترل شده فراهم می کند.
این راهنما شما را از طریق فرآیند تنظیم یک خوشه Kubernetes با استفاده از سرور اوبونتو 24.04 با دو گره طی می کند: یک استاد (KB1) و یک کارگر (KB2).
الزامات سیستم
هر گره باید مشخصات زیر را داشته باشد:
- CPU: 2 هسته
- خاطره: 3 گیگابایت رم
- انباره: 20 گیگابایت
-
آدرس IP گره:
- KB1 (استاد):
192.168.0.112
- KB2 (کارگر):
192.168.0.113
- KB1 (استاد):
توجه: اطمینان حاصل کنید که اتصال SSH بین هر دو گره به درستی پیکربندی شده است.
مراحل تنظیم آزمایشگاه خوشه ای Kubernetes (K8S) در سرور اوبونتو 24.04
مرحله 1: نام میزبان و شبکه را پیکربندی کنید
اولین مورد ابتدا ، نام میزبان (اختیاری) را اصلاح کرده و پرونده میزبان را به روز کنید تا ارتباطات شبکه را فعال کنید.
برای اختصاص نام میزبان به هر گره ، از دستور زیر استفاده کنید:
sudo hostnamectl set-hostname \
مثال برای گره اصلی:
sudo hostnamectl set-hostname kb1
برای به روزرسانی ارتباطات شبکه ، نقشه برداری IP-to-Hostname را روی هر گره اضافه کنید.
بعد ، اصلاح کنید /etc/hosts
پرونده در هر گره برای فعال کردن ارتباطات شبکه:
sudo nano /etc/hosts
سپس نقشه برداری را درج کنید:
192.168.0.112 kb1192.168.0.113 kb2
اکنون ، شما باید از پرونده ذخیره و خارج شوید.
مرحله 2: ماژول های مبادله و بار را غیرفعال کنید
در این مورد ، اولین کاری که باید انجام شود ، غیرفعال کردن ماژول های هسته مبادله و بارگذاری ، با استفاده از دستور:
sudo swapoff \-a && sudo sed \-i '/ swap / s/^\\(.\*\\)$/\#\\1/g' /etc/fstab
برای بارگیری ماژول های هسته با استفاده از modpobe
:
sudo modprobe overlay && sudo modprobe br\_netfilter
برای ادامه این تغییرات:
sudo modprobe overlay && sudo modprobe br\_netfilter
در مرحله بعد ، پارامترهای هسته مانند IP Forwarding را اضافه کنید. یک فایل ایجاد کنید و پارامترها را با استفاده از sysctl
دستور:
sudo tee /etc/sysctl.d/kubernetes.conf \<\
مرحله بعدی بارگیری پارامترهای هسته فوق با استفاده از دستور زیر است:
sudo sysctl \--system
مرحله 3: نصب کنید Containerd
Containerd یک زمان اجرا کانتینر است که چرخه کامل چرخه کانتینر را در سیستم میزبان مدیریت می کند. این یک زمان اجرای کانتینر اصلی صنعت است که در ابتدا توسط Docker ساخته شده و بعداً به بنیاد محاسبات بومی Cloud (CNCF) اهدا شده است.
برای شروع با نصب آن ، ابتدا وابستگی های مورد نیاز را با استفاده از دستورات زیر نصب کنید:
sudo apt update && sudo apt install \-y curl gnupg2 software-properties-common apt-transport-https ca-certificates
بعد ، مخزن کانتینر را اضافه کنید:
curl \-fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg \--dearmor \-o /etc/apt/trusted.gpg.d/containerd.gpgsudo add-apt-repository "deb \[arch=amd64\] https://download.docker.com/linux/ubuntu $(lsb\_release \-cs) stable"
اکنون زمان نصب Containerd است:
sudo apt update && sudo apt install containerd.io \-y
بعد ، Containerd را برای استفاده پیکربندی کنید SystemdCgroup
بشر
containerd config default | sudo tee /etc/containerd/config.toml \>/dev/nullsudo sed \-i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
راه اندازی مجدد کانتین برای دیدن اثر:
sudo systemctl restart containerd
وضعیت را تأیید کنید:
sudo systemctl status containerd
خروجی:
● containerd.service - containerd container runtime
Loaded: loaded (/usr/lib/systemd/system/containerd.service; enabled; preset: enabled)
Active: active (running) since Mon 2025-02-17 16:20:34 UTC; 2h 17min ago
Docs: https://containerd.io
Process: 738 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
Main PID: 741 (containerd)
Tasks: 156
Memory: 201.3M (peak: 229.5M)
CPU: 20min 13.594s
CGroup: /system.slice/containerd.service
├─ 741 /usr/bin/containerd
├─ 1138 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id 53e05d7bda37772f5869ec026de03b40d4ce532ba0303c42be5184994439b3bf -address /run/containerd/containerd.sock
├─ 1139 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id 5398ebda2355cad57be69e19bf098e4202fe259a61270ea9cc274b81f77977ab -address /run/containerd/containerd.sock
├─ 1140 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id e4f1f987a5fb8db03db049b518fdfe6680b8c83617733de91620948c6bc00c95 -address /run/containerd/containerd.sock
├─ 1150 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id 24d231aefec7bde2646ae123758907e5d464973705d8c0cd9d8db67756c19ef2 -address /run/containerd/containerd.sock
├─ 1547 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id 4d7ddac790ef53cb30823d45ed4b675d54cf66694833158f8d15f0ba93b93e2c -address /run/containerd/containerd.sock
├─ 2267 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id 72b50ae3cea036f3b51e18bf9b900ccd46399fed052bf51a41bcea735062f413 -address /run/containerd/containerd.sock
├─ 2377 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id 2fcb5f2766fc1ff28a8a020c10eb1aff4b1895eb7ade8af65c72bedd0a634ead -address /run/containerd/containerd.sock
├─ 2434 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id d6f43f441495e4a00387114d5d7462bc54b1a592bd41bc1ee1709d16d507633b -address /run/containerd/containerd.sock
└─27675 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id 2b645f1523cda54eb099d35542d77347071c2cdaef648a7e5559ec01779bac29 -address /run/containerd/containerd.sock
مرحله 4: مخزن بسته Kubernetes را اضافه کنید
بسته های Kubernetes در مخازن بسته بندی پیش فرض اوبونتو 24.04 گنجانده نشده است. برای نصب آنها ، ابتدا مخزن Kubernetes را اضافه کنید.
با بارگیری کلید امضای عمومی برای مخزن با استفاده از curl
فرمان
curl \-fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg \--dearmor \-o /etc/apt/keyrings/k8s.gpg
بعد ، مخزن را اضافه کنید:
echo 'deb \[signed-by=/etc/apt/keyrings/k8s.gpg\] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' | sudo tee /etc/apt/sources.list.d/k8s.list
مرحله 5: اجزای Kubernetes را نصب کنید
اجزای ضروری Kubernetes مانند را نصب کنید kubeadm
با kubelet
وت kubectl
برای مدیریت خوشه Kubernetes:
sudo apt updatesudo apt install kubelet kubeadm kubectl \-y
مرحله ششم: خوشه Kubernetes را آغاز کنید (فقط گره اصلی)
برای اولیه سازی هواپیمای کنترل یا گره اصلی با استفاده از Kubeadm
، دستور را اجرا کنید:
sudo kubeadm init \--control\-plane\-endpoint=\
مثال:
sudo kubeadm init \--control\-plane\-endpoint=kb1
خروجی:
دسترسی به Kubernetes را برای کاربر فعلی تنظیم کنید:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
مرحله 7: به گره های کارگر در خوشه بپیوندید
گره های کارگر را با استفاده از نشانه تولید شده در هنگام اولیه سازی به خوشه Kubernetes خود اضافه کنید.
مثال:
sudo kubeadm join 192.168.0.112:6443 \--token \ \--discovery-token-ca\-cert-hash sha256:\
با اجرای دستور زیر در ترمینال خود ، وضعیت گره را در گره اصلی تأیید کنید:
kubectl get nodes
خروجی:
NAME STATUS ROLES AGE VERSION
kb1 NotReady control-plane 10d v1.31.5
kb2 NotReady 10d v1.31.5
اگر گره ها به صورت ظاهر شوند NotReady
، برای نصب یک راه حل شبکه ادامه دهید.
مرحله 8: افزونه شبکه Calico را مستقر کنید
در گره Master ، برای نصب افزونه Network Calico اجرا کنید:
kubectl create \-f https://raw.githubusercontent.com/projectcalico/calico/v3\.28.2/manifests/calico.yaml
تأیید کنید که وضعیت گره به تغییر کرده است Ready
:
kubectl get nodes
خروجی:
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-b8d8894fb-rz6zx 1/1 Running 3 (24h ago) 7d21h
calico-node-4klgg 1/1 Running 0 24h
calico-node-9c9lg 1/1 Running 0 24h
coredns-7c65d6cfc9-8f26s 1/1 Running 3 (24h ago) 7d21h
coredns-7c65d6cfc9-sgsvc 1/1 Running 3 (24h ago) 7d21h
etcd-kb1 1/1 Running 4 (24h ago) 10d
kube-apiserver-kb1 1/1 Running 4 (24h ago) 10d
kube-controller-manager-kb1 1/1 Running 9 (24h ago) 10d
kube-proxy-h5fnm 1/1 Running 2 (25h ago) 10d
kube-proxy-n9zts 1/1 Running 4 (24h ago) 10d
kube-scheduler-kb1 1/1 Running 7 (24h ago) 10d
اکنون وضعیت گره را با استفاده از دستور بررسی کنید:
kubectl get nodes
خروجی:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-app NodePort 10.110.254.203 80:31809/TCP 50s
مرحله 9: یک برنامه را مستقر و آزمایش کنید
در این بخش ، ابتدا یک نمونه NGINX را برای تأیید تنظیمات مستقر و در معرض آن قرار خواهیم داد.
یک فضای نام ایجاد کنید:
kubectl create ns demo-app
بررسی کنید که آیا فضای نام ایجاد شده است یا خیر:
kubectl get namespace
استقرار ماکت های nginx:
kubectl create deployment nginx\-app \--image nginx \--replicas 2 \--namespace demo\-app
استقرار را بررسی کنید:
kubectl get deployment \-n demo\-app
استقرار را در معرض دید قرار دهید
kubectl expose deployment nginx-app \-n demo-app \--type NodePort \--port 80
درگاه سرویس را پیدا کنید:
kubectl get svc \-n demo-app
با استفاده از برنامه به برنامه دسترسی پیدا کنید:
curl http://192.168.0.113:\
در صورت موفقیت ، باید صفحه پیش فرض Nginx Welcome را مشاهده کنید.
خروجی:
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.
For online documentation and support please refer to
nginx.org.
Commercial support is available at
nginx.com.
Thank you for using nginx.
پایان
با دنبال کردن این راهنما ، شما با موفقیت یک خوشه Kubernetes را در اوبونتو 24.04 تنظیم کرده اید ، اجزای ضروری را نصب کرده و یک برنامه آزمایشی مستقر کرده اید. این یک پایه محکم برای اکتشاف بیشتر در ویژگی های Kubernetes و تنظیمات پیشرفته فراهم می کند.