全部产品
Search
文档中心

Container Service for Kubernetes:Buat beban kerja tanpa status (Deployment)

更新时间:Nov 11, 2025

Penyebaran (Deployment), juga dikenal sebagai beban kerja tanpa status, merupakan salah satu jenis beban kerja paling umum di Kubernetes. Deployment memastikan bahwa sejumlah Pod tertentu berjalan di kluster sesuai dengan keadaan yang Anda tentukan. Topik ini menjelaskan cara membuat aplikasi tanpa status di kluster Container Service for Kubernetes (ACK) menggunakan konsol dan kubectl.

Sebelum memulai

Sebelum membuat beban kerja, baca Beban Kerja untuk memahami dasar-dasar beban kerja dan pertimbangan penting. Topik ini mencakup bagian-bagian berikut:

  • Buat Deployment: Menyediakan panduan cepat tentang cara membuat Deployment menggunakan konsol dan kubectl.

  • Item konfigurasi: Menyediakan tautan ke dokumentasi mengenai item konfigurasi konsol dan contoh file YAML untuk digunakan dengan kubectl.

Penting

Contoh dalam topik ini menggunakan gambar publik. Untuk menarik gambar publik, kluster atau node Anda harus memiliki akses Internet:

  • Aktifkan akses Internet untuk kluster (Direkomendasikan): Buat Gateway NAT Internet untuk VPC tempat kluster berada. Ini memberikan akses Internet ke semua sumber daya di kluster.

  • Tetapkan alamat IP publik statis ke sebuah node: Node dengan alamat IP publik dapat menarik gambar publik. Namun, Anda harus menetapkan alamat IP publik ke setiap node tempat Anda menerapkan beban kerja.

Buat penyebaran

Buat penyebaran menggunakan konsol

Penting

Langkah-langkah berikut menjelaskan alur kerja yang disederhanakan untuk membuat beban kerja. Anda dapat mengikuti langkah-langkah ini untuk menerapkan dan memverifikasi beban kerja secara cepat. Setelah terbiasa dengan operasi dasar, lihat Item konfigurasi untuk menyesuaikan beban kerja Anda.

  1. Configure basic information for the application

    1. Masuk ke Konsol Container Service for Kubernetes. Di panel navigasi sebelah kiri, klik Clusters.Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, pilih Workloads > Deployments. Pada halaman Deployments, klik Create From Image.

      image

    2. Pada halaman Basic Information, atur informasi dasar untuk aplikasi, lalu klik Berikutnya untuk melanjutkan ke halaman Container Configuration.

      image

  2. Configure the container

    Pada bagian Container Configuration, atur Image Name dan Port. Pengaturan lainnya bersifat opsional. Pertahankan nilai default. Lalu, klik Next untuk menuju halaman Advanced Configuration. Alamat citra ditampilkan di bawah ini.

    Penting

    Sebelum dapat menarik citra ini, Anda harus mengaktifkan akses Internet untuk kluster. Jika Anda mempertahankan pilihan default untuk Configure SNAT for VPC saat membuat kluster, kluster sudah memiliki akses Internet. Jika tidak, lihat Aktifkan akses Internet untuk kluster.

    anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

    image

  3. Complete the advanced configuration

    Pada halaman Advanced Configuration, konfigurasikan akses, penskalaan, penjadwalan, label, dan anotasi. Pada bagian Access Settings, tentukan metode untuk mengekspos Pod backend. Klik OK, lalu klik Create di bagian bawah halaman.

    Penting

    Langkah ini membuat layanan LoadBalancer untuk mengekspos beban kerja. Instance SLB yang digunakan oleh layanan ini dikenai biaya. Untuk informasi lebih lanjut tentang penagihan, lihat Bayar Sesuai Pemakaian. Jika Anda tidak berencana menggunakan instance SLB ini nanti, segera lepaskan.

    image

  4. View the application

    Halaman Creation Finished menampilkan tugas aplikasi. Di panel Application Creation Task Submitted, klik View Application Details. Klik tab Access Method. Temukan layanan yang baru dibuat (nginx-test-svc) dan klik tautan di kolom External Endpoint untuk mengakses layanan.image

    image

    Anda dapat View, Edit, dan Redeploy beban kerja yang telah dibuat di konsol.image

Buat penyebaran menggunakan kubectl

Penting

Sebelum membuat beban kerja, pastikan Anda telah terhubung ke kluster menggunakan kubectl. Untuk informasi selengkapnya, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.

  1. Salin konten YAML berikut dan simpan ke file bernama deployment.yaml. File YAML ini mendefinisikan Deployment dan layanan LoadBalancer untuk mengeksposnya.

    apiVersion: apps/v1
    kind: Deployment    # Jenis beban kerja
    metadata:
      name: nginx-test
      namespace: default  # Ubah namespace sesuai kebutuhan
      labels:
        app: nginx
    spec:
      replicas: 2  # Tentukan jumlah Pod
      selector:
        matchLabels:
          app: nginx
      template: # Konfigurasi Pod
        metadata:
          labels: # Label Pod
            app: nginx 
        spec:
          containers:
          - name: nginx  # Nama kontainer
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6  # Gunakan versi tertentu dari citra Nginx
            ports:
            - containerPort: 80  # Port yang diekspos oleh kontainer
              protocol: TCP  # Tentukan protokol sebagai TCP atau UDP. Default-nya adalah TCP.
    ---
    # service
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-test-svc
      namespace: default  # Ubah namespace sesuai kebutuhan
      labels:
        app: nginx
    spec:
      selector:
        app: nginx  # Cocokkan label untuk memastikan layanan mengarah ke Pod yang benar
      ports:
        - port: 80           # Port yang disediakan oleh layanan di dalam kluster
          targetPort: 80     # Mengarah ke port yang didengarkan oleh aplikasi di dalam kontainer (containerPort)
          protocol: TCP      # Protokol. Default-nya adalah TCP.
      type: LoadBalancer      # Jenis layanan. Default-nya adalah ClusterIP untuk akses internal.
  2. Jalankan perintah berikut untuk membuat Deployment dan layanan:

    kubectl apply -f deployment.yaml

    Keluaran yang diharapkan:

    deployment.apps/nginx-test created
    service/nginx-test-svc created
  3. Jalankan perintah berikut untuk melihat alamat IP publik layanan:

    kubectl get svc

    Keluaran yang diharapkan:

    NAME            TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)        AGE
    kubernetes      ClusterIP      172.16.**.***    <none>          443/TCP        4h47m
    nginx-test-svc  LoadBalancer   172.16.**.***    106.14.**.***   80:31130/TCP   1h10m
  4. Di browser, masukkan alamat IP publik Nginx (106.14.**.***) untuk mengakses kontainer Nginx dari beban kerja.

    image

Item konfigurasi

Item konfigurasi konsol

Informasi dasar

image

Item Konfigurasi

Deskripsi

Application Name

Nama beban kerja. Nama Pod yang termasuk dalam beban kerja dihasilkan berdasarkan nama ini.

Namespace

Namespace tempat beban kerja berada.

Number Of Replicas

Jumlah Pod dalam beban kerja. Nilai default-nya adalah 2.

Type

Jenis beban kerja. Untuk memilih jenis beban kerja, lihat Buat beban kerja.

Labels

Label beban kerja.

Annotations

Anotasi beban kerja.

Time Zone Sync

Menentukan apakah kontainer menggunakan zona waktu yang sama dengan node tempat ia berada.

Konfigurasi kontainer

Konfigurasi dasar

image

Item Konfigurasi

Deskripsi

Image Name

  • Select Image

    Anda dapat mengklik Select Image untuk memilih citra. Anda dapat memilih dari tiga jenis citra berikut.

    • Container Registry Enterprise Edition: Anda dapat memilih citra Edisi Perusahaan yang dihosting di Container Registry (ACR). Anda perlu memilih wilayah tempat citra berada dan instance ACR. Untuk informasi selengkapnya tentang ACR, lihat Apa itu Container Registry?.

    • Container Registry Personal Edition: Anda dapat memilih citra Edisi Pribadi yang dihosting di ACR. Anda perlu memilih wilayah tempat citra berada dan instance ACR.

    • Artifacts: Citra umum yang disediakan oleh Alibaba Cloud dan Komunitas OpenAnolis. Untuk menggunakan Artifacts, Anda perlu mengaktifkan akses Internet untuk kluster. Untuk informasi selengkapnya tentang Artifacts, lihat Artifacts.

    Untuk menggunakan citra dari sumber lain, Anda dapat langsung memasukkan alamat citra dalam format namadomain/namespace/namacitra:tag. Jika Anda tidak menentukan namadomain, seperti dengan memasukkan nginx:1.7.9, citra akan ditarik dari Docker Hub.

  • Select Image Pull Policy

    ACK mendukung tiga kebijakan penarikan citra (imagePullPolicy) berikut:

    • Prioritize Local Image (IfNotPresent) (Default): Jika citra lokal ada di node pekerja, citra tersebut akan digunakan. Jika tidak, citra akan ditarik.

    • Always Pull Image (Always): Citra selalu ditarik dari Container Registry untuk setiap penyebaran atau skala keluar, tidak pernah dari node lokal.

    • Use Local Image Only (Never): Hanya citra lokal yang digunakan. Jika tidak ada citra lokal, penarikan gagal.

  • Set Image Pull Secret

    Saat menggunakan ACR atau repositori pihak ketiga, Anda mungkin perlu mengonfigurasi rahasia untuk menarik citra.

    Catatan

    Untuk instance ACR Enterprise, Anda dapat menggunakan komponen bebas kata sandi untuk menarik citra. Untuk informasi selengkapnya, lihat Instal dan gunakan komponen bebas kata sandi untuk kluster yang tidak dikelola.

Resource Limits

resources.limits untuk kontainer. Untuk informasi selengkapnya, lihat Permintaan dan Batas.

Resource Requests

resources.requests untuk kontainer. Untuk informasi selengkapnya, lihat Permintaan dan Batas.

Container Startup Options

  • stdin: Mengaktifkan input standar untuk kontainer.

  • tty: Mengalokasikan terminal virtual untuk kontainer agar dapat mengirim sinyal.

Kedua opsi ini biasanya digunakan bersama untuk mengikat terminal (tty) ke input standar kontainer (stdin). Misalnya, program interaktif mendapatkan input standar dari pengguna dan menampilkannya di terminal.

Privileged Container

  • Pilih kotak centang ini untuk mengatur privileged=true dan mengaktifkan mode istimewa.

  • Hapus centang kotak ini untuk mengatur privileged=false dan menonaktifkan mode istimewa.

Mode istimewa memberikan izin kepada kontainer yang mirip dengan sistem operasi pada node pekerja host-nya, seperti mengakses perangkat keras dan memasang sistem file.

Init Container

Pilih opsi ini untuk membuat kontainer init.

Kontainer init menyediakan mekanisme untuk memblokir atau menunda startup kontainer aplikasi. Setelah kontainer init berhasil dijalankan, kontainer lain dalam Pod dimulai secara paralel. Misalnya, Anda dapat memeriksa ketersediaan layanan yang menjadi dependensi. Kontainer init dapat mencakup alat utilitas dan skrip instalasi yang tidak ada dalam citra aplikasi untuk menginisialisasi lingkungan runtime kontainer aplikasi, seperti mengatur parameter kernel atau menghasilkan file konfigurasi. Untuk informasi selengkapnya, lihat Kontainer Init.

Pengaturan port

image

Item Konfigurasi

Deskripsi

Name

Nama port kontainer. Hanya digunakan untuk membedakan port dan tidak memiliki efek fungsional.

Container Port

Port yang diekspos oleh kontainer. Nilainya harus antara 1 hingga 65535. Kontainer harus mengekspos port agar dapat diakses dari luar Pod dan memungkinkan komunikasi antar kontainer dalam Pod.

Semua kontainer dalam Pod berbagi tumpukan protokol jaringan Pod, sehingga port tidak boleh duplikat saat mengonfigurasi beberapa kontainer dalam satu Pod.

Protocol

Protokol Lapisan 4 (lapisan transport) yang digunakan oleh port kontainer. TCP dan UDP didukung.

Variabel lingkungan

image

Item Konfigurasi

Deskripsi

Type

Jenis variabel lingkungan. Jenis berikut didukung:

  • Custom

    Gunakan env untuk menyematkan langsung variabel lingkungan dalam beban kerja.

  • Configuration Item

    Gunakan envFrom untuk mendapatkan data konfigurasi non-sensitif yang disimpan dalam ConfigMap.

  • Secret

    Gunakan envFrom untuk mendapatkan informasi sensitif yang disimpan dalam ConfigMap, seperti kata sandi dan kunci API.

  • Variable/Variable Reference

    Gunakan value/valueFrom untuk mendapatkan variabel lingkungan lain atau nilai yang telah ditentukan sebelumnya.

  • Resource Reference

    Gunakan resourceFieldRef untuk mendapatkan informasi sumber daya dari node tempat Pod berada.

Item konfigurasi dan rahasia mendukung referensi semua file. Ambil contoh rahasia. Jika Anda memilih jenis Secret dan hanya memilih rahasia target, semua file dirujuk secara default.环境变量

File YAML yang sesuai juga merujuk seluruh rahasia.yaml

Jika Anda memilih Referensi Sumber Daya, parameter resourceFieldRef terutama digunakan untuk merujuk nilai sumber daya yang dideklarasikan oleh kontainer dari spesifikasi Pod. Nilai-nilai ini kemudian diteruskan ke kontainer sebagai variabel lingkungan. YAML yang sesuai adalah sebagai berikut:

image

Variable Name

Nama variabel lingkungan dalam Pod.

Variable/Variable Reference

Nilai variabel lingkungan atau nilai yang diperoleh dari sumber lain.

Pemeriksaan kesehatan

image

Item Konfigurasi

Deskripsi

Liveness probe: Digunakan untuk menentukan apakah kontainer berjalan secara normal. Jika sejumlah pemeriksaan tertentu gagal, kubelet akan memulai ulang kontainer. Pemeriksaan kelangsungan hidup dapat mendeteksi masalah yang menyebabkan kontainer tetap dalam keadaan berjalan tetapi gagal merespons, seperti deadlock.

Jenis permintaan: Permintaan HTTP

Mengirim permintaan HTTP ke kontainer untuk memeriksa secara berkala apakah kontainer berfungsi normal.

  • Protocol: HTTP/HTTPS.

  • Path: Jalur yang digunakan untuk mengakses server HTTP.

  • Port: Port akses atau nama port yang diekspos oleh kontainer. Nomor port harus antara 1 hingga 65535.

  • HTTP Headers: Header permintaan kustom dalam permintaan HTTP. HTTP memungkinkan header duplikat. Anda dapat menentukan header sebagai pasangan kunci-nilai.

  • Detection latency (detik): initialDelaySeconds. Jumlah detik yang ditunggu sebelum pemeriksaan pertama dilakukan setelah kontainer dimulai. Nilai default-nya adalah 3 detik.

  • Detection frequency (detik): periodSeconds. Interval pelaksanaan pemeriksaan. Nilai default-nya adalah 10 detik, dan nilai minimumnya adalah 1 detik.

  • Timeout (detik): timeoutSeconds untuk pemeriksaan. Nilai default-nya adalah 1 detik, dan nilai minimumnya adalah 1 detik.

  • Healthy threshold: Jumlah minimum pemeriksaan berturut-turut yang berhasil agar pemeriksaan dianggap berhasil setelah kegagalan. Nilai default-nya adalah 1, dan nilai minimumnya adalah 1. Untuk pemeriksaan kelangsungan hidup, nilai ini harus 1.

  • Unhealthy threshold: Jumlah minimum pemeriksaan berturut-turut yang gagal agar pemeriksaan dianggap gagal setelah keberhasilan. Nilai default-nya adalah 3, dan nilai minimumnya adalah 1.

Jenis permintaan: Koneksi TCP

Mengirim soket TCP ke kontainer. Kubelet mencoba membuka soket pada port yang ditentukan. Jika koneksi dapat dibuat, kontainer dianggap sehat. Jika tidak, dianggap gagal.

  • Port: Port akses atau nama port yang diekspos oleh kontainer. Nomor port harus antara 1 hingga 65535.

  • Detection latency (detik): initialDelaySeconds. Jumlah detik yang ditunggu sebelum pemeriksaan pertama dilakukan setelah kontainer dimulai. Nilai default-nya adalah 15 detik.

  • Detection frequency (detik): periodSeconds. Interval pelaksanaan pemeriksaan. Nilai default-nya adalah 10 detik, dan nilai minimumnya adalah 1 detik.

  • Timeout (detik): timeoutSeconds untuk pemeriksaan. Nilai default-nya adalah 1 detik, dan nilai minimumnya adalah 1 detik.

  • Healthy threshold: Jumlah minimum pemeriksaan berturut-turut yang berhasil agar pemeriksaan dianggap berhasil setelah kegagalan. Nilai default-nya adalah 1, dan nilai minimumnya adalah 1. Untuk pemeriksaan kelangsungan hidup, nilai ini harus 1.

  • Unhealthy threshold: Jumlah minimum pemeriksaan berturut-turut yang gagal agar pemeriksaan dianggap gagal setelah keberhasilan. Nilai default-nya adalah 3, dan nilai minimumnya adalah 1.

Jenis permintaan: Baris perintah

Menjalankan perintah pemeriksaan di dalam kontainer untuk memeriksa kesehatannya.

  • Command line: Perintah probe yang digunakan untuk memeriksa kesehatan kontainer.

  • Detection latency (detik): initialDelaySeconds. Jumlah detik yang ditunggu sebelum pemeriksaan pertama dilakukan setelah kontainer dimulai. Nilai default-nya adalah 5 detik.

  • Detection frequency (detik): periodSeconds. Interval pelaksanaan pemeriksaan. Nilai default-nya adalah 10 detik, dan nilai minimumnya adalah 1 detik.

  • Timeout (detik): timeoutSeconds untuk pemeriksaan. Nilai default-nya adalah 1 detik, dan nilai minimumnya adalah 1 detik.

  • Healthy threshold: Jumlah minimum pemeriksaan berturut-turut yang berhasil agar pemeriksaan dianggap berhasil setelah kegagalan. Nilai default-nya adalah 1, dan nilai minimumnya adalah 1. Untuk pemeriksaan kelangsungan hidup, nilai ini harus 1.

  • Unhealthy threshold: Jumlah minimum pemeriksaan berturut-turut yang gagal agar pemeriksaan dianggap gagal setelah keberhasilan. Nilai default-nya adalah 3, dan nilai minimumnya adalah 1.

Readiness probe: Digunakan untuk menentukan apakah kontainer siap menerima lalu lintas. Pod hanya akan dilampirkan ke backend layanan setelah pemeriksaan kesiapannya berhasil.

Startup probe: Hanya dijalankan saat kontainer dimulai untuk memeriksa apakah kontainer telah berhasil dimulai. Liveness Probe dan Readiness Probe hanya dijalankan setelah pemeriksaan startup berhasil.

Catatan

Pemeriksaan startup hanya didukung di kluster Kubernetes yang menjalankan versi 1.18 atau lebih baru.

Siklus hidup

image

Item Konfigurasi

Deskripsi

Start Command

Atur perintah dan parameter pra-mulai untuk kontainer. Perintah mulai dan parameter mendefinisikan tindakan yang akan dilakukan saat kontainer dimulai, digunakan untuk menginisialisasi layanan aplikasi. Ini cocok untuk penerapan aplikasi yang memerlukan variabel lingkungan tertentu, titik pemasangan, atau pemetaan port.

Post-start

Atur perintah yang akan dijalankan setelah kontainer dimulai. Perintah pasca-mulai digunakan untuk melakukan tugas tertentu setelah kontainer dimulai, seperti menginisialisasi konfigurasi atau menjalankan skrip. Ini cocok untuk skenario di mana pekerjaan persiapan perlu diselesaikan sebelum proses utama dimulai.

Pre-stop

Atur perintah pra-berhenti untuk kontainer. Perintah pra-berhenti digunakan untuk mematikan proses aplikasi di dalam kontainer, memastikan konsistensi data dan penghentian layanan yang normal. Ini cocok untuk skenario yang memerlukan penghentian aman untuk menghindari kehilangan data atau anomali layanan.

Anda dapat mengonfigurasi penanganan perintah mulai, pasca-mulai, dan pra-berhenti untuk siklus hidup kontainer. Untuk informasi selengkapnya, lihat Konfigurasi Siklus Hidup.

Volume

Item Konfigurasi

Deskripsi

Add Local Storage

Memasang volume penyimpanan lokal dari node ke Pod. Data dalam volume penyimpanan lokal disimpan di node dan tidak tersedia jika node dimatikan. Penyimpanan lokal juga mendukung jenis volume sementara lainnya seperti Secret dan ConfigMap. Fitur penyimpanan cukup kompleks. Sebelum menggunakan volume penyimpanan, baca Penyimpanan untuk memahami dasar-dasar penyimpanan di ACK.

Add PersistentVolumeClaim

Memasang volume penyimpanan cloud ke Pod untuk penyimpanan persisten data penting di dalam kontainer. Volume penyimpanan cloud adalah layanan penyimpanan jarak jauh di luar kluster, sepenuhnya independen dari node pekerja dan tidak terpengaruh oleh perubahan node. Di ACK, volume penyimpanan cloud biasanya merupakan layanan penyimpanan yang disediakan oleh Alibaba Cloud, seperti disk, NAS, atau OSS. Fitur penyimpanan cukup kompleks. Sebelum menggunakan volume penyimpanan, baca Penyimpanan untuk memahami dasar-dasar penyimpanan di ACK.

Konfigurasi log

Collection Configuration

  • Logstore: Logstore yang sesuai dibuat di proyek Simple Log Service yang terkait dengan kluster untuk menyimpan log yang dikumpulkan. Sebelum menggunakan log, baca Manajemen Log untuk memahami dasar-dasar pencatatan log di ACK.

  • Jalur Log di Kontainer: Jalur log yang akan dikumpulkan di dalam kontainer. Jika diatur ke Stdout, maka akan mengumpulkan log keluaran standar kontainer.

Custom Tag

Setelah mengatur tag kustom, tag tersebut akan dikumpulkan bersama dengan keluaran log kontainer, yang memudahkan operasi analisis seperti statistik dan penyaringan log.

Konfigurasi lanjutan

Kartu Konfigurasi

Item Konfigurasi

Deskripsi

Access Settings

Service

Layanan menyediakan titik masuk Lapisan 4 (lapisan transport) yang tetap dan terpadu untuk sekelompok Pod. Ini adalah sumber daya wajib untuk mengekspos beban kerja. Layanan mendukung beberapa jenis, termasuk Virtual Cluster IP, Node Port, dan Load Balancer. Sebelum mengonfigurasi layanan, lihat Manajemen Layanan untuk memahami dasar-dasar layanan.

Ingress

Ingress menyediakan titik masuk Lapisan 7 (lapisan aplikasi) untuk beberapa layanan dalam kluster dan meneruskan permintaan ke layanan berbeda berdasarkan pencocokan nama domain. Sebelum menggunakan Ingress, Anda perlu menginstal pengontrol Ingress. ACK menyediakan beberapa opsi untuk skenario berbeda. Lihat Perbandingan Nginx Ingress, ALB Ingress, dan MSE Ingress untuk memilih.

Scaling Configuration

Metrics-based Scaling

Memicu penskalaan otomatis dengan memantau metrik kinerja kontainer. Penskalaan berbasis metrik membantu Anda menyesuaikan total sumber daya yang digunakan oleh beban kerja secara otomatis saat beban bisnis berfluktuasi, memperluas kapasitas untuk menangani beban tinggi dan mengurangi kapasitas untuk menghemat sumber daya saat beban rendah. Untuk informasi selengkapnya, lihat Gunakan Penyesuaian Otomatis Pod Horizontal (HPA).

Scheduled Scaling

Memicu penskalaan beban kerja pada waktu yang dijadwalkan. Ini cocok untuk skenario dengan perubahan periodik dalam beban bisnis, seperti puncak lalu lintas media sosial setelah makan siang dan makan malam. Untuk informasi selengkapnya, lihat Gunakan CronHPA untuk penyesuaian otomatis horizontal pod terjadwal.

Scheduling Settings

Upgrade Method

Mekanisme di mana beban kerja mengganti Pod lama dengan yang baru saat konfigurasi Pod berubah.

  • Peningkatan bergulir (rollingupdate): Mengganti sebagian Pod sekaligus, melanjutkan ke penggantian berikutnya hanya setelah Pod baru berhasil berjalan. Metode ini memastikan tidak ada gangguan layanan, tetapi pengguna mungkin mengakses versi Pod yang berbeda secara bersamaan.

  • Buat ulang: Mengganti semua Pod sekaligus. Ini dapat menyebabkan gangguan layanan tetapi memastikan bahwa semua Pod memiliki versi yang sama.

  • Node Affinity

  • Pod Affinity

  • Pod Anti-affinity

  • Toleration

Konfigurasi afinitas, anti-afinitas, dan toleransi digunakan untuk penjadwalan agar Pod berjalan di node tertentu. Operasi penjadwalan cukup kompleks dan memerlukan perencanaan awal berdasarkan kebutuhan Anda. Untuk operasi detail, lihat Penjadwalan.

Labels And Annotations

Pod Labels

Menambahkan label ke setiap Pod yang termasuk dalam beban kerja ini. Berbagai sumber daya di kluster, termasuk beban kerja dan layanan, mencocokkan Pod melalui label. ACK menambahkan label default ke Pod dalam format app:(nama aplikasi).

Pod Annotations

Menambahkan anotasi ke setiap Pod yang termasuk dalam beban kerja ini. Beberapa fitur di ACK menggunakan anotasi. Anda dapat mengeditnya saat menggunakan fitur-fitur tersebut.

Contoh file YAML beban kerja

apiVersion: apps/v1
kind: Deployment    # Jenis beban kerja
metadata:
  name: nginx-test
  namespace: default  # Ubah namespace sesuai kebutuhan
  labels:
    app: nginx
spec:
  replicas: 2  # Tentukan jumlah Pod
  selector:
    matchLabels:
      app: nginx
  template: # Konfigurasi Pod
    metadata:
      labels: # Label Pod
        app: nginx 
      annotations: # Anotasi Pod
        description: "Ini adalah penerapan aplikasi"
    spec:
      containers:
      - name: nginx  # Nama citra
        image: nginx:1.7.9  # Gunakan versi tertentu dari citra Nginx
        ports:
        - name: nginx  # nama
          containerPort: 80  # Port yang diekspos oleh kontainer
          protocol: TCP  # Tentukan protokol sebagai TCP atau UDP. Default-nya adalah TCP.
        command: ["/bin/sh"]  # Perintah mulai kontainer
        args: [ "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY) && exec nginx -g 'daemon off;'"] # Keluarkan variabel, tambahkan perintah untuk menjalankan nginx
        stdin: true  # Aktifkan input standar
        tty: true    # Alokasikan terminal virtual
        env:
          - name: SPECIAL_LEVEL_KEY
            valueFrom:
              configMapKeyRef:
                name: special-config  # Nama item konfigurasi
                key: SPECIAL_LEVEL    # Nama kunci item konfigurasi
        securityContext:
          privileged: true  # true mengaktifkan mode istimewa, false menonaktifkannya. Default-nya adalah false.
        resources:
          limits:
            cpu: "500m"               # Penggunaan CPU maksimum, 500 millicore
            memory: "256Mi"           # Penggunaan memori maksimum, 256 MiB
            ephemeral-storage: "1Gi"  # Penggunaan penyimpanan sementara maksimum, 1 GiB
          requests:
            cpu: "200m"               # Permintaan penggunaan CPU minimum, 200 millicore
            memory: "128Mi"           # Permintaan penggunaan memori minimum, 128 MiB
            ephemeral-storage: "500Mi" # Permintaan penggunaan penyimpanan sementara minimum, 500 MiB
        livenessProbe:  # Konfigurasi pemeriksaan kelangsungan hidup
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:  # Konfigurasi pemeriksaan kesiapan
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 10
        volumeMounts:
        - name: tz-config
          mountPath: /etc/localtime
          readOnly: true
      volumes:
      - name: tz-config
        hostPath:
          path: /etc/localtime  # Pasang file /etc/localtime host ke jalur yang sama di kontainer menggunakan bidang volumeMounts dan volumes.
---
# service
apiVersion: v1
kind: Service
metadata:
  name: nginx-test-svc
  namespace: default  # Ubah namespace sesuai kebutuhan
  labels:
    app: nginx
spec:
  selector:
    app: nginx  # Cocokkan label untuk memastikan layanan mengarah ke Pod yang benar
  ports:
    - port: 80           # Port yang disediakan oleh layanan di dalam kluster
      targetPort: 80     # Mengarah ke port yang didengarkan oleh aplikasi di dalam kontainer (containerPort)
      protocol: TCP      # Protokol. Default-nya adalah TCP.
  type: ClusterIP        # Jenis layanan. Default-nya adalah ClusterIP untuk akses internal.
---
# ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: default  # Ubah namespace sesuai kebutuhan
  annotations:
    kubernetes.io/ingress.class: "nginx"  # Tentukan jenis pengontrol Ingress
    # Jika menggunakan pengontrol Ingress SLB Alibaba Cloud, Anda dapat menentukan berikut ini:
    # service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "lb-xxxxxxxxxx"
    # service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.spec.s1.small"
spec:
  rules:
    - host: foo.bar.com  # Ganti dengan nama domain Anda
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx-service  # Nama layanan backend
                port:
                  number: 80         # Port layanan backend
  tls:  # Opsional, untuk mengaktifkan HTTPS
    - hosts:
        - foo.bar.com  # Ganti dengan nama domain Anda
      secretName: tls-secret  # Nama Secret sertifikat TLS

Referensi