paint-brush
څنګه د ټورینګ پای 2 کور کلستر جوړ کړئلخوا@tomassirio
747 لوستل
747 لوستل

څنګه د ټورینګ پای 2 کور کلستر جوړ کړئ

لخوا Tomas Sirio11m2024/10/07
Read on Terminal Reader

ډېر اوږد؛ لوستل

د 2022 په جون کې زه د کیک سټارټر سره د یوې بورډ په اړه ولیدل چې په یو وخت کې تر 4 پورې د راسبیري پای 4 کمپیوټري ماډلونو درلودو وړتیا لري. ما پریکړه وکړه چې پروژه بیرته واخلم او بورډ واخلم. دوه کاله وروسته ، زما تورینګ پای 2 لاهم په خپل بکس کې په المارۍ کې خلاص ناست و. ما غوښتل د کلسترینګ په اړه نور څه زده کړم او مخکې یې هیڅکله د کبرنیټس بشپړ کلستر نه و جوړ کړی.
featured image - څنګه د ټورینګ پای 2 کور کلستر جوړ کړئ
Tomas Sirio HackerNoon profile picture
0-item


فهرست

  • کیسه
  • پلان
    • تورینګ پی 2
  • ترتیب
  • فلش کول
    • د ذخیرې
    • کوبرنيټس
  • غوښتنلیکونه
  • وروستی جوړونه
  • راتلونکې
  • پای

کیسه

د 2022 په جون کې، زه د یوې بورډ په اړه د Kickstarter سره مخ شوم چې په یو وخت کې تر 4 پورې Raspberry Pi 4 Compute Modules لري.

د ډیر غور پرته، ما پریکړه وکړه چې د پروژې ملاتړ وکړم او بورډ واخلم.


دوه کاله ګړندی لاړ ، او زما تورینګ پای 2 لاهم په خپل بکس کې په یوه شیلف کې خلاص ناست و چې ژوند په لاره کې راوتلی و ، او زه ډاډه نه وم چې ولې ما دا په لومړي ځای کې اخیستی و.


د تورینګ پای بورډ

په هرصورت، ما په پای کې پریکړه وکړه چې دا هڅه وکړم. ما غوښتل د کلسترینګ په اړه نور څه زده کړم او مخکې یې هیڅکله د کبرنیټس بشپړ کلستر نه و جوړ کړی. نو ، زه د مصرف حالت ته لاړم او درې راسبیري پای 4s (8GB رام ، 8GB داخلي ذخیره) او یو Nvidia Jetson Nano (4GB) ترلاسه کړم.


Raspberry Pi 4 CMs

د بورډ استعداد ته په پام سره، زه کولی شم مختلف کمپیوټري ماډلونه مخلوط کړم. ما پریکړه وکړه چې د جیټسن نانو شامل کړم، فکر کوم چې دا به ما ته اجازه راکړي چې په راتلونکي کې د CUDA چلوونکو سره تجربه وکړم او د ماشین زده کړې ته لاړ شم. څوک پوهیږي؟ زه ممکن حتی پدې کوبرنیټس کلستر کې زما د خپل GPT معاون کوربه توب پای ته ورسوم.
جیټسن نانو
(Spoilers: It didn't happen)

پلان

زما لومړني پلان کې د 3 Pi 4 CM او د جیټسن نانو په بورډ کې کوربه توب شامل و. همچنان ، ما پلان درلود چې د ذخیره کولو لپاره د 1TB SSD ډرایو او د انټرنیټ لاسرسي لپاره Wi-Fi کارت وکاروم. په هرصورت ، د جیټسن نانو تنظیم کولو پروسې او د دې ضعیف اسنادو سره د ډیری ستونزو سره مخ کیدو وروسته ، ما پریکړه وکړه چې دا بیرته ورکړم. پرځای یې ، ما د څلورم راسبیري پای 4 غوره کړ.


سربیره پردې ، ما یو زوړ Raspberry Pi 4 درلود چې شاوخوا 4GB رام سره پروت و ، نو ما پریکړه وکړه چې دا د پنځم نوډ په توګه شامل کړم.
زوړ راسبیري

تورینګ پی 2

د تورینګ پای 2 د مینی ITX فارم فکتور بورډ دی چې کولی شي تر څلورو پورې د راسبیري پای کمپیوټر ماډلونه ځای په ځای کړي (د جیټسن نانوس او د تورینګ کمپیوټر ماډل سره هم مطابقت لري). دا د کمپیوټر ماډلونو چمکولو لپاره د PCI ایکسپریس بندر، دوه NVME بندرونه، دوه SATA بندرونه، او یو USB بندر لري.
پلان ۰

  • نوډ 1 :

    • د USB 2.0 پورټ (د کمپیوټر ماډلونو چمکولو لپاره)

    • HDMI پورټ (د ډیبګ کولو لپاره)

    • د PCI ایکسپریس بندر (د وای فای کارت لپاره)


  • نوډ 2 :

    • زه به دا د NVME ذخیره کولو لپاره وکاروم ، مګر دا د Raspberry Pi 4s سره مطابقت نلري.


  • نوډ 3 :

    • په هرصورت، د SATA بندرونه دلته کارول کیدی شي. نو، دا نوډ به د NFS شریک ډرایو ولري.


  • نوډ 4 :

    • د USB 3.0 بندرونه (که زه کله هم ورته اړتیا لرم).


  • زما زوړ راسبیري :

    • د Kubernetes ماسټر نوډ به وي. کوم ځانګړی دلیل نشته؛ زه کولی شم په دې ډول زما د تنظیم په اړه ښه فکر وکړم


    پلان ۲

په نهایت کې ، نظر دا دی چې د ځینې اضافو سره د میډیا سرور کوربه توب وکړي.
د جریان چارټ

ترتیب

دا یو څه موده کیږي چې ما یو کمپیوټر سره یوځای کړی، او دا لومړی ځل و چې ما د کمپیوټر ماډلونو او د دوی اډاپټرونو سره لوبې کولې، نو دا د اونۍ پای لپاره خورا ساتیري وه. څنګه چې زما بټوه ګرمه وه خو بیا هم نه سوځي، ما فکر وکړ، ولې دوزخ د هغې لپاره ښه قضیه نه اضافه کوي؟
ان باکس کول ۱

د بورډ د مینی ITX فارم فاکتور ته په پام سره، زه کولی شم دا په هر هغه زړه پورې ITX قضیه کې فټ کړم چې زه یې په ایمیزون کې موندلی شم. کیوب 500 ما له لارې ترلاسه کړ. ما دمخه د DIY کلستر جوړ کړی و، د داسې شی لپاره غوره قضیه، یو DIY هم و.
Qube 500

ما د 650W بریښنا رسولو (ټول اوورکیل) ، یو کوچنی وای فای مینی PCI ایکسپریس کارت ، او د 1TB SATA SSD هم اضافه کړ.


د 'شیان' یوځای کول خورا ساده وو. د کمپیوټ ماډلونو او د دوی د تودوخې ډوبونو تر مینځ یو څه حرارتي پیسټ او د دوی اډاپټرونو سره یوځای کول مخکې له دې چې په تورینګ بورډ کې ترتیب شي؛
د تورینګ پای بورډ 1

ما امر ته اشاره وکړه ځکه چې دا د پروژې یوه مهمه برخه وه. د تورینګ پای 2 د کمپیوټري ماډلونو په اوږدو کې توزیع شوي د دې بندرونو مدیریت وړاندیز کوي. پدې حالت کې، د PCI ایکسپریس 1 د لومړي نوډ لخوا اداره کیده پداسې حال کې چې د SSD ډرایو د دریم لخوا اداره کیده. دوهم کولی شي د NVME بندر اداره کړي او څلورم په بل SSD IIRC کې ، مګر ما همدا اوس د دوی لپاره هیڅ ګټه نه درلوده.

فلش کول

ما مخکې د راسبیري پیس نصب کړی مګر هیڅکله موډولونه حساب نه کوي. د تورینګ پای 2 په شا کې یو USB پورټ لري چې د کمپیوټر ماډلونو فلش کولو لپاره کارول کیږي.


له بده مرغه، ما د USB A څخه USB A کیبل کارولو هڅه وکړه چې د ډیټا لیږد کیبل نه و، نو پداسې حال کې چې ما د ایمیزون لپاره د کیبل وړاندې کولو لپاره انتظار کاوه، ما د کمپیوټر ماډلونو فلش کولو بله لاره وموندله.


تورینګ پای 2 د CLI وسیله لري چې نه یوازې د کمپیوټر ماډلونو فلش کولو لپاره کارول کیدی شي بلکه د دوی بریښنا اداره کولو ، بیا تنظیم کولو ، ځینې احصایې چیک کولو او داسې نور لپاره هم کارول کیدی شي.


هغه کمانډ چې د کمپیوټر ماډلونو نصبولو لپاره کارول کیږي دا وو:


 tpi flash -i /path/to/image -n {nodes 1 to 4}


خورا ساده پروسه ما له ځان سره فکر کاوه مخکې لدې چې پوه شوم چې د راسبیان عکس د ډیفالټ لخوا فعال شوي SSH سره نه راځي.

دا، البته، د تورینګ مسؤلیت نه دی. زه باید هغه کیبل ته انتظار وایم، مګر ښه.


د دې د حل کولو لپاره ، ما باید عکس زما په محلي ماشین کې نصب کړی وای او د بوټ برخې کې ssh په نوم خالي فایل اضافه کړم. دا به په ډیفالټ SSH فعال کړي.


 sudo mkdir /mnt/pi-boot sudo mount /dev/sdX1 /mnt/pi-boot sudo touch /mnt/pi-boot/ssh sudo umount /mnt/pi-boot


اوس، زما ټول پیس د کارولو لپاره چمتو وو. ما دوی له شبکې سره وصل کړل او تنظیم یې پیل کړ. د تنظیم کولو لپاره لږ څه شتون درلود ځکه چې زه به یې د کوبرنیټس نوډونو په توګه وکاروم.


مګر شیان لکه ویم او د سیسټم تازه کول اړین وو.


تورینګ ۱

دې ما ته دا فرصت هم راکړ چې د Tmux کارولو څرنګوالی زده کړم. غوره وسیله چې ما په یو څه وخت کې زده کړې.

د ذخیرې

که تاسو پورته یو څو پراګرافونه په یاد ولرئ، ما یادونه وکړه چې دریم نوډ به د NFS شریک شوي ډرایو لپاره وکارول شي. ما د 1TB SSD ډرایو درلود چې زه یې د دې هدف لپاره کاروم. زه باید دا فارمیټ کړم او په دریم نوډ کې یې نصب کړم.


مګر ما اړتیا درلوده چې پدې نوډ کې د NFS سرور نصب کړم او په نورو نوډونو کې یې تنظیم کړم. ایا دا د تولید چاپیریال لپاره وړاندیز شوی؟ دوزخ نه، مګر دا د کور کلستر دی، نو زه د هغې په اړه ډیر اندیښمن نه یم.
Tmux1

دلته هغه ګامونه دي چې ما د NFS سرور تنظیم کولو لپاره اخیستي دي:

 pi@turing-03:/mnt/ssd/data $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 953.9G 0 disk /mnt/ssd mmcblk0 179:0 0 7.3G 0 disk ├─mmcblk0p1 179:1 0 512M 0 part /boot/firmware └─mmcblk0p2 179:2 0 6.8G 0 part / mmcblk0boot0 179:32 0 4M 1 disk mmcblk0boot1 179:64 0 4M 1 disk


لومړی، ما ولیدل چې ډرایو په سمه توګه نصب شوی و. بیا ما د NFS سرور نصب کړ:

 sudo mkdir /mnt/nfs_share sudo mount /dev/sda /mnt/nfs_share


دا د fstab فایل کې اضافه کړئ ترڅو ډاډ ترلاسه کړئ چې دا په بوټ کې نصب شوی:

/etc/fstab فایل ته لاندې کرښه اضافه کول)

 echo '/dev/sda /mnt/ssd ext4 defaults 0 0' | sudo tee -a /etc/fstab


اوس، د nfs-kernel-server نصب کول:

 sudo apt update sudo apt install nfs-kernel-server


او زما ډرایو د /etc/exports فایل ته اضافه کول:

 echo '/mnt/ssd *(rw,sync,no_subtree_check,no_root_squash)' | sudo tee -a /etc/exports


اوس، په نورو نوډونو کې، زه باید nfs-common نصب کړم:

 sudo apt update sudo apt install nfs-common


او هر نوډ ته ډرایو هک کول:

 sudo mount -t nfs {IP-for-the-drives-node}:/mnt/ssd /mnt

Tmux 0

Neofetch په ټولو نوډونو کې نصب شوی ځکه چې زه خوښ یم.

د Kubernetes کلستر

ما مخکې هیڅکله د کبرنیټس کلستر له سکریچ څخه نه و جوړ کړی، مګر ما په دې موضوع کې د جیف ګیرلینګ ډیری ویډیوګانې لیدلي ... دا کافي تجربه ده، سمه ده؟


جیف ما د Ansible په کارولو سره K3s ته لارښود کړ ، د لږ وزن لرونکي Kubernetes توزیع چې زما د کور کلستر لپاره مناسب دی او د نصب کولو دمخه ټاکل شوې لاره ځکه چې زه دمخه اړتیاوې نلرم او نه هم دا نظر لرم چې دا څنګه تنظیم کړم.


نصب کول خورا ساده وو. زه باید دا په ټولو نوډونو کې نصب کړم، مګر ما باید ډاډ ترلاسه کړم چې ماسټر نوډ لومړی نصب شوی و.


نو لومړی ، ما د k3s - ځواب وړ ذخیره کلون کړه:

 git clone https://github.com/k3s-io/k3s-ansible.git


بیا زه باید د لیست فایل تنظیم کړم. زما ماسټر نوډ، لکه څنګه چې ما مخکې یادونه وکړه، زما زوړ Raspberry Pi 4 و. نو زه باید ډاډ ترلاسه کړم چې دا د لیست فایل کې لومړی دی. زه باید ډاډ ترلاسه کړم چې نور نوډونه په سم ډلو کې وو.:

 k3s_cluster: children: server: hosts: 192.168.2.105: agent: hosts: 192.168.2.101: 192.168.2.102: 192.168.2.103: 192.168.2.104:


په ورته فایل کې، ما باید د کوډ کولو نښه جوړه کړه. فایل دا په ګوته کوي چې دا څنګه ترسره کړئ، نو زه به دلته توضیحاتو ته لاړ نه شم.


بیا ما باید د لوبو کتاب چلولی وای:

 cd k3s-ansible ansible-playbook playbooks/site.yml -i inventory.yml


همدا و. تر هغه ځایه چې نصب ته ځي ، ما د کوبرنیټس کلستر پورته او روان و. ما باید په خپل محلي ماشین کې K9s نصب کړی وای ترڅو کلستر اداره کړم او کلستر ./kube/config فایل ته وتړم.

غوښتنلیکونه

په نهایت کې ، زه باید هغه غوښتنلیکونه نصب کړم چې زه غواړم په کلستر کې پرمخ وړم. ما د هغه څه په اړه ځینې نظرونه درلودل چې زه یې غواړم.

  • زه غواړم د مهالویش ډاونلوډونو سره میډیا سرور ولرم.


  • زما د شبکې DNS ته د Pi- سوراخ مثال او په کور کې په ټولو وسیلو کې ټول اعلانونه بند کړئ.


  • د ځینې زړو لوبو لوبولو او زما د کور په شبکه کې د خوندي کولو لوبې شریکولو لپاره د ریټروارک مثال (زما په ټولو وسیلو کې تاسو ته د میګامین بیټل شبکه 6 ګورئ)


دا هغه ځای دی چې زما ذخیره راځي.
ذخیره 0

د میډیا سرور لپاره ، ما پریکړه وکړه چې وکاروم:


د مثال په توګه ، زه به تاسو ته وښیم چې څنګه ما kubectl په کارولو سره سونار نصب کړ. نور غوښتنلیکونه په ورته فیشن کې نصب شوي.


