برنامه نویسی

راه اندازی یک محیط محلی 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=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 و پیکربندی خوشه خود با توجه به مستندات ارائه شده توسط دوره است.

تمرین مبارک!

منابع اضافی

مقدمه

آماده شدن برای صدور گواهینامه توسعه دهنده برنامه کاربردی 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
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

راهنمای عیب یابی

مسائل و راه حل های رایج

  1. شبکه Bridge بالا نمی آید
   # Check bridge status
   ip link show br0
   # If DOWN, try:
   sudo ip link set br0 up
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. VM ها به اینترنت دسترسی ندارند

     sysctl net.ipv4.ip_forward
    
  • قوانین iptables را بررسی کنید:

     sudo iptables -L -v -n
    
  • بررسی وضوح DNS:

     dig @8.8.8.8 google.com
    
  1. DHCP روی Bridge کار نمی کند

    • گزارش های systemd-networkd را بررسی کنید:
     journalctl -u systemd-networkd
    
  1. مسائل اولویت شبکه VM

    • بررسی معیارهای رابط:
     ip route show
    

مراحل تایید

پس از راه اندازی، محیط خود را تأیید کنید:

  1. اتصال به شبکه
   # From VMs
   ping 172.19.180.254  # Should reach bridge
   ping 8.8.8.8         # Should reach internet
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. اولویت رابط
   # Should show bridge interface as priority
   ip route | grep default
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. وضوح DNS
   # Should resolve correctly
   nslookup kubernetes.io
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نکات بهینه سازی عملکرد

  1. تخصیص منابع VM

    • هسته های CPU را بیش از حد متعهد نکنید
    • حداقل 4 گیگابایت رم برای سیستم میزبان بگذارید
    • در صورت امکان از SSD برای ذخیره سازی VM استفاده کنید
  2. عملکرد شبکه

    • اگر شبکه شما از آن پشتیبانی می کند، فریم های جامبو را فعال کنید:
     sudo ip link set br0 mtu 9000
    

نتیجه گیری

با این تنظیمات، اکنون یک محیط محلی قوی برای آماده سازی CKAD دارید. پیکربندی شبکه پل ارتباط قابل اعتماد بین گره ها را تضمین می کند، در حالی که Multipass مدیریت آسان VM را فراهم می کند. این محیط تعادلی بین عملکرد و کارایی منابع برقرار می کند و آن را برای یادگیری مدیریت Kubernetes عالی می کند.

به یاد داشته باشید که منابع سیستم را در طول آزمایش های سنگین نظارت کنید و منابع VM را بر اساس نیازهای حجم کاری خود تنظیم کنید. در حالی که این راه‌اندازی به پیکربندی اولیه بیشتری نسبت به جایگزین‌های مبتنی بر ابر نیاز دارد، تجربه عملی ارزشمندی را با مفاهیم شبکه و مدیریت سیستم ارائه می‌کند که به خوبی در سفر Kubernetes به شما کمک خواهد کرد.

مراحل بعدی نصب اجزای Kubernetes و پیکربندی خوشه خود با توجه به مستندات ارائه شده توسط دوره است.

تمرین مبارک!

منابع اضافی

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

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

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

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