All Products
Search
Document Center

Container Service for Kubernetes:Buat sebuah Layanan

Last Updated:Jul 02, 2025

Dalam Kubernetes, Layanan adalah abstraksi yang membantu mengekspos sekelompok pod melalui jaringan. Layanan menyediakan nama domain untuk pod yang diekspos serta mengimplementasikan penyeimbangan beban di antara pod tersebut. Topik ini menjelaskan cara kerja Layanan, tindakan pencegahan dalam mengonfigurasi Layanan LoadBalancer, dan cara memilih berbagai jenis Layanan untuk mengekspos aplikasi.

Prasyarat

Sebuah kluster ACK Serverless telah dibuat. Untuk informasi lebih lanjut, lihat Pengenalan Cepat ACK Serverless.

Informasi latar belakang

Dalam Kubernetes, Layanan adalah abstraksi yang mendefinisikan satu set logis pod dan kebijakan untuk mengakses pod tersebut. Pola ini dikenal sebagai layanan mikro. Pemilih label digunakan untuk menentukan set pod mana yang diakses oleh Layanan.

Setiap pod dalam kluster Kubernetes memiliki alamat IP sendiri. Namun, pod sering kali dibuat dan dihapus. Oleh karena itu, mengekspos pod secara langsung ke akses eksternal tidak sesuai dengan aturan untuk memastikan ketersediaan tinggi. Layanan memisahkan frontend dari backend sehingga klien frontend tidak perlu mengetahui pod backend mana yang digunakan. Hal ini memberikan arsitektur layanan mikro yang longgar terkopel.

Untuk informasi lebih lanjut, lihat Layanan Kubernetes.

Langkah 1: Buat Deployment

  1. Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel di sebelah kiri, pilih Workloads > Deployments.

  3. Di pojok kanan atas halaman Deployments, klik Create from YAML.

  4. Pilih template sampel atau masukkan template kustom, lalu klik Create.

    Dalam contoh ini, template Deployment untuk aplikasi NGINX dipilih.

    apiVersion: apps/v1 
    kind: Deployment
    metadata:
       name: nginx-deployment-basic
       labels:
         app: nginx
    spec:
       replicas: 2
       selector:
         matchLabels:
           app: nginx
       template:
         metadata:
           labels:
             app: nginx
         spec:
           containers:
           - name: nginx
             image: nginx:1.7.9                # ganti dengan <image_name:tags> Anda
             ports:
             - containerPort: 80               ## Ekspos port ini di Layanan.
  5. Di halaman Deployment, temukan Deployment yang telah dibuat dan klik nama Deployment atau klik Details di kolom Tindakan untuk melihat status Deployment.查看应用

