Mengaktifkan isolasi komputasi

Aplikasi Kf dapat di-deploy pada node khusus di cluster. Fitur ini diperlukan jika ada situasi di mana Anda ingin memiliki kontrol lebih besar pada node tempat App Pod berada. Contoh:

  • Jika Anda berbagi cluster yang sama untuk Aplikasi yang berbeda, tetapi menginginkan node khusus untuk Aplikasi tertentu.
  • Jika Anda menginginkan node khusus untuk organisasi tertentu (Kf Space).
  • Jika Anda ingin menargetkan sistem operasi tertentu seperti Windows.
  • Jika Anda ingin menempatkan Pod dari dua layanan berbeda yang sering berkomunikasi.

Untuk mengaktifkan isolasi komputasi, Kf menggunakan nodeSelector Kubernetes. Untuk menggunakan fitur ini, pertama-tama tambahkan label pada node atau kumpulan node tempat Anda ingin App Pod ditempatkan, lalu tambahkan label kualifikasi yang sama pada Kf Space. Semua Aplikasi yang diinstal di Ruang ini akan mendarat di node dengan label yang cocok.

Kf membuat pod Kubernetes untuk menjalankan setiap Kf Build, fitur buildNodeSelector dapat digunakan untuk mengisolasi resource komputasi agar hanya menjalankan pod Build. Salah satu kasus penggunaan adalah mengisolasi pod Build agar berjalan pada node dengan SSD, sekaligus menjalankan pod Aplikasi di node lain. Fitur BuildNodeSelectors menyediakan fleksibilitas dan pengoptimalan resource komputasi di cluster. Lihat bab 'Mengonfigurasi BuildNodeSelectors dan kumpulan node build' di halaman ini.

Mengonfigurasi nodeSelector di cluster Kf

Secara default, isolasi komputasi dinonaktifkan. Gunakan prosedur berikut untuk mengonfigurasi label dan nodeSelector.

  1. Tambahkan label (distype=ssd) pada node tempat Anda ingin menempatkan pod aplikasi.

    kubectl label nodes nodeid disktype=ssd
    
  2. Tambahkan label yang sama di Kf Space. Semua Aplikasi yang di-deploy di Ruang ini akan mendarat di node yang memenuhi syarat.

    kf configure-space set-nodeselector space-name disktype ssd
    

    Anda dapat menambahkan beberapa label dengan menjalankan kembali perintah yang sama.

  3. Periksa apakah label dikonfigurasi.

    kf configure-space get-nodeselector space-name
    
  4. Hapus label dari ruang.

    kf configure-space unset-nodeselector space-name disktype
    

Mengganti nodeSelector untuk stack Kf

Deployment Aplikasi Kf dapat ditargetkan lebih lanjut berdasarkan stack (buildpack) yang digunakan untuk membangun dan memaketkan Aplikasi. Misalnya, jika Anda ingin aplikasi yang di-build dengan spaceStacksV2 mendarat di node dengan kernel Linux 4.4.1., Nilai nodeSelector pada tumpukan menggantikan nilai yang dikonfigurasi di Ruang.

Untuk mengonfigurasi nodeSelector pada tumpukan:

  1. Edit config-defaults cluster Kf Anda dan tambahkan label.

    $ kubectl -n kf edit configmaps config-defaults
    
  2. Tambahkan nodeSelector ke definisi stack.

    .....
    .....
    spaceStacksV2: |
    - name:  cflinuxfs3
            image: cloudfoundry/cflinuxfs3
            nodeSelector:
                  OS_KERNEL: LINUX_4.4.1
    .....
    .....
    

Mengonfigurasi BuildNodeSelectors dan kumpulan node Build

Pemilih node build hanya efektif mengganti pemilih node untuk pod Build. Pemilih node tersebut tidak memengaruhi Pod aplikasi. Misalnya, jika Anda menentukan pemilih node pada Space dan pemilih node Build di Kfsystem, Pod aplikasi akan memiliki pemilih node Space, sedangkan pod Build akan memiliki pemilih node Build dari Kfsystem; jika pemilih node hanya ditentukan di Space, pod Aplikasi dan Build akan memiliki pemilih node dari Space.

  1. Tambahkan label (misalnya, disktype:ssd) pada node tempat pod Build ingin ditetapkan.

    kubectl label nodes nodeid disktype=ssd
    
  2. Tambahkan/perbarui pemilih node Build (dalam format pasangan key:value) dengan memberikan patch pada KfSystem CR.

    kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {<key>:<value>}}]'
    

    Misalnya, untuk menambahkan disktype=ssd sebagai pemilih node Build:

    kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {"disktype":"ssd"}}]'