تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

آموزش نحوه راه‌اندازی کلاستر K3s Kubernetes در اوبونتو 22.04


۸ اسفند ۱۴۰۳

اگر قصد دارید یک کلاستر کوبرنتیز راه‌اندازی کنید، احتمالاً با چالش‌های پیچیده‌ی نصب و پیکربندی آن مواجه شده‌اید. در این آموزش نحوه راه‌اندازی کلاستر K3s Kubernetes در اوبونتو 22.04 را به صورت کامل یاد خواهیم داد.

در این آموزش، نحوه نصب و راه‌اندازی K3s بر روی اوبونتو 22.04 را به‌صورت گام‌به‌گام و کاملاً کاربردی بررسی می‌کنیم. همچنین، تنظیمات مهم و گزینه‌های پیکربندی که به شما در بهینه‌سازی و مدیریت کلاستر کمک می‌کنند را معرفی خواهیم کرد. اگر به دنبال یک روش سریع، ساده و کارآمد برای پیاده‌سازی کوبرنتیز هستید، این آموزش دقیقا همان چیزی است که نیاز دارید.

کوبرنتیز یا کوبرنتیس چیست؟

کوبرنتیز یکی از پرکاربردترین ابزارهای مدیریت کانتینرها است، اما راه‌اندازی یک کلاستر کوبرنتیز معمولی می‌تواند پیچیده و زمان‌بر باشد. بسیاری از روش‌های راه‌اندازی Kubernetes نیاز به تنظیمات پیچیده دارند و بیشتر برای استفاده در محیط‌های بزرگ و حرفه‌ای طراحی شده‌اند. این روش‌ها ممکن است برای پروژه‌های کوچک یا زمانی که به راه‌اندازی سریع نیاز دارید، مناسب نباشند.

K3s نسخه‌ای سبک و بهینه از کوبرنتیز است که توسط Rancher Labs توسعه داده شده است؛ تا راه‌اندازی یک کلاستر را تا حد ممکن ساده کند. این توزیع با یک باینری کم‌حجم و عملکردی بهینه، امکان استقرار سریع کوبرنتیز در سیستم‌های کم‌مصرف و محیط‌های Edge Computing را فراهم می‌کند.

در ادامه با آن‌ها آشنا خواهید شد:

  • کوبرنتیز یا کوبرنتیس چیست؟
  • پیش‌نیاز راه‌اندازی کلاستر کوبرنتیز
  • مرحله اول: نصب K3s
  • مرحله دوم: بررسی اشیاء پیش‌فرض Kubernetes
  • مرحله سوم: درک و تغییر تنظیمات در K3s
  • مرحله چهارم: حذف K3s
  • سوالات متداول
  • جمع بندی

🔷 بیشتر مطالعه کنید: نحوه نصب Git در سرور مجازی اوبونتو

پیش‌نیاز راه‌اندازی کلاستر کوبرنتیز

  • یک سرور اوبونتو 22.04 با حداقل 1GB رم، که باید طبق راهنمای نصب اولیه سرور اوبونتو 22.04 راه‌اندازی شده باشد نیاز خواهید داشت.

مرحله اول: نصب K3s

“به یاد داشته باشید که باید آخرین نسخه از K3s را بر روی سرور اوبونتو خود نصب کنید.”

ابتدا به سرور خود وارد شوید. برای ورود به سرور با استفاده از یوزری که دسترسی sudo دارد وارد شوید.

در این آموزش، نام کاربری sammy است، از دستور زیر استفاده کنید.

ssh sammy@your_server_ip
کوبرنتیز یا کوبرنتیس

در مرحله بعد، برای نصب K3s از دستور زیر استفاده کنید.

curl -sfL https://get.k3s.io | sh -

برای اجرای اسکریپت، از شما خواسته می‌شود که رمز عبور کاربر خود را وارد کنید.

دستور بالا از ابزار curl برای دانلود اسکریپت استفاده می‌کند و سپس با هدایت آن به sh - اسکریپت را اجرا می‌کند. پس از اجرای اسکریپت، نصب کلاستر K3s با تنظیمات پیش‌فرض شروع می‌شود که یک کلاستر تک‌نود Kubernetes ایجاد می‌کند.

پس از اجرای دستور، خروجی زیر را مشاهده خواهید کرد.