Langkah 2: Buat Layanan

  1. Di panel navigasi di sebelah kiri halaman detail, pilih Network > Services.

  2. Di halaman Services, klik Create.

  3. Di kotak dialog Create Service, konfigurasikan parameter berikut.

    Parameter

    Deskripsi

    Name

    Masukkan nama untuk Layanan.

    Service Type

    Tipe Layanan. Parameter ini menentukan bagaimana Layanan diakses. Nilai valid:

    • Cluster IP: Layanan tipe ClusterIP. Jenis Layanan ini diekspos menggunakan alamat IP internal kluster. Ini adalah nilai default. Jika Anda memilih opsi ini, Layanan hanya dapat diakses di dalam kluster.

      Catatan

      Kotak centang Headless Service hanya ditampilkan ketika Anda mengatur Type ke Cluster IP. Jika Anda memilih kotak centang ini, Anda dapat menggunakan Layanan headless untuk berinteraksi dengan mekanisme penemuan layanan lainnya, tanpa terikat pada implementasi penemuan layanan di Kubernetes.

    • Node Port: Layanan tipe NodePort. Jenis Layanan ini diakses menggunakan alamat IP dan port statis dari setiap node. Layanan NodePort dapat digunakan untuk merutekan permintaan ke Layanan ClusterIP. Layanan ClusterIP secara otomatis dibuat oleh sistem. Anda dapat mengakses Layanan NodePort dari luar kluster dengan mengirimkan permintaan ke <NodeIP>:<NodePort>.

      Catatan

      Opsi ini hanya didukung oleh kluster ACK. Kluster ACK Serverless tidak mendukung opsi ini.

    • Server Load Balancer: Layanan tipe LoadBalancer. Jenis Layanan ini menggunakan instance Server Load Balancer (SLB) yang menghadap Internet atau instance SLB akses internal untuk mengaktifkan akses eksternal atau internal. Anda juga dapat menggunakan Layanan LoadBalancer untuk merutekan trafik ke Layanan NodePort atau Layanan ClusterIP.

      • Create SLB Instance: Anda dapat mengklik Modify untuk mengubah spesifikasi instance SLB.

      • Use Existing SLB Instance: Anda dapat memilih instance SLB yang sudah ada.

      Catatan

      Anda dapat membuat instance SLB atau menggunakan instance SLB yang sudah ada. Anda juga dapat mengaitkan instance SLB dengan beberapa Layanan. Namun, Anda harus memperhatikan batasan berikut:

      • Jika Anda menggunakan instance SLB yang ada, pendengar instance SLB akan menimpa pendengar Layanan.

      • Instance SLB yang dibuat untuk Layanan tidak dapat dibagikan oleh Layanan lain. Jika Anda menggunakan instance SLB untuk mengekspos Layanan lain, instance SLB mungkin dihapus. Hanya instance SLB yang dibuat secara manual di konsol atau dengan memanggil API yang dapat digunakan untuk mengekspos beberapa Layanan.

      • Layanan Kubernetes yang berbagi instance SLB yang sama harus menggunakan port pendengar frontend yang berbeda. Jika tidak, konflik port akan terjadi.

      • Jika Anda menggunakan satu instance SLB untuk mengekspos beberapa Layanan, Kubernetes menggunakan nama pendengar dan nama grup vServer sebagai pengenal unik. Jangan ubah nama pendengar atau grup vServer.

      • Anda tidak dapat berbagi instance SLB di seluruh kluster.

    External Traffic Policy

    Pilih kebijakan untuk mendistribusikan trafik eksternal. Untuk informasi lebih lanjut tentang kebijakan trafik eksternal, lihat Perbedaan antara kebijakan trafik eksternal.

    • Local: merutekan trafik hanya ke pod pada node tempat Layanan diterapkan.

    • Cluster: lalu lintas jaringan dapat dirutekan ke pod di node lain dalam kluster.

    Catatan

    Parameter External Traffic Policy hanya tersedia jika Anda mengatur Type ke Node Port atau Server Load Balancer.

    Backend

    Aplikasi backend yang ingin Anda asosiasikan dengan Layanan. Jika Anda tidak memilih aplikasi backend, objek Endpoint tidak akan dibuat. Untuk informasi lebih lanjut, lihat Services-without-selectors.

    Port Mapping

    Port Layanan dan port kontainer. Port Layanan sesuai dengan bidang port di file YAML dan port kontainer sesuai dengan bidang targetPort di file YAML. Port kontainer harus sama dengan port yang diekspos di pod backend.

    Annotations

    Tambahkan satu atau lebih anotasi ke Layanan untuk memodifikasi konfigurasi instance SLB. Anda dapat memilih Custom Annotation atau Alibaba Cloud Annotation dari daftar drop-down Tipe. Sebagai contoh, anotasi service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth:2 mengatur bandwidth maksimum Layanan menjadi 2 Mbit/s. Ini membatasi jumlah trafik yang mengalir melalui Layanan. Untuk informasi lebih lanjut tentang anotasi, lihat Gunakan anotasi untuk mengonfigurasi instance CLB.

    Label

    Tambahkan satu atau lebih label ke Layanan. Label digunakan untuk mengidentifikasi Layanan.

  4. Klik Create.

    Di halaman Services, Anda dapat melihat Layanan yang telah dibuat.

    Di halaman Services, Anda dapat mengklik Layanan untuk melihat detail atau klik Update atau Delete di kolom Actions Layanan untuk memperbarui atau menghapus Layanan.

    Catatan

    Di halaman detail Layanan, Anda dapat mengklik hyperlink di sebelah kanan External Endpoint untuk mengakses aplikasi backend.