

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menjalankan pekerjaan kontainer dengan Pyxis
<a name="tutorials_11_running-containerized-jobs-with-pyxis"></a>

Pelajari cara membuat klaster yang dapat menjalankan tugas kontainer menggunakan Pyxis, yang merupakan plugin SPANK untuk mengelola pekerjaan kontainer di SLURM. Wadah di Pyxis dikelola oleh Enroot, yang merupakan alat untuk mengubah container/OS gambar tradisional menjadi kotak pasir yang tidak memiliki hak istimewa. Untuk informasi lebih lanjut, lihat [NVIDIA Pyxis](https://github.com/NVIDIA/pyxis) dan [NVIDIA](https://github.com/NVIDIA/enroot) Enroot.

**catatan**  
Fitur ini tersedia dengan AWS ParallelCluster v3.11.1
Skrip dalam tutorial ini memindahkan (`mv`) beberapa file, yang menghapusnya dari lokasi aslinya. Jika Anda ingin menyimpan salinan file-file ini di lokasi aslinya, ubah skrip untuk menggunakan perintah copy (`cp`) sebagai gantinya.

Saat menggunakan AWS ParallelCluster, Anda hanya membayar AWS sumber daya yang dibuat saat Anda membuat atau memperbarui AWS ParallelCluster gambar dan cluster. Untuk informasi selengkapnya, lihat [AWS layanan yang digunakan oleh AWS ParallelCluster](aws-services-v3.md).

**Prasyarat:**
+  AWS CLI Itu [diinstal dan dikonfigurasi.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ Sebuah [key pair Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html). .
+ Peran IAM dengan [izin](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) yang diperlukan untuk menjalankan CLI [pcluster](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html).

## Buat cluster
<a name="create-the-cluster"></a>

Dimulai dengan AWS ParallelCluster 3.11.1, semua resmi AMIs dilengkapi dengan Pyxis dan Enroot yang sudah diinstal sebelumnya. Secara khusus, SLURM dikompilasi ulang dengan dukungan Pyxis dan Enroot diinstal sebagai biner dalam sistem. Namun, Anda harus mengonfigurasinya sesuai dengan kebutuhan spesifik Anda. Folder yang digunakan oleh Enroot dan Pyxis akan memiliki dampak kritis pada kinerja cluster. Untuk informasi selengkapnya, lihat dokumentasi [Pyxis dan dokumentasi](https://github.com/NVIDIA/pyxis/wiki/Setup#slurm-plugstack-configuration) [Enroot](https://github.com/NVIDIA/pyxis/wiki/Setup#enroot-configuration-example).

Untuk kenyamanan Anda, Anda dapat menemukan konfigurasi sampel untuk Pyxis, Enroot dan SPANK di dalamnya. `/opt/parallelcluster/examples/` 

Untuk menyebarkan cluster menggunakan konfigurasi sampel yang telah kami sediakan, selesaikan tutorial berikut. 

**Untuk membuat cluster dengan konfigurasi sampel**

Pyxis dan Enroot harus dikonfigurasi pada node kepala dengan terlebih dahulu membuat direktori persisten dan volatile untuk Enroot, kemudian membuat direktori runtime untuk Pyxis, dan akhirnya mengaktifkan Pyxis sebagai plugin SPANK di seluruh cluster.

1. Jalankan skrip di bawah ini sebagai tindakan [OnNodeConfigured](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeConfigured)khusus di node kepala untuk mengkonfigurasi Pyxis dan Enroot pada node kepala.

   ```
   #!/bin/bash
   set -e
   
   echo "Executing $0"
   
   # Configure Enroot
   ENROOT_PERSISTENT_DIR="/var/enroot"
   ENROOT_VOLATILE_DIR="/run/enroot"
   
   sudo mkdir -p $ENROOT_PERSISTENT_DIR
   sudo chmod 1777 $ENROOT_PERSISTENT_DIR
   sudo mkdir -p $ENROOT_VOLATILE_DIR
   sudo chmod 1777 $ENROOT_VOLATILE_DIR
   sudo mv /opt/parallelcluster/examples/enroot/enroot.conf /etc/enroot/enroot.conf
   sudo chmod 0644 /etc/enroot/enroot.conf
   
   # Configure Pyxis
   PYXIS_RUNTIME_DIR="/run/pyxis"
   
   sudo mkdir -p $PYXIS_RUNTIME_DIR
   sudo chmod 1777 $PYXIS_RUNTIME_DIR
   
   sudo mkdir -p /opt/slurm/etc/plugstack.conf.d/
   sudo mv /opt/parallelcluster/examples/spank/plugstack.conf /opt/slurm/etc/
   sudo mv /opt/parallelcluster/examples/pyxis/pyxis.conf /opt/slurm/etc/plugstack.conf.d/
   sudo -i scontrol reconfigure
   ```

1. Pyxis dan Enroot harus dikonfigurasi pada armada komputasi dengan membuat direktori persisten dan volatile untuk Enroot dan direktori runtime untuk Pyxis. Jalankan skrip di bawah ini sebagai tindakan [OnNodeStart](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-CustomActions-OnNodeStart)kustom di node komputasi untuk mengonfigurasi Pyxis dan Enroot pada armada komputasi.

   ```
   #!/bin/bash
   set -e
   
   echo "Executing $0"
   
   # Configure Enroot
   ENROOT_PERSISTENT_DIR="/var/enroot"
   ENROOT_VOLATILE_DIR="/run/enroot"
   ENROOT_CONF_DIR="/etc/enroot"
   
   sudo mkdir -p $ENROOT_PERSISTENT_DIR
   sudo chmod 1777 $ENROOT_PERSISTENT_DIR
   sudo mkdir -p $ENROOT_VOLATILE_DIR
   sudo chmod 1777 $ENROOT_VOLATILE_DIR
   sudo mkdir -p $ENROOT_CONF_DIR
   sudo chmod 1777 $ENROOT_CONF_DIR
   sudo mv /opt/parallelcluster/examples/enroot/enroot.conf /etc/enroot/enroot.conf
   sudo chmod 0644 /etc/enroot/enroot.conf
   
   # Configure Pyxis
   PYXIS_RUNTIME_DIR="/run/pyxis"
   
   sudo mkdir -p $PYXIS_RUNTIME_DIR
   sudo chmod 1777 $PYXIS_RUNTIME_DIR 
   
   # In Ubuntu24.04 Apparmor blocks the creation of unprivileged user namespaces,
   # which is required by Enroot. So to run Enroot, it is required to disable this restriction.
   # See https://ubuntu.com/blog/ubuntu-23-10-restricted-unprivileged-user-namespaces
   source /etc/os-release
   if [ "${ID}${VERSION_ID}" == "ubuntu24.04" ]; then
       echo "kernel.apparmor_restrict_unprivileged_userns = 0" | sudo tee /etc/sysctl.d/99-pcluster-disable-apparmor-restrict-unprivileged-userns.conf
       sudo sysctl --system
   fi
   ```

## Kirim lowongan kerja
<a name="submit-jobs"></a>

Sekarang Pyxis dikonfigurasi di cluster Anda, Anda dapat mengirimkan pekerjaan dalam wadah menggunakan perintah sbatch dan srun, yang sekarang diperkaya dengan opsi khusus container.

```
# Submitting an interactive job
srun -N 2 --container-image docker://ubuntu:22.04 hostname

# Submitting a batch job
sbatch -N 2 --wrap='srun --container-image docker://ubuntu:22.04 hostname'
```