[secondary_label Output]
[INFO] Finding release for channel stable 
[INFO] Using v1.27.7+k3s2 as release 
[INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.27.7+k3s2/sha256sum-amd64.txt
[INFO] Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.27.7+k3s2/k3s
[INFO] Verifying binary download 
[INFO] Installing k3s to /usr/local/bin/k3s 
[INFO] Skipping installation of SELinux RPM 
[INFO] Creating /usr/local/bin/kubectl symlink to k3s 
[INFO] Creating /usr/local/bin/crictl symlink to k3s 
[INFO] Creating /usr/local/bin/ctr symlink to k3s 
[INFO] Creating killall script /usr/local/bin/k3s-killall.sh 
[INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh 
[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env 
[INFO] systemd: Creating service file /etc/systemd/system/k3s.service 
[INFO] systemd: Enabling k3s unit Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service. 
[INFO] systemd: Starting k3s ...

خروجی اسکریپت مراحل مختلف نصب و راه‌اندازی کلاستر کوبرنتیز را نشان می‌دهد. سپس برای اطمینان از اینکه سرویس K3s به درستی اجرا می‌شود، باید وضعیت آن با استفاده از دستور systemctl بررسی شود. برای این کار، از دستور زیر استفاده کنید.

systemctl status k3s

این دستور وضعیت سرویس را به‌صورت فعال یا در حال اجرا نمایش خواهد داد.

[secondary_label Output]

● k3s.service - Lightweight Kubernetes

     Loaded: loaded (/etc/systemd/system/k3s.service; enabled; vendor preset: enabled)

     Active: active (running) since Mon 2023-11-27 16:52:01 UTC; 19s ago

       Docs: https://k3s.io

    Process: 8396 ExecStartPre=/bin/sh -xc ! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service (code=exi>

    Process: 8398 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS)

    Process: 8399 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)

   Main PID: 8400 (k3s-server)

      Tasks: 20

     Memory: 467.3M

        CPU: 12.952s

     CGroup: /system.slice/k3s.service

             ├─8400 "/usr/local/bin/k3s server"

             └─8421 "containerd " "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" >



...
کلاستر K3s

👈🏻 شاید به دنبال این مطلب بوده‌اید: چگونه یک اسکریپت پایتون را در اوبونتو اجرا کنیم

در این مرحله، شما K3s را بر روی اوبونتو نصب کردید تا یک کلاستر تک‌نودی کوبرنتیز بسازید. حالا، به بررسی اشیاء پیش‌فرض Kubernetes که پس از نصب K3s در کلاستر مستقر شده‌اند، خواهیم پرداخت.

مرحله دوم: بررسی اشیاء پیش‌فرض کوبرنتیز

در این مرحله، شما اشیاء پیش‌فرض کوبرنتیز که پس از نصب K3s در کلاستر استقرار یافته‌اند را بررسی خواهید کرد.

برای مشاهده تمام اشیاء کوبرنتیز مستقر شده در کلاستر و در فضای نام kube-system دستور زیر را اجرا کنید. ابزار kubectl به‌طور خودکار در هنگام نصب K3s نصب می‌شود، بنابراین نیازی به نصب جداگانه آن نیست.

sudo kubectl get all -n kube-system

خروجی زیر برای شما نمایش داده خواهد شد.

[secondary_label Output]

NAME                                         READY   STATUS      RESTARTS   AGE

pod/local-path-provisioner-957fdf8bc-t8vpx   1/1     Running     0          4m34s

pod/coredns-77ccd57875-4hrd9                 1/1     Running     0          4m34s

pod/helm-install-traefik-crd-j2sqs           0/1     Completed   0          4m34s

pod/helm-install-traefik-mvxhw               0/1     Completed   1          4m34s

pod/metrics-server-648b5df564-gqxcz          1/1     Running     0          4m34s

pod/svclb-traefik-18597fcd-2cf68             2/2     Running     0          4m6s

pod/traefik-768bdcdcdd-srb8d                 1/1     Running     0          4m7s



NAME                     TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)                      AGE

service/kube-dns         ClusterIP      10.43.0.10      <none>           53/UDP,53/TCP,9153/TCP       4m44s

service/metrics-server   ClusterIP      10.43.69.115    <none>           443/TCP                      4m43s

service/traefik          LoadBalancer   10.43.149.125   159.65.159.115   80:32266/TCP,443:32628/TCP   4m7s



NAME                                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE

daemonset.apps/svclb-traefik-18597fcd   1         1         1       1            1           <none>          4m7s



NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE

deployment.apps/local-path-provisioner   1/1     1            1           4m44s

deployment.apps/coredns                  1/1     1            1           4m44s

deployment.apps/metrics-server           1/1     1            1           4m44s

deployment.apps/traefik                  1/1     1            1           4m7s



NAME                                               DESIRED   CURRENT   READY   AGE

replicaset.apps/local-path-provisioner-957fdf8bc   1         1         1       4m34s

replicaset.apps/coredns-77ccd57875                 1         1         1       4m34s

replicaset.apps/metrics-server-648b5df564          1         1         1       4m34s

replicaset.apps/traefik-768bdcdcdd                 1         1         1       4m7s



NAME                                 COMPLETIONS   DURATION   AGE

job.batch/helm-install-traefik-crd   1/1           28s        4m41s

job.batch/helm-install-traefik       1/1           31s        4m41s

خروجی بالا، اشیاء مختلفی را که در داخل کلاستر کوبرنتیز مستقر شده‌اند را نشان می‌دهد. به عنوان مثال، ۴ استقرار Deployment در حال اجرا هستند که هر کدام مربوط به coredns ,local-path-provisioner ,metrics-server ,traefik می‌باشند.

 اشیاء پیش‌فرض Kubernetes

اگر دستور را بدون استفاده از sudo اجرا کنید، ممکن است با خطای زیر مواجه شوید.

Output
WARN[0000] Unable to read /etc/rancher/k3s/k3s.yaml, please start server with --write-kubeconfig-mode to modify kube config permissions

error: error loading config file "/etc/rancher/k3s/k3s.yaml": open /etc/rancher/k3s/k3s.yaml: permission denied

...

برای جلوگیری استفاده از دستور sudo هنگام اجرای دستورات kubectl می‌توانید مجوزهای فایل پیکربندی را با دستور chmod تغییر دهید.

sudo chmod 644 /etc/rancher/k3s/k3s.yaml

در این مرحله، شما وضعیت اشیاء کوبرنتیز که به‌طور پیش‌فرض در خوشه K3s مستقر شده‌اند آشنا شدید. اکنون، در این مرحله، با نحوه درک و تغییر تنظیمات در K3s روبه رو خواهید شد.

“اگر به دنبال ارتقای نسخه اوبونتو از 22.04 به 24.04 در سرور مجازی خود هستید، می‌توانید مقاله ارتقای نسخه اوبونتو در سرور مجازی Ubuntu را مطالعه کنید تا با مراحل دقیق و روش‌های مورد نیاز برای ارتقا آن آشنا شوید.”

مرحله سوم: درک و تغییر تنظیمات در K3s

شما K3s را با تنظیمات پیش‌فرض نصب کرده‌اید، اما این امکان وجود دارد که تنظیمات آن را برای مدیریت خوشه، تغییر دهید. در این مرحله، شما یاد خواهید گرفت که چگونه از متغیرهای محیطی در K3s استفاده کنید تا تنظیمات را در اسکریپت نصب تغییر دهید.

برای مثال، تنظیمات پیش‌فرض همراه با نصب کنترلر ورودی traefik است. در برخی موارد، امکان دارد نیاز داشته باشید تا در هنگام نصب، این کنترلر ورودی را غیرفعال کنید.

متغیر محیطی INSTALL_K3S_EXEC برای ارسال پرچم‌ها به سرویس K3s استفاده می‌شود. برای غیرفعال کردن traefik در هنگام نصب K3s می‌توانید از دستور زیر استفاده کنید.

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable=traefik" sh -

برای بررسی اشیاء Kubernetes و تأیید تغییرات، این بار منابع کنترلر مانند traefik در خوشه K3s نمایش داده نخواهد شد.

sudo kubectl get all -n kube-system

علاوه بر استفاده از متغیرهای محیطی برای تغییر تنظیمات، می‌توانید تنظیمات K3s را مستقیماً در فایل پیکربندی آن وارد کنید. بعد از انجام تغییرات، کافی است سرور K3s را ریستارت کنید تا تنظیمات جدید اعمال شوند.

K3s از فایل پیکربندی موجود در مسیر /etc/rancher/k3s/config.yaml استفاده می‌کند.

برای نوشتن در فایل پیکربندی، فرمان زیر را اجرا کنید.

sudo nano /etc/rancher/k3s/config.yaml


کد زیر را در فایل کانفیگ بنویسید.

disable: traefik

برای ذخیره‌سازی و خروج از فایل، از کلیدهای Ctrl+X استفاده کنید. سپس از شما خواسته می‌شود که تغییرات را ذخیره کنید، برای تایید، کلید Y را فشار دهید و سپس Enter را بزنید.

خط disable: traefik به سرویس K3s دستور می‌دهد که منابع مرتبط با نصب traefik را حذف کند.

تنظیمات در K3s

برای اعمال تغییرات، باید سرویس K3s را مجدداً راه‌اندازی کنید. برای این کار، دستور زیر را وارد کنید.

sudo systemctl restart k3s

حال می‌توانید با استفاده از دستور زیر، تمامی اشیاء کوبرنتیز موجود در فضای kube-system را بررسی کنید. باید توجه داشته باشید که دیگر هیچ‌ یک از منابع مرتبط با نصب traefik در این لیست نمایش داده نشود.

sudo kubectl get all -n kube-system

در این مرحله، شما یاد گرفتید که چگونه تنظیمات K3s را در حین و پس از نصب تغییر دهید. حالا، برای پاک‌سازی ماشین مجازی، می‌خواهید خوشه K3s را حذف کنید.

مرحله چهارم: حذف K3s

برای حذف K3s، باید اسکریپتی به نام ‘/usr/local/bin/k3s-uninstall.sh’را اجرا کنید. این اسکریپت به‌طور خودکار هنگام نصب K3s ایجاد می‌شود و برای انجام پاک‌سازی کامل از آن استفاده می‌شود. در حین حذف، هرگونه پیکربندی K3s و ابزارهای خوشه‌ای که در طول نصب K3s ایجاد یا نصب شده‌اند، حذف خواهند شد.

برای حذف K3s دستور زیر را اجرا کنید.

/usr/local/bin/k3s-uninstall.sh

برای تایید حذف، وضعیت سرویس K3s را با استفاده از دستور زیر بررسی کنید.

systemctl status k3s

خروجی مشابه زیر را مشاهده خواهید کرد.

Unit k3s.service could not be found.

سوالات متداول:

در ادامه به سوالاتی که امکان دارد در ذهن‌تان به‌وجود آمده باشد، پاسخ‌های کوتاه و مفیدی داده‌ایم، با ما همراه باشید.

K3s چیست و چه تفاوتی با کوبرنتیز دارد؟

K3s یک نسخه سبک‌شده از کوبرنتیز است که برای محیط‌های با منابع محدود طراحی شده است. در حالی که Kubernetes به‌طور کامل در محیط‌های بزرگ و مقیاس‌پذیر مناسب است، K3s برای استفاده در پروژه‌های کوچک‌تر یا در محیط‌های Edge (با منابع کم) بهینه‌سازی شده است.

چگونه K3s را روی اوبونتو نصب کنم؟

برای نصب K3s بر روی اوبونتو، ابتدا باید از اسکریپت نصب استفاده کنید که به‌صورت خودکار نسخه جدید K3s را نصب می‌کند. پس از نصب، می‌توانید وضعیت کلاستر را با استفاده از دستور kubectl بررسی کنید.

آیا می‌توانم K3s را بدون traefik نصب کنم؟

بله، هنگام نصب K3s می‌توانید با استفاده از متغیرهای محیطی، Traefik که به‌طور پیش‌فرض نصب می‌شود را غیرفعال کنید.

چگونه می‌توانم K3s را حذف کنم؟

برای حذف K3s از سرور، کافی است از اسکریپت حذف /usr/local/bin/k3s-uninstall.sh استفاده کنید. پس از اجرای این اسکریپت، تمام پیکربندی‌ها و ابزارهای مربوط به K3s حذف می‌شوند.

آیا نصب K3s منابع زیادی نیاز دارد؟

K3s به‌طور خاص برای استفاده در محیط‌هایی با منابع محدود طراحی شده است، بنابراین نسبت به Kubernetes اصلی منابع کمتری مصرف می‌کند.

آیا K3s و Kubernetes با یکدیگر سازگار هستند؟

بله، K3s و کوبرنتیز از لحاظ ساختاری مشابه هستند، اما K3s ویژگی‌های کم‌حجمتری دارد و برای محیط‌های خاصی مانند Edge و پروژه‌های کوچک‌تر طراحی شده است.

آیا می‌توانم K3s را روی سرورهای مجازی نصب کنم؟

بله، می‌توانید K3s را روی بر روی سرور مجازی VPS یا حتی سیستم‌های محلی نصب کنید. K3s به دلیل سبکی و کارایی بالا برای چنین محیط‌هایی مناسب است.

 نصب K3s

جمع بندی

در این مطلب به‌طور ساده و گام‌به‌گام نحوه راه‌اندازی کلاستر K3s Kubernetes در اوبونتو 22.04 را شرح داده‌ایم. K3s یک نسخه سبک از کوبرنتیز است که برای محیط‌های کم‌منابع و کاربردهای کوچک طراحی شده است. با استفاده از این ابزار، می‌توانید به راحتی یک کلاستر Kubernetes راه‌اندازی کنید و منابع مورد نیاز برای پروژه‌های کوچک یا Edge Computing را مدیریت کنید.