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
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel di sebelah kiri, pilih .
Di pojok kanan atas halaman Deployments, klik Create from YAML.
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.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
Di panel navigasi di sebelah kiri halaman detail, pilih .
Di halaman Services, klik Create.
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.
CatatanKotak 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>.CatatanOpsi 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.
CatatanAnda 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.
CatatanParameter 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
portdi file YAML dan port kontainer sesuai dengan bidangtargetPortdi 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:2mengatur 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.
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.
CatatanDi halaman detail Layanan, Anda dapat mengklik hyperlink di sebelah kanan External Endpoint untuk mengakses aplikasi backend.