برنامه نویسی

راه اندازی آزمایشگاه خوشه ای 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

توجه: اطمینان حاصل کنید که اتصال 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 و تنظیمات پیشرفته فراهم می کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا