راه اندازی یک محیط محلی Kubernetes با Multipass و شبکه پل

Summarize this content to 400 words in Persian Lang
مقدمه
آماده شدن برای صدور گواهینامه توسعه دهنده برنامه کاربردی Kubernetes (CKAD) نیازمند یک محیط قابل اعتماد برای تمرین عملی است. در حالی که ارائه دهندگان ابر اغلب توصیه می شوند، راه اندازی یک محیط محلی می تواند مقرون به صرفه تر باشد و فرصت های یادگیری ارزشمندی را فراهم کند. در این راهنما، من شما را در ایجاد یک محیط محلی قوی Kubernetes با استفاده از Multipass و شبکه پل اوبونتو راهنمایی خواهم کرد.
چرا Local Setup؟
وقتی شروع به آماده شدن برای گواهینامه CKAD خود کردم، محیطی می خواستم که:
شبکهای ثابت بین گرهها فراهم کنید
اجازه کنترل کامل بر زیرساخت را بدهید
هزینه ها را در مقایسه با راه حل های ابری به حداقل برسانید
ارائه انعطاف پذیری برای آزمایش
الزامات سخت افزاری
قبل از شروع، مطمئن شوید که سیستم شما این حداقل الزامات را برآورده می کند:
حداقل نیازها:
CPU: 4 هسته (8 رشته توصیه می شود)
رم: حداقل 16 گیگابایت، 32 گیگابایت توصیه می شود
فضای ذخیره سازی: 100 گیگابایت فضای آزاد (SSD توصیه می شود)
محیط آزمون من:
پردازنده: AMD Ryzen 5 3600 (6 هسته، 12 رشته)
رم: 64 گیگابایت DDR4
فضای ذخیره سازی: 1 ترابایت SSD + 1 ترابایت هارد دیسک + 750 گیگابایت هارد دیسک
توجه: در حالی که میتوانید این تنظیمات را با مشخصات پایینتر اجرا کنید، ممکن است هنگام اجرای چندین کانتینر و سرویس با مشکلات عملکردی مواجه شوید.
سازگاری سیستم
این راهنما در موارد زیر تست شده است:
اوبونتو 24.10 (سیستم میزبان)
اوبونتو 22.04 LTS (Jammy) برای ماشین های مجازی
Multipass 1.14.1
LXD 5.21.2 LTS
در حالی که مراحل باید روی سایر نسخههای اوبونتو (20.04+) کار کنند، ممکن است با تفاوتهای جزئی در نام رابط شبکه یا تنظیمات پیشفرض مواجه شوید. اگر از اوبونتو 22.04 یا نسخه قبلی استفاده می کنید، ممکن است لازم باشد نحو پیکربندی شبکه را کمی تغییر دهید.
معماری شبکه
قبل از اینکه وارد تنظیمات شویم، بیایید معماری شبکه ای را که ایجاد خواهیم کرد، درک کنیم:
راه اندازی ما چندین رابط شبکه ایجاد می کند:
شبکه پل (br0): شبکه اصلی برای ارتباطات Kubernetes
Host Network (enp37s0): اتصال به شبکه خارجی
شبکه های مجازی: هر ماشین مجازی دو رابط دارد
enp5s0: شبکه پیش فرض Multipass
enp6s0: رابط شبکه پل
راه اندازی پل شبکه
اولین وظیفه ما ایجاد یک پل شبکه اختصاصی برای گره های Kubernetes است. استفاده خواهیم کرد systemd-networkd برای این منظور، که یک پشته شبکه ای قوی و مدرن را فراهم می کند.
1. آماده سازی محیط شبکه
ابتدا باید NetworkManager را غیرفعال کنیم و systemd-networkd را فعال کنیم:
# Disable NetworkManager
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
# Enable systemd-networkd
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd
# Configure DNS resolution
sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved
sudo rm /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
2. پیکربندی Bridge
ما یک شبکه پل با مشخصات زیر ایجاد خواهیم کرد:
شبکه: 172.19.180.0/24
دروازه: 172.19.180.254
محدوده DHCP: 172.19.180.1 – 172.19.180.253
ایجاد دو فایل پیکربندی در /etc/systemd/network:
تعریف دستگاه پل (50-br0.netdev):
[NetDev] Name=br0Kind=bridge
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
پیکربندی شبکه پل (51-br0-bind.network):
[Match] Name=br0 [Network] Address=172.19.180.254/24IPForward=yes
ConfigureWithoutCarrier=yes
DHCPServer=yes [DHCPServer] PoolSize=253
EmitRouter=yes
EmitDNS=yes
DNS=8.8.8.8
DefaultLeaseTimeSec=600
MaxLeaseTimeSec=7200
Address=172.19.180.1 [DHCPServerStaticLease] MACAddress=52:54:00:ab:cd:02
Address=172.19.180.2
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
3. فعال کردن IP Forwarding
برای اجازه دادن به ارتباط بین گره ها و اینترنت:
# Enable IP forwarding
sudo sysctl -w net.ipv4.ip_forward=1
# Configure iptables to allow forwarding
sudo iptables -P FORWARD ACCEPT
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ایجاد ماشین های مجازی با Multipass
Multipass یک روش سبک وزن برای ایجاد ماشین های مجازی اوبونتو فراهم می کند. ما آن را برای کار با شبکه پل خود پیکربندی می کنیم.
1. راه اندازی Multipass با LXD
snap install lxd
snap connect multipass:lxd lxd
multipass set local.driver=lxd
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
2. راه اندازی گره های Kubernetes
# Control plane node
multipass launch jammy \
–name ckad-cp \
–cpus 2 \
–memory 8G \
–disk 20G \
–network name=br0,mode=auto,mac=52:54:00:ab:cd:01
# Worker node
multipass launch jammy \
–name ckad-wn0 \
–cpus 2 \
–memory 8G \
–disk 20G \
–network name=br0,mode=auto,mac=52:54:00:ab:cd:02
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
3. بهینه سازی پیکربندی شبکه
برای اطمینان از اینکه Kubernetes از رابط شبکه صحیح استفاده می کند، باید اولویت های رابط را در هر گره تنظیم کنیم. در اینجا یک راه سریع برای انجام این کار با استفاده از آن وجود دارد yq:
# Install yq
sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq \
&& sudo chmod +x /usr/bin/yq
# Update netplan configuration
sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.old
sudo yq ‘.network.ethernets.default.match.macaddress as $default |
.network.ethernets.extra0.match.macaddress as $extra |
.network.ethernets.default.match.macaddress = $extra |
.network.ethernets.extra0.match.macaddress = $default’ \
/etc/netplan/50-cloud-init.yaml.old |
sudo tee /etc/netplan/50-cloud-init.yaml
# Restart the node
sudo reboot
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
راهنمای عیب یابی
مسائل و راه حل های رایج
شبکه Bridge بالا نمی آید
# Check bridge status
ip link show br0
# If DOWN, try:
sudo ip link set br0 up
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
VM ها به اینترنت دسترسی ندارند
sysctl net.ipv4.ip_forward
قوانین iptables را بررسی کنید:
sudo iptables -L -v -n
بررسی وضوح DNS:
dig @8.8.8.8 google.com
DHCP روی Bridge کار نمی کند
گزارش های systemd-networkd را بررسی کنید:
journalctl -u systemd-networkd
مسائل اولویت شبکه VM
بررسی معیارهای رابط:
ip route show
مراحل تایید
پس از راه اندازی، محیط خود را تأیید کنید:
اتصال به شبکه
# From VMs
ping 172.19.180.254 # Should reach bridge
ping 8.8.8.8 # Should reach internet
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اولویت رابط
# Should show bridge interface as priority
ip route | grep default
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
وضوح DNS
# Should resolve correctly
nslookup kubernetes.io
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
نکات بهینه سازی عملکرد
تخصیص منابع VM
هسته های CPU را بیش از حد متعهد نکنید
حداقل 4 گیگابایت رم برای سیستم میزبان بگذارید
در صورت امکان از SSD برای ذخیره سازی VM استفاده کنید
عملکرد شبکه
اگر شبکه شما از آن پشتیبانی می کند، فریم های جامبو را فعال کنید:
sudo ip link set br0 mtu 9000
نتیجه گیری
با این تنظیمات، اکنون یک محیط محلی قوی برای آماده سازی CKAD دارید. پیکربندی شبکه پل ارتباط قابل اعتماد بین گره ها را تضمین می کند، در حالی که Multipass مدیریت آسان VM را فراهم می کند. این محیط تعادلی بین عملکرد و کارایی منابع برقرار می کند و آن را برای یادگیری مدیریت Kubernetes عالی می کند.
به یاد داشته باشید که منابع سیستم را در طول آزمایش های سنگین نظارت کنید و منابع VM را بر اساس نیازهای حجم کاری خود تنظیم کنید. در حالی که این راهاندازی به پیکربندی اولیه بیشتری نسبت به جایگزینهای مبتنی بر ابر نیاز دارد، تجربه عملی ارزشمندی را با مفاهیم شبکه و مدیریت سیستم ارائه میکند که به خوبی در سفر Kubernetes به شما کمک خواهد کرد.
مراحل بعدی نصب اجزای Kubernetes و پیکربندی خوشه خود با توجه به مستندات ارائه شده توسط دوره است.
تمرین مبارک!
منابع اضافی
مقدمه
آماده شدن برای صدور گواهینامه توسعه دهنده برنامه کاربردی Kubernetes (CKAD) نیازمند یک محیط قابل اعتماد برای تمرین عملی است. در حالی که ارائه دهندگان ابر اغلب توصیه می شوند، راه اندازی یک محیط محلی می تواند مقرون به صرفه تر باشد و فرصت های یادگیری ارزشمندی را فراهم کند. در این راهنما، من شما را در ایجاد یک محیط محلی قوی Kubernetes با استفاده از Multipass و شبکه پل اوبونتو راهنمایی خواهم کرد.
چرا Local Setup؟
وقتی شروع به آماده شدن برای گواهینامه CKAD خود کردم، محیطی می خواستم که:
- شبکهای ثابت بین گرهها فراهم کنید
- اجازه کنترل کامل بر زیرساخت را بدهید
- هزینه ها را در مقایسه با راه حل های ابری به حداقل برسانید
- ارائه انعطاف پذیری برای آزمایش
الزامات سخت افزاری
قبل از شروع، مطمئن شوید که سیستم شما این حداقل الزامات را برآورده می کند:
حداقل نیازها:
- CPU: 4 هسته (8 رشته توصیه می شود)
- رم: حداقل 16 گیگابایت، 32 گیگابایت توصیه می شود
- فضای ذخیره سازی: 100 گیگابایت فضای آزاد (SSD توصیه می شود)
محیط آزمون من:
- پردازنده: AMD Ryzen 5 3600 (6 هسته، 12 رشته)
- رم: 64 گیگابایت DDR4
- فضای ذخیره سازی: 1 ترابایت SSD + 1 ترابایت هارد دیسک + 750 گیگابایت هارد دیسک
توجه: در حالی که میتوانید این تنظیمات را با مشخصات پایینتر اجرا کنید، ممکن است هنگام اجرای چندین کانتینر و سرویس با مشکلات عملکردی مواجه شوید.
سازگاری سیستم
این راهنما در موارد زیر تست شده است:
- اوبونتو 24.10 (سیستم میزبان)
- اوبونتو 22.04 LTS (Jammy) برای ماشین های مجازی
- Multipass 1.14.1
- LXD 5.21.2 LTS
در حالی که مراحل باید روی سایر نسخههای اوبونتو (20.04+) کار کنند، ممکن است با تفاوتهای جزئی در نام رابط شبکه یا تنظیمات پیشفرض مواجه شوید. اگر از اوبونتو 22.04 یا نسخه قبلی استفاده می کنید، ممکن است لازم باشد نحو پیکربندی شبکه را کمی تغییر دهید.
معماری شبکه
قبل از اینکه وارد تنظیمات شویم، بیایید معماری شبکه ای را که ایجاد خواهیم کرد، درک کنیم:
راه اندازی ما چندین رابط شبکه ایجاد می کند:
- شبکه پل (br0): شبکه اصلی برای ارتباطات Kubernetes
- Host Network (enp37s0): اتصال به شبکه خارجی
- شبکه های مجازی: هر ماشین مجازی دو رابط دارد
- enp5s0: شبکه پیش فرض Multipass
- enp6s0: رابط شبکه پل
راه اندازی پل شبکه
اولین وظیفه ما ایجاد یک پل شبکه اختصاصی برای گره های Kubernetes است. استفاده خواهیم کرد systemd-networkd
برای این منظور، که یک پشته شبکه ای قوی و مدرن را فراهم می کند.
1. آماده سازی محیط شبکه
ابتدا باید NetworkManager را غیرفعال کنیم و systemd-networkd را فعال کنیم:
# Disable NetworkManager
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
# Enable systemd-networkd
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd
# Configure DNS resolution
sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved
sudo rm /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
2. پیکربندی Bridge
ما یک شبکه پل با مشخصات زیر ایجاد خواهیم کرد:
- شبکه: 172.19.180.0/24
- دروازه: 172.19.180.254
- محدوده DHCP: 172.19.180.1 – 172.19.180.253
ایجاد دو فایل پیکربندی در /etc/systemd/network
:
تعریف دستگاه پل (50-br0.netdev
):
[NetDev]
Name=br0
Kind=bridge
پیکربندی شبکه پل (51-br0-bind.network
):
[Match]
Name=br0
[Network]
Address=172.19.180.254/24
IPForward=yes
ConfigureWithoutCarrier=yes
DHCPServer=yes
[DHCPServer]
PoolSize=253
EmitRouter=yes
EmitDNS=yes
DNS=8.8.8.8
DefaultLeaseTimeSec=600
MaxLeaseTimeSec=7200
[DHCPServerStaticLease]
MACAddress=52:54:00:ab:cd:01
Address=172.19.180.1
[DHCPServerStaticLease]
MACAddress=52:54:00:ab:cd:02
Address=172.19.180.2
3. فعال کردن IP Forwarding
برای اجازه دادن به ارتباط بین گره ها و اینترنت:
# Enable IP forwarding
sudo sysctl -w net.ipv4.ip_forward=1
# Configure iptables to allow forwarding
sudo iptables -P FORWARD ACCEPT
ایجاد ماشین های مجازی با Multipass
Multipass یک روش سبک وزن برای ایجاد ماشین های مجازی اوبونتو فراهم می کند. ما آن را برای کار با شبکه پل خود پیکربندی می کنیم.
1. راه اندازی Multipass با LXD
snap install lxd
snap connect multipass:lxd lxd
multipass set local.driver=lxd
2. راه اندازی گره های Kubernetes
# Control plane node
multipass launch jammy \
--name ckad-cp \
--cpus 2 \
--memory 8G \
--disk 20G \
--network name=br0,mode=auto,mac=52:54:00:ab:cd:01
# Worker node
multipass launch jammy \
--name ckad-wn0 \
--cpus 2 \
--memory 8G \
--disk 20G \
--network name=br0,mode=auto,mac=52:54:00:ab:cd:02
3. بهینه سازی پیکربندی شبکه
برای اطمینان از اینکه Kubernetes از رابط شبکه صحیح استفاده می کند، باید اولویت های رابط را در هر گره تنظیم کنیم. در اینجا یک راه سریع برای انجام این کار با استفاده از آن وجود دارد yq
:
# Install yq
sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq \
&& sudo chmod +x /usr/bin/yq
# Update netplan configuration
sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.old
sudo yq '.network.ethernets.default.match.macaddress as $default |
.network.ethernets.extra0.match.macaddress as $extra |
.network.ethernets.default.match.macaddress = $extra |
.network.ethernets.extra0.match.macaddress = $default' \
/etc/netplan/50-cloud-init.yaml.old |
sudo tee /etc/netplan/50-cloud-init.yaml
# Restart the node
sudo reboot
راهنمای عیب یابی
مسائل و راه حل های رایج
- شبکه Bridge بالا نمی آید
# Check bridge status
ip link show br0
# If DOWN, try:
sudo ip link set br0 up
-
VM ها به اینترنت دسترسی ندارند
sysctl net.ipv4.ip_forward
-
قوانین iptables را بررسی کنید:
sudo iptables -L -v -n
-
بررسی وضوح DNS:
dig @8.8.8.8 google.com
-
DHCP روی Bridge کار نمی کند
- گزارش های systemd-networkd را بررسی کنید:
journalctl -u systemd-networkd
-
مسائل اولویت شبکه VM
- بررسی معیارهای رابط:
ip route show
مراحل تایید
پس از راه اندازی، محیط خود را تأیید کنید:
- اتصال به شبکه
# From VMs
ping 172.19.180.254 # Should reach bridge
ping 8.8.8.8 # Should reach internet
- اولویت رابط
# Should show bridge interface as priority
ip route | grep default
- وضوح DNS
# Should resolve correctly
nslookup kubernetes.io
نکات بهینه سازی عملکرد
-
تخصیص منابع VM
- هسته های CPU را بیش از حد متعهد نکنید
- حداقل 4 گیگابایت رم برای سیستم میزبان بگذارید
- در صورت امکان از SSD برای ذخیره سازی VM استفاده کنید
-
عملکرد شبکه
- اگر شبکه شما از آن پشتیبانی می کند، فریم های جامبو را فعال کنید:
sudo ip link set br0 mtu 9000
نتیجه گیری
با این تنظیمات، اکنون یک محیط محلی قوی برای آماده سازی CKAD دارید. پیکربندی شبکه پل ارتباط قابل اعتماد بین گره ها را تضمین می کند، در حالی که Multipass مدیریت آسان VM را فراهم می کند. این محیط تعادلی بین عملکرد و کارایی منابع برقرار می کند و آن را برای یادگیری مدیریت Kubernetes عالی می کند.
به یاد داشته باشید که منابع سیستم را در طول آزمایش های سنگین نظارت کنید و منابع VM را بر اساس نیازهای حجم کاری خود تنظیم کنید. در حالی که این راهاندازی به پیکربندی اولیه بیشتری نسبت به جایگزینهای مبتنی بر ابر نیاز دارد، تجربه عملی ارزشمندی را با مفاهیم شبکه و مدیریت سیستم ارائه میکند که به خوبی در سفر Kubernetes به شما کمک خواهد کرد.
مراحل بعدی نصب اجزای Kubernetes و پیکربندی خوشه خود با توجه به مستندات ارائه شده توسط دوره است.
تمرین مبارک!
منابع اضافی