paint-brush
Turing Pi 2 гэрийн кластерийг хэрхэн бүтээх вэby@tomassirio
454 уншилтууд
454 уншилтууд

Turing Pi 2 гэрийн кластерийг хэрхэн бүтээх вэ

by Tomas Sirio11m2024/10/07
Read on Terminal Reader

Хэтэрхий урт; Унших

2022 оны 6-р сард би нэгэн зэрэг 4 хүртэлх Raspberry Pi 4 тооцоолох модультай байх боломжтой самбарын тухай Kickstarter-тай танилцсан. Би төслийг дэмжиж, самбар худалдаж авахаар шийдсэн. Хоёр жилийн дараа миний Turing Pi 2 тавиур дээр нээгдээгүй хэвээр байв. Би кластерын талаар илүү ихийг мэдэхийг хүсч байсан бөгөөд урьд өмнө хэзээ ч эхнээс нь бүрэн Kubernetes кластер байгуулж байгаагүй.
featured image - Turing Pi 2 гэрийн кластерийг хэрхэн бүтээх вэ
Tomas Sirio HackerNoon profile picture
0-item


Агуулга

  • Түүх
  • Төлөвлөгөө
    • Turing Pi 2
  • Тохиргоо
  • The Flashing
    • Хадгалах газар
    • Кубернетчууд
  • Програмууд
  • Эцсийн бүтээн байгуулалт
  • Ирээдүй
  • Төгсгөл

Түүх

2022 оны 6-р сард би нэгэн зэрэг 4 хүртэлх Raspberry Pi 4 тооцоолох модультай байх боломжтой самбарын тухай Kickstarter-тай танилцсан.

Нэг их бодолгүй би төслийг дэмжиж, самбар худалдаж авахаар шийдсэн.


Хоёр жил хурдан урагшлахад миний Turing Pi 2 хайрцгандаа нээлгүйгээр тавиур дээр сууж байсан бөгөөд амьдрал нь саад болж байсан тул би яагаад үүнийг анх худалдаж авснаа мэдэхгүй байв.


Turing Pi самбар

Гэсэн хэдий ч би эцэст нь туршиж үзэхээр шийдсэн. Би кластерын талаар илүү ихийг мэдэхийг хүсч байсан бөгөөд урьд өмнө хэзээ ч эхнээс нь бүрэн Kubernetes кластер байгуулж байгаагүй. Тиймээс би зарцуулалтын горимд орж гурван Raspberry Pi 4 (8 ГБ RAM, 8 ГБ дотоод санах ой) болон нэг Nvidia Jetson Nano (4 ГБ) авсан.


Raspberry Pi 4 CM

Самбарын олон талт байдлыг харгалзан би өөр өөр тооцооллын модулиудыг хольж болно. Би Jetson Nano-г оруулахаар шийдсэн бөгөөд энэ нь надад ирээдүйд CUDA драйверуудыг туршиж үзэх, машин сургалтын талаар судлах боломжийг олгоно гэж бодож байна. Хэн мэдэх вэ? Би энэ Kubernetes кластер дээр өөрийн GPT туслахаа байршуулж магадгүй юм.
Жетсон Нано
(Spoilers: It didn't happen)

Төлөвлөгөө

Миний анхны төлөвлөгөөнд самбар дээр байрлуулсан 3 Pi 4 CM болон Jetson Nano багтсан. Мөн би хадгалахад зориулж 1TB SSD диск, интернетэд нэвтрэх Wi-Fi карт ашиглахаар төлөвлөж байсан. Гэсэн хэдий ч Jetson Nano-г тохируулах явцад олон бэрхшээлтэй тулгарсны дараа, би үүнийг буцааж өгөхөөр шийдсэн. Үүний оронд би дөрөв дэх Raspberry Pi 4-ийг сонгосон.


Нэмж дурдахад надад 4 ГБ RAM-тай хуучин Raspberry Pi 4 байсан тул би үүнийг тав дахь зангилаа болгон оруулахаар шийдсэн.
Хуучин бөөрөлзгөнө

Turing Pi 2

Turing Pi 2 нь Mini ITX форматын самбар бөгөөд дөрвөн Raspberry Pi тооцоолох модулийг багтаах боломжтой (мөн Jetson Nanos болон Turing Compute Module-тэй нийцдэг). Энэ нь PCI Express порт, хоёр NVME порт, хоёр SATA порт, тооцоолох модулиудыг анивчуулах USB порттой.
Төлөвлөгөө 0

  • Зангилаа 1 :

    • USB 2.0 порт (Тооцоолох модулиудыг анивчуулах)

    • HDMI порт (дибаг хийх)

    • PCI Express порт (Wi-Fi картын хувьд)


  • Зангилаа 2 :

    • Би үүнийг NVME санах ойд ашиглах байсан, гэхдээ энэ нь Raspberry Pi 4s-тэй тохирохгүй байна.


  • Зангилаа 3 :

    • Гэхдээ SATA портуудыг энд ашиглаж болно. Тиймээс энэ зангилаа NFS дундын драйвтай байх болно.


  • Зангилаа 4 :

    • USB 3.0 портууд (хэрэв надад хэрэгтэй бол).


  • Миний хуучин бөөрөлзгөнө :

    • Kubernetes-ийн мастер зангилаа байх болно. Онцгой шалтгаан байхгүй; Би ийм байдлаар тохиргоогоо илүү сайн бодож чадна


    Төлөвлөгөө 2

Эцсийн эцэст, санаа нь зарим нэмэлт хэрэгсэл бүхий медиа серверийг байрлуулах явдал юм.
Урсгал диаграм

Тохиргоо

Би компьютер угсарснаас хойш багагүй хугацаа өнгөрч, би анх удаа Compute Modules болон тэдгээрийн адаптеруудтай тоглож байсан тул амралтын өдрүүдээр маш хөгжилтэй байсан. Миний хэтэвч халуу оргиж байсан ч шатахгүй байгаа тул яагаад түүнд сайхан хайрцаг нэмж болохгүй гэж бодсон юм.
Хайрцаг задлах 1

Самбарын Mini ITX форм хүчин зүйлийг харгалзан би үүнийг Amazon дээрээс олж болох ямар ч гоёмсог ITX хайрцагт суулгаж болно. Qube 500 намайг амжилттай болгосон. Би аль хэдийн DIY кластер хийж байсан, ийм зүйлд хамгийн тохиромжтой тохиолдол бол DIY юм.
Qube 500

Би мөн 650W тэжээлийн хангамж (нийт хэт ачаалал), нэг жижиг Wi-Fi Mini PCI Express карт, 1TB SATA SSD нэмсэн.


"Зүйлс"-ийг нэгтгэх нь маш энгийн байсан. Тооцооллын модулиуд болон тэдгээрийн дулаан шингээгчийн хооронд бага зэрэг дулааны оо түрхэж, тэдгээрийг Тюринг самбарт дарааллаар нь тохируулахын өмнө адаптеруудтай нь зуурна;
Turing Pi самбар 1

Төслийн чухал хэсэг байсан учраас би тушаалыг дурдлаа. Turing Pi 2 нь тооцооллын модулиудаар тархсан портуудын удирдлагыг санал болгодог. Энэ тохиолдолд PCI Express 1-ийг Эхний зангилаа удирдаж, SSD дискийг 3-р зангилаагаар удирдаж байсан. 2-р нь NVME портыг, нөгөө SSD IIRC-ийн 4-р порттой ажиллах боломжтой байсан ч би яг одоо тэдгээрийг ашиглах боломжгүй байсан.

The Flashing

Би Raspberry Pis-г өмнө нь суулгаж байсан боловч тооцоолох модулийг хэзээ ч суулгаагүй. Turing Pi 2 нь арын хэсэгт USB порттой бөгөөд үүнийг тооцоолох модулиудыг анивчихад ашигладаг.


Харамсалтай нь би өгөгдөл дамжуулах кабель биш USB A-аас USB A кабель ашиглахыг оролдсон тул Амазон кабель хүргэхийг хүлээж байхдаа Тооцоолох модулиудыг анивчуулах өөр аргыг олсон.


Turing Pi 2 нь CLI хэрэгсэлтэй бөгөөд үүнийг зөвхөн тооцоолох модулиудыг анивчуулахаас гадна тэдгээрийн хүчийг удирдах, дахин тохируулах, зарим статистикийг шалгах гэх мэтийг ашиглаж болно.


Тооцооллын модулиудыг суулгахад ашигласан тушаал нь:


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


Маш энгийн үйл явц. Би Raspbian дүрс нь анхдагчаар 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


Одоо миний бүх пийс ашиглахад бэлэн болсон. Би тэдгээрийг сүлжээнд холбож, тохируулж эхэлсэн. Би тэдгээрийг Kubernetes зангилаа болгон ашиглах гэж байсан тул тохируулах зүйл бага байсан.


Гэхдээ vim, системийг шинэчлэх гэх мэт зүйлс зайлшгүй шаардлагатай байсан.


Тюринг 1

Энэ нь надад Tmux-г хэрхэн ашиглах талаар суралцах боломжийг олгосон. Миний хэсэг хугацаанд сурсан хамгийн шилдэг хэрэгсэл.

Хадгалах газар

Хэрэв та дээрх хэдэн догол мөрийг санаж байгаа бол 3-р зангилаа нь NFS дундын драйвт ашиглагдана гэж би дурдсан. Би энэ зорилгоор ашиглах гэж байсан 1TB SSD дисктэй байсан. Би үүнийг форматлаад 3-р зангилаанд холбох хэрэгтэй болсон.


Гэхдээ би энэ зангилаанд 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 бүх зангилаанд суулгасан.

Кубернетес кластер

Би өмнө нь хэзээ ч Кубернетес кластерыг эхнээс нь байгуулж байгаагүй ч энэ сэдвээр Жефф Гирлингийн олон видеог үзэж байсан... Энэ бол хангалттай туршлага, тийм ээ?


Жефф намайг Ansible ашиглан K3-ууд руу хөтөлсөн бөгөөд энэ нь миний гэрийн кластерт тохирсон хөнгөн Кубернетес түгээлт ба үүнийг суулгахад урьдчилан тодорхойлсон арга, учир нь надад урьдчилсан шаардлага байхгүй, өөрөөр үүнийг хэрхэн тохируулах тухай санаа ч байхгүй.


Суурилуулалт нь маш энгийн байсан. Би үүнийг бүх зангилаанд суулгах ёстой байсан ч мастер зангилаа хамгийн түрүүнд суулгасан эсэхийг шалгах ёстой байсан.


Тиймээс эхлээд би k3s-ansible репозиторыг хувилсан:

 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


Ингээд л болоо. Суулгацын хувьд надад Kubernetes кластер ажиллаж байсан. Би кластерыг удирдаж, кластерийг ./kube/config файлтай холбохын тулд өөрийн дотоод машин дээрээ K9s суулгах шаардлагатай болсон.

Програмууд

Эцэст нь би кластерт ажиллуулахыг хүссэн програмуудаа суулгах хэрэгтэй болсон. Надад хүссэн зүйлийнхээ талаар зарим санаанууд байсан.

  • Би хуваарьтай татан авалт бүхий медиа сервертэй болохыг хүссэн.


  • Миний сүлжээний DNS-ийн Pi-нүхтэй жишээ болон гэрийн бүх төхөөрөмж дээрх бүх зарыг блоклох.


  • Хуучин тоглоом тоглож, хадгалсан тоглоомуудаа гэрийн сүлжээгээр хуваалцах Retroarch жишээ (би бүх төхөөрөмж дээрх Megaman Battle Network 6-г харж байна)


Эндээс л миний репозитор орж ирдэг.
Хадгалах газар 0

Медиа серверийн хувьд би ашиглахаар шийдсэн:


Жишээ болгон би kubectl ашиглан Sonarr-г хэрхэн суулгасанаа харуулах болно. Бусад програмуудыг ижил төстэй байдлаар суулгасан.


Програм бүрийн хувьд би 3 файл үүсгэсэн:

  • deployment.yaml нь програмыг ажиллуулж байгаа pods бүрийн тохиргоо юм

     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 санах ойг үүсгэхэд ашигласан nfs-pv.yaml болон nfs-pvc.yaml файлуудыг олох боломжтой.


Нэмж дурдахад, би програмуудын тохиргоонд зориулж өөр нэг байнгын эзэлхүүний нэхэмжлэлийг үүсгэсэн.
K9s 0

Эцсийн бүтээн байгуулалт

Хэдий уг хайрцаг нь гайхалтай харагдаж байгаа ч Raspberry Pi кластерт арай дэндүү том юм. Mini ITX гэр нь миний хэрэгцээнд тохирсон байх байсан, гэхдээ би өөрөө DIY зүйлд дуртай гэдгээ хүлээн зөвшөөрөх ёстой.
Бүрэн бүтэц 0


Мөн ерөнхийдөө LED-д зориулсан соруулагч. Би хайрцагт нэмэлт гэрэл нэмээгүй ч самбар нь аль хэдийн сайн ажиллаж байна гэж бодож байна. Харамсалтай нь сэнсний зүү нь самбарт тохирохгүй байсан бөгөөд би сэнс хянагч эсвэл эх хавтангийн зүү худалдаж аваагүй. Би ирээдүйд магадгүй.
Ажиллаж байгаа 0

Заримдаа зүгээр л хойш суугаад үзэмжийг үзэх хэрэгтэй.
Бүрэн бүтэц 1

Эцэст нь, Turing Pi 2 Home Cluster ажиллаж байгаа бөгөөд миний байшин эмх замбараагүй байхаа больсон.
Бүрэн бүтээц 2

Ирээдүй

Энэ кластертай юу хийхийг цаг хугацаа л харуулах болно.


Гэсэн хэдий ч би Prometheus болон Grafana-г нэмж кластерийг шалгахын тулд зарим хэмжүүр, сайхан графиктай болгох талаар бодож байсан.


Миний бүх Kubernetes файлуудыг Helm руу шилжүүлэх нь бас сайн санаа байх болно.


Эцэст нь хэлэхэд, Retroarch-ийн жишээ одоо ч ажиллаж байна. Под нь CrashLoopBackOff төлөвт амьдардаг тул ажил нь хэтэрхий өөдрөг байж магадгүй юм. Гэхдээ би тэнд очно.

Төгсгөл

Хэрэв та энэ нийтлэлийн төгсгөлд хүрсэн бол цаг зав гаргасанд баярлалаа. Кластерыг эвлүүлж, энэ тухай бичихэд над шиг танд таалагдсан гэж найдаж байна.

L O A D I N G
. . . comments & more!

About Author

Tomas Sirio HackerNoon profile picture
Tomas Sirio@tomassirio
I'm a Barbie Dev, In a Barbie World.Wide.Web Backend Developer at Bux. Master of memes.

TAG ҮҮ

ЭНЭ ӨГҮҮЛЛИЙГ ТОЛГОЙЛУУЛСАН...