Haberler

NVIDIA Jetson’da K3s Küme Yönetim Yazılımı Nasıl Çalıştırılır?

IoT uygulamalarınızda bir küme yönetim yazılımı çalıştırmayı öğrenmeyi hiç düşündünüz mü? Bu eğitim, K3s’i seçme amacından başlayarak, nasıl tam bir test çalıştırabileceğinize kadar her şeyi kapsayacak! Bu orijinal eğitim GPUSolution tarafından hazırlanmıştır.

Daha fazla uzatmadan, önce K3s kullanmanın amacını konuşalım:

Kubernetes’in hafif yönetim aracı K3S’i kullanarak 4 düğüm cihazı ile bir Docker konteyner kümesi oluşturacağız. Bunun amacı aşağıdaki gibidir:

  1. Docker konteyneri, yazılım geliştirmede trend haline gelmiştir, bu aynı zamanda Yapay Zeka (AI) uygulamalarını da kapsamaktadır.
  2. Kubernetes, şu anda Docker alanında en yaygın kullanılan küme yönetim uygulamasıdır.
  3. K3S hafif bir yönetim aracı olduğundan, daha az kaynak kullanılır ve kurulumu çok daha kolay olacaktır. Bu nedenle, gömülü AIOT platform uygulamaları için uygun hale getirir.

Hadi Başlayalım!

Bu deneyde, Xavier NX ana düğüm olarak ve 3 Jetson Nano 4GB işçi düğüm olarak kullanılacaktır. Tüm cihazlar, geliştirme ortamı olarak Jetpack 4.4.1 sürümünü, Docker 1.19 sürümünü ve Nvidia-docker2 yönetim aracını önceden yüklenmiş olarak kullanacaktır.

Deney sürecinde, uyumlu Jetpack 4.41, NVIDIA l4t-ml:r32.4.4-py3’ün NGC’den (ngc.nvidia.com) kopyasını indirmeniz gerekecektir. Bu kopya, çeşitli Derin Öğrenme uygulama çerçevelerini ve bir talimat ile Jupyter etkileşimli ortamını desteklemektedir.


4 Jetson düğümü kullanarak K3S kümesi oluşturma

Küme ortamının tanımı:

Seeed’in cihazlarında bir düğümü Ana olarak ve diğer düğümleri işçi olarak atayın. Aşağıdaki örnek, her düğümün yapılandırmasını göstermektedir: (Tablodaki IP kısmını ortamınıza göre ayarlayın)

Rol IP Host Adı Aygıt Türü Jetpack sürümü
Ana xx.xx.xx.30 Node0 Xavier NX 4.4.1
İşçi xx.xx.xx.31 Node1 Jetson Nano 4GB 4.4.1
İşçi xx.xx.xx.32 Node2 Jetson Nano 4GB 4.4.1
İşçi xx.xx.xx.33 Node3 Jetson Nano 4GB 4.4.1

Tüm 4 IP ve Host Adını 4 düğümün /etc/hosts klasörüne ekleyin

127.0.0.1      localhost

127.0.1.1      node3<= Kendi host adınızı ayarlayın

# Aşağıda tüm küme düğümlerinin IP ve Host Adını ekleyin

xx.xx.xx.30     node0

xx.xx.xx.31     node1

xx.xx.xx.32     node2

xx.xx.xx.33     node3

(Arşiv)

Bunu yaparak, daha sonra işlem yaparken her düğümün host adını doğrudan kullanabileceksiniz, IP’lerini ezberlemek zorunda kalmayacaksınız.

K3S kullanarak Nano yönetim kümesi oluşturma

  • Ana düğümde (node0) K3S Sunucusunu kurun:

Çalıştırılacak komutlar aşağıdaki gibidir:
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC=”–docker” sh -s –

Kurulumun tamamlanıp tamamlanmadığını kontrol edin:

docker images

sudo kubectl get node

Hesaplama yapıp yapamayacağınızı test etmek için, üçüncü taraf paketlenmiş cuda devicequery konteynerini çalıştırın:

sudo kubectl run -it nvidia –image=jitteam/devicequery –restart=Never

Her şey yolunda gittiyse, aşağıdaki ekran görüntüsü gösterilecektir:

  • 3 işçi düğümde (node1/node2/node3) K3S ajanını kurun:
  • 1. Öncelikle, Ana düğümde (node0) k3s sunucu token’ını bulun ve aşağıdaki komutları çalıştırın: sudo cat /var/lib/rancher/k3s/server/node-token

Benzer uzunlukta bir alfabetik dize görmelisiniz (farklı olacaktır):

2. Her işçi düğümde (node1/node2/node3), aşağıdaki komutu çalıştırın:
” export k3s_token= <node-token alfabetik dize “önceki adımda gösterildiği gibi

export

k3s_url=”https://<IP_OF_MASTER>:6443″#

<IP_OF_MASTER> node0’dır

Sonra aşağıdaki komutu çalıştırın:

curl -sfL https://get.k3s.io | K3S_URL=${k3s_url} K3S_TOKEN=${k3s_token} sh –

*Yukarıda gösterilen adımlar, tümü işçi düğümlerinde gerçekleştirilir

3. Master üzerinde aşağıdaki komutları çalıştırın ve ajan kurulumunu kontrol edin:

sudo kubectl get nodes

Bu, 3 işçi düğümünün k3s yönetim kapsamına girdiğini gösterir, ancak roller ayarlanmamıştır.

4. Her işçi için rolleri ayarlamak üzere, Master düğümünde (mode0) rol ayarlama komutunu çalıştırın
sudo kubectl label node node1 node2 node3 node-role.kubernetes.io/worker=worker

Sonra düğümün durumunu kontrol edin:

sudo kubectl get nodes

Bununla, k3s kümesini oluşturmayı tamamladınız.

5. Küme bilgilerini kontrol edin ve aşağıdaki komutu çalıştırın:

sudo kubectl cluster-info


NVIDIA l4t-ml konteynerinin TensorFlow’unu çalıştırma

  • l4t-ml:r32.4.4-py3’ün mirror docker’ını indirin docker pull nvcr.io/nvidia/l4t-ml:r32.4.4-py3
  • jetson-tf.yaml yazın
apiVersion: v1
kind: Pod
metadata:
  name: jetson-tf
spec:
  restartPolicy: OnFailure
  containers:
  - name: nvidia-l4t-ml
    image: "nvcr.io/nvidia/l4t-ml:r32.4.4-py3"
    command: [ "/bin/bash", "-c", "--" ]
    args: [ "while true; do sleep 30; done;" ]
  • Pod durumunu kontrol edin ve çalıştırın:

sudo kubectl get pod

  • Pod’un (jetson-tf) çalıştığını onayladıktan sonra, kullanım için hazır olacaktır. Ancak durumu “ContainerCreating” olarak belirtilirse, çalıştığını belirtinceye kadar bekleyin.
  • Bu konteyneri etkinleştirmek için sudo kubectl exec -it jetson-tf — python3 komutunu çalıştırın.

Konteynerin python3 etkileşimli ortamına girin ve aşağıdaki kodları çalıştırın:

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

Bu, k3s konteynerinde Tensorflow tarafından desteklenen GPU’ları gösterecektir.

Tam bir test için, Python3’te aşağıdaki kodu daha da çalıştırabilirsiniz:

from tensorflow.python.client import device_lib
def get_available_gpus():
    local_device_protos = device_lib.list_local_devices()
return [x.name for x in local_device_protos if x.device_type == 'GPU']

get_available_gpus()

Çalıştırdıktan sonra, aşağıdaki çıktıyı alacaksınız:


Özet

Ve cihazlarınızda K3s çalıştırma konusundaki eğitimimizin sonuna geldik! Bu makaleyi beğenip beğenmediğinizi bize bildirin ve umarız bu size bir şekilde yardımcı olmuştur!

Leave a Reply

Your email address will not be published. Required fields are marked *