Node virtual ACK mendukung penemuan layanan melalui Alibaba Cloud DNS PrivateZone. Dengan menambahkan anotasi ke suatu Service, pengontrol node virtual secara otomatis menyinkronkan rekaman DNS-nya ke PrivateZone, sehingga memungkinkan Pod dan klien lain di Virtual Private Cloud (VPC) Anda mengakses Layanan yang didukung Elastic Container Instance (ECI) melalui nama domain.
Jenis Service yang didukung: Headless, ClusterIP, dan LoadBalancer internal.
Penggunaan PrivateZone dikenai biaya. Untuk detail harga, lihat Billing.
Cara kerja
PrivateZone adalah layanan resolusi DNS privat untuk lingkungan VPC yang menyediakan resolusi nama domain dan akselerasi nama domain internal bagi klien seperti instance ECS dan kontainer yang berjalan di dalam VPC.
Saat Anda mengaktifkan PrivateZone pada kluster node virtual, pengontrol node virtual membuat zona DNS privat bernama svc.cluster.local.<clusterID> dan menyinkronkan rekaman DNS untuk Service yang dianotasi ke dalam zona tersebut. Format rekaman DNS adalah <service-name>.<namespace>.
| Jenis Layanan | Rekaman DNS yang disinkronkan | Diselesaikan menjadi |
|---|---|---|
| Headless | Satu rekaman per Pod backend | Alamat IP Pod |
| ClusterIP | Satu rekaman | IP Cluster (IP virtual untuk komunikasi intra-kluster) |
| Internal LoadBalancer | Satu Catatan | IP Cluster (IP virtual untuk komunikasi intra-kluster) |
Setelah sinkronisasi, Service dapat diakses melalui nama domain di dalam VPC:
| Cakupan akses | Format nama domain | Berlaku untuk |
|---|---|---|
| Di dalam kluster, namespace yang sama | <service-name> | Semua Jenis Layanan |
| Di dalam kluster, namespace berbeda | <service-name>.<namespace> | Semua jenis Service |
| Di luar kluster (FQDN) | <service-name>.<namespace>.svc.cluster.local.<clusterID> | Hanya Service Headless |
Prasyarat
Sebelum memulai, pastikan Anda telah:
Menginstal komponen ack-virtual-node. Lihat Deploy the ack-virtual-node component.
CoreDNS tidak terinstal di kluster. Fitur ini tidak dapat digunakan bersama CoreDNS. Pastikan komponen CoreDNS tidak terinstal di kluster.
Mengaktifkan PrivateZone di Konsol Alibaba Cloud DNS.
Aktifkan PrivateZone
Masuk ke Konsol ACK dan klik Clusters di panel navigasi kiri.
Klik nama kluster Anda. Di panel navigasi kiri, pilih Configurations > ConfigMaps.
Atur Namespace ke kube-system, temukan eci-profile, lalu klik Edit.
Atur
enablePrivateZoneketrue, lalu klik OK.Verifikasi bahwa zona telah dibuat:
Di Konsol Alibaba Cloud DNS, klik Private Zone di panel navigasi kiri.
Di tab Authoritative Zone, buka User Defined Zones dan pastikan muncul zona bernama `svc.cluster.local.<cluster ID>`.
Menyinkronkan rekaman DNS Service ke PrivateZone
Rekaman DNS tidak disinkronkan ke PrivateZone secara default. Untuk mengaktifkan sinkronisasi untuk suatu Service, tambahkan anotasi berikut:
service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true"Contoh berikut membuat satu Deployment dan tiga Service — masing-masing dari setiap jenis yang didukung — semuanya dengan anotasi tersebut.
Simpan konten berikut sebagai
test-pz.yaml:apiVersion: v1 kind: Service metadata: name: nginx-headless-service annotations: service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true" spec: ports: - port: 80 protocol: TCP selector: app: nginx clusterIP: None --- apiVersion: v1 kind: Service metadata: name: nginx-clusterip-service annotations: service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true" spec: ports: - port: 80 protocol: TCP selector: app: nginx type: ClusterIP --- apiVersion: v1 kind: Service metadata: name: nginx-intranet-service annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet" service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true" spec: ports: - port: 80 protocol: TCP selector: app: nginx type: LoadBalancer --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx alibabacloud.com/eci: "true" # Jadwalkan Pod ke ECI spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80Terapkan manifes:
kubectl create -f test-pz.yamlVerifikasi bahwa rekaman DNS telah disinkronkan:
Di Konsol Alibaba Cloud DNS, klik Private Zone.
Di bawah User Defined Zones pada tab Authoritative Zone, temukan zona bernama `svc.cluster.local.<cluster ID>` dan klik Settings.
Di tab Settings, pastikan tiga rekaman DNS muncul — satu untuk setiap Service — dalam format
<service-name>.default:
nginx-headless-service.default— beberapa Rekaman A, satu per alamat IP Podnginx-clusterip-service.default— satu Rekaman A yang mengarah ke IP Clusternginx-intranet-service.default— satu Rekaman A yang mengarah ke IP Cluster