د هر غوښتنلیک لپاره، ما 3 فایلونه جوړ کړل:

  • deployment.yaml د هر پوډ لپاره ترتیب دی چې غوښتنلیک پرمخ وړي

     apiVersion: apps/v1 kind: Deployment metadata: name: sonarr spec: replicas: 1 selector: matchLabels: app: sonarr template: metadata: labels: app: sonarr spec: containers: - name: sonarr image: linuxserver/sonarr ports: - containerPort: 8989 env: - name: PUID value: "911" - name: PGID value: "911" - name: TZ value: "Europe/Amsterdam" volumeMounts: - mountPath: /data name: data - name: config mountPath: /config volumes: - name: data persistentVolumeClaim: claimName: nfs-pvc - name: config persistentVolumeClaim: claimName: nfs-config-pvc


  • service.yaml د خدمت لپاره ترتیب دی چې غوښتنلیک به کلستر ته ښکاره کړي

     apiVersion: v1 kind: Service metadata: name: sonarr spec: selector: app: sonarr ports: - port: 80 targetPort: 8989 type: ClusterIP
  • ingress.yaml او دا د ننوتلو لپاره ترتیب دی چې زما شبکې ته غوښتنلیک افشا کوي


بیا موږ دا ټول kubectl په کارولو سره ځای په ځای کوو:

 kubectl apply -f sonarr/deployment.yaml kubectl apply -f sonarr/service.yaml kubectl apply -f sonarr/ingress.yaml


لکه څنګه چې تاسو لیدلی شئ ، زه د ډیټا او غوښتنلیکونو ترتیب کولو لپاره د NFS ملاتړ شوي دوامداره ذخیره کاروم.


په ذخیره کې، تاسو کولی شئ د nfs-pv.yaml او nfs-pvc.yaml فایلونه ومومئ چې ما د NFS ذخیره کولو لپاره کارولې.


برسیره پردې، ما د غوښتنلیکونو ترتیبولو لپاره یو بل دوامداره حجم ادعا جوړه کړه.
K9s 0

وروستی جوړونه

که څه هم قضیه حیرانونکې ښکاري ، دا د راسبیري پای کلسټر لپاره یو څه خورا لوی دی. د مینی ITX قضیه به زما اړتیاوې هم مناسبې کړي ، مګر زه باید اعتراف وکړم ، زه د DIY توکو لپاره سوکر یم.
بشپړ جوړونه 0


همچنان ، په عمومي ډول د LEDs لپاره سوکر. ما په قضیه کې نور څراغونه ندي اضافه کړي، مګر زه فکر کوم چې بورډ لا دمخه ښه دنده ترسره کوي. له بده مرغه، د فین پنونه د بورډ سره مطابقت نلري، او ما د مور بورډ لپاره د فین کنټرولر یا پن نه اخیستی. زه ممکن په راتلونکي کې.
کار کول 0

ځینې وختونه، تاسو باید بیرته کښیناستئ او د لید څخه خوند واخلئ.
بشپړ جوړونه 1

او په نهایت کې ، د تورینګ پای 2 کور کلستر پورته او روان دی ، او زما کور نور ګډوډ ندی.
بشپړ جوړونه 2

راتلونکې

یوازې وخت به ووایی چې زه به د دې کلستر سره څه وکړم.


په هرصورت، زه د پرومیټیوس او ګرافانا اضافه کولو په اړه فکر کوم ترڅو په کلستر کې د چک کولو لپاره ځینې میټریکونه او ښه ګرافونه ولري.


هیلم ته زما د ټولو کبرنیټ فایلونو لیږدول به هم ښه نظر وي.


په نهایت کې ، د Retroarch مثال لاهم په کار کې دی. شاید په کارونو کې یو څه ډیر خوشبین وي په دې شرط چې پوډ په CrashLoopBackOff حالت کې ژوند کوي. خو زه به هلته ورشم.

پای

که تاسو د دې پوسټ پای ته رسیدلی یاست، زه ستاسو د وخت لپاره مننه کوم. زه امید لرم چې تاسو له دې څخه ډیر خوند اخیستی وي لکه څنګه چې ما دواړه کلستر یوځای کړی او د هغې په اړه یې لیکلي.