آموزش راه اندازی K3s Kubernetes Cluster در اوبونتو 22.04
معرفی
Kubernetes یکی از ابزارهای مورد علاقه صنعت برای ارکستراسیون کانتینر است. با این حال، راه اندازی یک خوشه Kubernetes از ابتدا می تواند یک کار دلهره آور باشد و به تنظیمات متعددی نیاز دارد. علاوه بر این، راههای مختلفی برای شروع راهاندازی یک خوشه Kubernetes وجود دارد، اما بسیاری از آنها ممکن است زمانبر باشند، مگر اینکه بخواهید یک خوشه تولیدی ایجاد کنید.
برای سادهسازی راهاندازی خوشه Kubernetes و فعال کردن امکان استقرار آن در مکانهای محدود با منابع از راه دور – در نتیجه آن را به یک نامزد مناسب برای محاسبات لبه تبدیل میکند – Rancher Labs K3s را توسعه داد. K3s یک توزیع سبک وزن Kubernetes است که امکان نصب یک خوشه Kubernetes را با استفاده از یک باینری کوچک در عرض چند دقیقه فراهم می کند.
در این آموزش، نحوه نصب K3s در اوبونتو و گزینه های پیکربندی اضافی موجود در K3s را یاد خواهید گرفت.
پیش نیازها
برای تکمیل این آموزش، شما نیاز دارید:
یک سرور اوبونتو 22.04 با حداقل 1 گیگابایت رم با پیروی از راهنمای راه اندازی سرور اولیه اوبونتو 22.04 راه اندازی شده است.
مرحله 1- نصب K3s
در این مرحله، آخرین نسخه K3s را بر روی دستگاه اوبونتو خود نصب خواهید کرد.
در صورت استفاده از لاگین مبتنی بر رمز عبور، با استفاده از دستور زیر به عنوان کاربر دارای sudo خود (در این آموزش، sammy خواهد بود) وارد سرور خود شوید:
$ ssh sammy@your_server_ip
سپس با استفاده از دستور زیر K3 را نصب کنید.
$ curl -sfL https://get.k3s.io | sh -
از شما خواسته می شود که رمز عبور کاربر را برای اجرای اسکریپت وارد کنید.
این دستور از curl برای دانلود اسکریپت واقع در https://get.k3s.io استفاده می کند و اسکریپت را با لوله گذاری آن به – 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 را روی اوبونتو نصب کردید تا یک خوشه Kubernetes تک گره ایجاد کنید. در مرحله بعد، نگاهی به اشیاء پیشفرض Kubernetes مستقر در خوشه خواهید داشت.
مرحله 2 – بررسی اشیاء پیش فرض Kubernetes
در این مرحله، اشیاء پیشفرض Kubernetes را که پس از نصب K3s مستقر شدهاند، بررسی میکنید.
دستور زیر را اجرا کنید تا تمام اشیاء Kubernetes مستقر در خوشه در فضای نام سیستم kube را ببینید. 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
...
خروجی بالا اشیاء مختلف مستقر در خوشه Kubernetes را نشان می دهد. به عنوان مثال، 4 استقرار در حال اجرا هستند، هر کدام برای coredns، local-path-provisioner، metrics-server و traefik.
اگر دستور را بدون استفاده از 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
در این مرحله، وضعیت اشیاء Kubernetes مستقر در کلاستر K3s را به طور پیش فرض تأیید کرده اید. در مرحله بعد، در حین نصب، گزینه های پیکربندی را در K3s درک کرده و اصلاح خواهید کرد.
مرحله 3 – درک و اصلاح گزینه های پیکربندی در K3S
شما K3s را با استفاده از تنظیمات پیشفرض نصب کردید، با این حال، میتوانید پیکربندی را برای دستیابی به رفتار سفارشی خاص خوشه تنظیم کنید. در این مرحله یاد خواهید گرفت که چگونه از متغیرهای محیطی در K3 برای تنظیم تنظیمات در اسکریپت نصب استفاده کنید.
برای مثال، تنظیمات پیشفرض با نصب کنترلکننده ورودی traefik ارائه میشود، در برخی موارد، ممکن است بخواهید کنترلکننده ورودی را در حین نصب غیرفعال کنید.
متغیر محیطی INSTALL_K3S_EXEC می تواند برای ارسال پرچم ها به سرویس K3s استفاده شود. دستور زیر را می توان برای غیرفعال کردن traefik در حین نصب K3 استفاده کرد.
$ curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable=traefik" sh -
اشیاء Kubernetes را برای تأیید بررسی کنید. منابع کنترلر این بار وجود نخواهد داشت.
$ 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 را فشار دهید. خط غیرفعال: traefik به سرویس K3s دستور می دهد منابع مربوط به نصب traefik را حذف کند.
سپس سرویس K3s را با استفاده از دستور زیر راه اندازی مجدد کنید تا تغییرات اعمال شود.
$ sudo systemctl restart k3s
اکنون، میتوانید با فهرست کردن تمام اشیاء Kubernetes در فضای نام سیستم kube تأیید کنید. در حال حاضر نباید هیچ منبع مرتبط با نصب traefik وجود داشته باشد.
$ sudo kubectl get all -n kube-system
در این مرحله یاد گرفتید که چگونه پیکربندی K3s را در حین نصب و پس از آن تغییر دهید. در مرحله بعد، کلاستر K3s را برای پاکسازی ماشین مجازی حذف میکنید.
مرحله 4 – حذف نصب K3s
برای حذف K3S باید یک اسکریپت پوسته به نام ‘usr/local/bin/k3s-uninstall.sh/’ اجرا کنید. اسکریپت به طور خودکار پس از نصب K3s تولید می شود و می توان از آن برای اجرای یک پاکسازی کامل استفاده کرد. در حین حذف، هر گونه پیکربندی K3s و ابزارهای خوشه ای که در طول نصب K3s ایجاد یا نصب شده اند، حذف می شوند.
برای حذف K3 دستور زیر را اجرا کنید:
$ /usr/local/bin/k3s-uninstall.sh
با بررسی وضعیت سرویس K3s با استفاده از دستور زیر، حذف نصب را تأیید کنید:
$ systemctl status k3s
خروجی مشابه این را دریافت خواهید کرد:
[secondary_label Output]
Unit k3s.service could not be found.
نتیجه
در این مقاله، شما یک کلاستر K3s را در اوبونتو نصب کردید و گزینه های پیکربندی موجود در K3s و مکانیسم استفاده از آنها را درک کردید. اکنون که خوشه Kubernetes خود را راه اندازی کرده اید، باید انواع مختلفی از اشیاء و عملکرد آنها را در Kubernetes بررسی کنید.