🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
  • Home
  • Blog
  • Cara Memodifikasi Konfigurasi Lanjutan Milvus

Cara Memodifikasi Konfigurasi Lanjutan Milvus

  • Engineering
November 08, 2021
Zilliz

Yufen Zong, Insinyur Pengembangan Tes Zilliz, lulus dari Universitas Sains dan Teknologi Huazhong dengan gelar master di bidang teknologi komputer. Saat ini ia terlibat dalam jaminan kualitas basis data vektor Milvus, termasuk namun tidak terbatas pada pengujian integrasi antarmuka, pengujian SDK, pengujian Benchmark, dll. Yufen adalah seorang pemecah masalah yang antusias dalam pengujian dan pengembangan Milvus, dan penggemar berat teori chaos engineering dan praktik fault drill.

Latar Belakang

Ketika menggunakan database vektor Milvus, Anda perlu memodifikasi konfigurasi default untuk memenuhi kebutuhan skenario yang berbeda. Sebelumnya, seorang pengguna Milvus berbagi tentang Cara Memodifikasi Konfigurasi Milvus yang Diterapkan Menggunakan Docker Compose. Dan pada artikel ini, saya ingin berbagi dengan Anda tentang cara memodifikasi konfigurasi Milvus yang digunakan pada Kubernetes.

Memodifikasi konfigurasi Milvus di Kubernetes

Anda dapat memilih paket modifikasi yang berbeda sesuai dengan parameter konfigurasi yang ingin Anda ubah. Semua berkas konfigurasi Milvus disimpan di bawah milvus/configs. Saat menginstal Milvus di Kubernetes, repositori Milvus Helm Chart akan ditambahkan secara lokal. Dengan menjalankan helm show values milvus/milvus, Anda dapat memeriksa parameter yang dapat dimodifikasi secara langsung dengan Chart. Untuk parameter yang dapat dimodifikasi dengan Chart, Anda dapat mengoper parameter menggunakan --values atau --set. Untuk informasi lebih lanjut, lihat Milvus Helm Chart dan Helm.

Jika parameter yang ingin Anda modifikasi tidak ada dalam daftar, Anda dapat mengikuti instruksi di bawah ini.

Pada langkah berikut, parameter rootcoord.dmlChannelNum pada /milvus/configs/advanced/root_coord.yaml akan dimodifikasi untuk tujuan demonstrasi. Manajemen berkas konfigurasi Milvus pada Kubernetes diimplementasikan melalui objek sumber daya ConfigMap. Untuk mengubah parameter, Anda harus terlebih dahulu memperbarui objek ConfigMap dari rilis Chart yang sesuai, lalu memodifikasi berkas sumber daya penerapan dari pod yang sesuai.

Perhatikan bahwa metode ini hanya berlaku untuk modifikasi parameter pada aplikasi Milvus yang telah dit-deploy. Untuk memodifikasi parameter di /milvus/configs/advanced/*.yaml sebelum deployment, Anda perlu mengembangkan ulang Milvus Helm Chart.

Memodifikasi ConfigMap YAML

Seperti yang ditunjukkan di bawah ini, rilis Milvus Anda yang berjalan di Kubernetes berhubungan dengan objek ConfigMap dengan nama yang sama dengan nama rilis. Bagian data pada objek ConfigMap hanya menyertakan konfigurasi di milvus.yaml. Untuk mengubah rootcoord.dmlChannelNum di root_coord.yaml, Anda harus menambahkan parameter di root_coord.yaml ke bagian data di ConfigMap YAML dan mengubah parameter tertentu.

kind: ConfigMap
apiVersion: v1
metadata:
  name: milvus-chaos
  ...
data:
  milvus.yaml: >
    ......
  root_coord.yaml: |
    rootcoord:
      dmlChannelNum: 128
      maxPartitionNum: 4096
      minSegmentSizeToEnableIndex: 1024
      timeout: 3600 # time out, 5 seconds
      timeTickInterval: 200 # ms

Memodifikasi YAML Penyebaran

Data yang disimpan dalam ConfigMap dapat direferensikan dalam volume bertipe configMap dan kemudian digunakan oleh aplikasi terkontainerisasi yang berjalan dalam pod. Untuk mengarahkan pod ke file konfigurasi baru, Anda harus memodifikasi templat pod yang perlu memuat konfigurasi di root_coord.yaml. Secara khusus, Anda perlu menambahkan deklarasi mount di bawah bagian spec.template.spec.containers.volumeMounts dalam deployment YAML.

Mengambil deployment YAML pod rootcoord sebagai contoh, volume tipe configMap bernama milvus-config ditentukan di bagian .spec.volumes. Dan, pada bagian spec.template.spec.containers.volumeMounts, volume tersebut dideklarasikan untuk memount milvus.yaml dari rilis Milvus Anda pada /milvus/configs/milvus.yaml. Dengan cara yang sama, Anda hanya perlu menambahkan deklarasi mount khusus untuk kontainer rootcoord untuk memount root_coord.yaml di /milvus/configs/advanced/root_coord.yaml, dan dengan demikian, kontainer tersebut dapat mengakses berkas konfigurasi yang baru.

spec:
  replicas: 1
  selector:
    ......
  template:
    metadata:
      ...
    spec:
      volumes:
        - name: milvus-config
          configMap:
            name: milvus-chaos
            defaultMode: 420
      containers:
        - name: rootcoord
          image: 'milvusdb/milvus-dev:master-20210906-86afde4'
          args:
            ...
          ports:
            ...
          resources: {}
          volumeMounts:
            - name: milvus-config
              readOnly: true
              mountPath: /milvus/configs/milvus.yaml
              subPath: milvus.yaml
            - name: milvus-config
              readOnly: true
              mountPath: /milvus/configs/advanced/`root_coord.yaml
              subPath: root_coord.yaml
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      securityContext: {}
      schedulerName: default-scheduler

Verifikasi hasilnya

Kubelet memeriksa apakah ConfigMap yang terpasang masih baru pada setiap sinkronisasi berkala. Ketika ConfigMap yang digunakan dalam volume diperbarui, kunci yang diproyeksikan juga secara otomatis diperbarui. Ketika pod baru berjalan lagi, Anda dapat memverifikasi apakah modifikasi berhasil di dalam pod. Perintah untuk memeriksa parameter rootcoord.dmlChannelNum dibagikan di bawah ini.

$ kctl exec -ti milvus-chaos-rootcoord-6f56794f5b-xp2zs -- sh
# cd configs/advanced
# pwd
/milvus/configs/advanced
# ls
channel.yaml  common.yaml  data_coord.yaml  data_node.yaml  etcd.yaml  proxy.yaml  query_node.yaml  root_coord.yaml
# cat root_coord.yaml
rootcoord:
  dmlChannelNum: 128
  maxPartitionNum: 4096
  minSegmentSizeToEnableIndex: 1024
  timeout: 3600 # time out, 5 seconds
  timeTickInterval: 200 # ms
# exit

Di atas adalah metode untuk memodifikasi konfigurasi lanjutan dalam Milvus yang diterapkan pada Kubernetes. Rilis Milvus di masa mendatang akan mengintegrasikan semua konfigurasi dalam satu berkas, dan akan mendukung pembaruan konfigurasi melalui diagram helm. Namun sebelum itu, saya harap artikel ini dapat membantu Anda sebagai solusi sementara.

Bergabunglah dengan komunitas sumber terbuka kami:

  • Temukan atau berkontribusi ke Milvus di GitHub.

  • Berinteraksi dengan komunitas melalui Forum.

  • Terhubung dengan kami di Twitter.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Terus Baca