Halaman ini menunjukkan cara menerapkan alamat IP publik yang digunakan secara pribadi (PUPI) ke blok alamat Pod Google Kubernetes Engine (GKE).
Alamat IP Publik yang Digunakan Secara Pribadi (PUPI) adalah alamat yang dapat Anda gunakan secara pribadi dalam jaringan Virtual Private Cloud (VPC) Anda. Google Cloud Alamat IP ini tidak dimiliki oleh Google. Anda tidak perlu memiliki alamat IP publik ini untuk menggunakannya secara pribadi.
Ringkasan
Cluster GKE memerlukan rentang alamat IP khusus untuk node, Pod, dan Layanan. Seiring berkembangnya infrastruktur, Anda mungkin menghadapi kehabisan ruang alamat IP internal standar (RFC 1918). Salah satu cara untuk meminimalkan kehabisan alamat RFC 1918 pribadi adalah dengan menggunakan alamat IP publik yang digunakan secara pribadi (PUPI) untuk blok CIDR Pod GKE. PUPI menyediakan alternatif untuk jaringan Pod GKE Anda, dengan mencadangkan alamat IP pribadi untuk komponen cluster lainnya.
Cluster Tunggal: Jika hanya membuat satu cluster GKE, Anda dapat mengaktifkan PUPI dengan mengaktifkan rentang alamat IP eksternal yang digunakan secara pribadi.
Beberapa Cluster: Jika Anda menggunakan beberapa cluster GKE yang terhubung melalui peering VPC (skenario umum untuk penyedia layanan), Anda memerlukan konfigurasi yang lebih kompleks. Diagram berikut menunjukkan contoh cara perusahaan (produsen) menawarkan layanan terkelola menggunakan PUPI dengan peering VPC kepada pelanggan (konsumen).

Diagram sebelumnya melibatkan pertimbangan berikut:
- Blok CIDR utama: Blok CIDR non-PUPI yang digunakan untuk node dan load balancer internal (ILB) dan tidak boleh tumpang-tindih di seluruh VPC.
- Blok CIDR sekunder produser: Blok CIDR PUPI yang digunakan untuk Pod
(misalnya,
45.45.0.0/16). - Blok CIDR sekunder konsumen: Blok CIDR PUPI lainnya di sisi pelanggan (misalnya,
5.5.0.0/16).
Cara penggunaan PUPI dalam skenario Penyedia layanan
Penyedia layanan (produsen) menjalankan layanan terkelolanya di cluster GKE (gke-2) dalam VPC-nya (vpc-producer). Cluster ini menggunakan rentang PUPI 45.0.0.0/8 untuk alamat IP Pod-nya.
Pelanggan (konsumen) juga memiliki cluster GKE (gke-1) di
VPC-nya sendiri (vpc-consumer), menggunakan rentang PUPI yang berbeda, 5.0.0.0/8,
untuk alamat IP Pod-nya.
Kedua VPC ini terhubung menggunakan peering VPC, tetapi masing-masing terus menggunakan alamat IP pribadi standar (RFC 1918) untuk node, layanan, dan load balancer internal.
Memastikan komunikasi antar-VPC
- Konsumen ke Produsen: Secara default, VPC konsumen secara otomatis membagikan rute RFC 1918 (tetapi bukan PUPI) dengan produsen. Hal ini memungkinkan resource di VPC konsumen mengakses layanan di VPC produsen (biasanya melalui load balancer internal).
- Produsen ke Konsumen: Agar Pod produsen dapat menjangkau resource di VPC konsumen, konfigurasi eksplisit diperlukan.
- Tidak Ada Tumpang-Tindih: Produsen dan konsumen harus memastikan bahwa rentang PUPI konsumen tidak berkonflik dengan alamat IP yang digunakan di VPC produsen.
- Ekspor/Impor: Produsen harus mengaktifkan ekspor rute PUPI-nya, dan konsumen harus mengaktifkan impor rute tersebut melalui koneksi peering.
Mengaktifkan komunikasi saat rentang PUPI tumpang-tindih
Jika VPC konsumen sudah menggunakan rentang PUPI yang sama dengan produsen, komunikasi langsung dari Pod produsen tidak dapat dilakukan. Sebagai gantinya, produsen dapat mengaktifkan penyamaran alamat IP, dengan alamat IP Pod disembunyikan di balik alamat IP node produsen.
Tabel berikut menunjukkan setelan impor dan ekspor default untuk setiap VPC. Anda dapat mengubah setelan peering VPC default
menggunakan perintah gcloud compute networks peerings update.
| Jaringan VPC | Impor setelan | Setelan ekspor | Catatan |
|---|---|---|---|
| Produser | Perilaku default (dinonaktifkan): Tidak mengimpor rute subnet dengan alamat IP publik |
Perilaku default (diaktifkan): Mengekspor rute subnet dengan alamat IP publik |
Flag yang dikontrol melalui jaringan layanan. |
| Konsumen | Dinonaktifkan (default) | Diaktifkan (default) | Biasanya dikelola oleh pelanggan, tidak perlu diubah melalui jaringan layanan |
Setelan ini akan menghasilkan:
- VPC produsen melihat semua rute pelanggan.
- VPC konsumen tidak melihat rute PUPI yang dikonfigurasi di subnet Pod di VPC produsen.
- Traffic yang berasal dari Pod produsen ke jaringan
vpc-consumerharus diterjemahkan di belakang alamat node di cluster produsen.
Prasyarat
Untuk membuat komunikasi yang berhasil antara Pod VPC dan VPC lain, pastikan prasyarat dan konfigurasi berikut terpenuhi:
- Cluster GKE Anda harus memenuhi persyaratan versi minimum berikut:
- Cluster Autopilot: GKE versi 1.22 atau yang lebih baru
- Cluster Standard: GKE versi 1.14 atau yang lebih baru
- Pilih rentang PUPI yang tidak dapat dirutekan secara publik atau dimiliki oleh Google.
- Pastikan alamat IP node dan rentang alamat IP utama kedua VPC tidak tumpang-tindih.
- Jika Anda memerlukan komunikasi Pod-ke-Pod langsung antara VPC pelanggan dan layanan terkelola, ikuti langkah-langkah berikut:
- Cluster Autopilot: Konfigurasi SNAT untuk PUPI guna memastikan komunikasi Pod-ke-Pod. Anda tidak memerlukan konfigurasi tambahan.
- Cluster standar: Menerjemahkan alamat IP Pod ke alamat IP node yang sesuai menggunakan SNAT. Aktifkan SNAT untuk traffic PUPI. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan rentang alamat IP eksternal yang digunakan secara pribadi.
Mengonfigurasi alamat IP publik yang digunakan secara pribadi untuk cluster GKE
Untuk mengonfigurasi alamat PUPI untuk cluster GKE:
- Konfigurasi dua jaringan Virtual Private Cloud.
- Konfigurasi satu subnet di dalam setiap jaringan Virtual Private Cloud.
- Konfigurasi rentang alamat PUPI pada rentang alamat sekunder di setiap subnet.
- Buat hubungan peering Virtual Private Cloud antara dua jaringan Virtual Private Cloud dengan setelan impor dan ekspor yang tepat.
- Periksa rute dalam setiap Virtual Private Cloud.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.
Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah
gcloud components update. gcloud CLI versi sebelumnya mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
Hanya gunakan cluster VPC native.
Siapkan spesifikasi IPAM yang diperlukan untuk peering VPC.
Menyiapkan Jaringan dan cluster
Buat jaringan VPC:
Buat dua jaringan VPC berikut dengan RFC-1918 sebagai rentang primer untuk node dan rentang PUPI untuk Pod. Tetapkan rentang alamat IP utama dari ruang alamat pribadi RFC 1918 (misalnya,
10.x.x.x,172.16.x.x, atau192.168.x.x) ke kedua VPC. Rentang ini biasanya digunakan untuk worker node dalam cluster GKE Anda. Selain rentang alamat IP internal, tetapkan rentang terpisah alamat IP Publik yang Digunakan Secara Pribadi (PUPI) untuk setiap VPC. Rentang PUPI ini digunakan secara eksklusif untuk alamat IP Pod dalam cluster GKE yang sesuai.Jaringan VPC konsumen: VPC ini menghosting cluster GKE tempat aplikasi atau beban kerja konsumen berjalan. Anda dapat menggunakan konfigurasi yang mirip dengan berikut:
Network: consumer Subnetwork: consumer-subnet Primary range: 10.129.0.0/24 Service range name and cidr: consumer-services, 172.16.5.0/24 Pod range name and cidr: consumer-pods, 5.5.5.0/24 Cluster name: consumer-clusterJaringan VPC produsen: VPC ini menghosting cluster GKE yang bertanggung jawab untuk menyediakan layanan yang digunakan konsumen. Anda dapat menggunakan konfigurasi yang mirip dengan berikut:
Network: producer Subnetwork: producer-subnet Primary range: 10.128.0.0/24 Service range name and cidr: producer-services, 172.16.45.0/24 Pod range name and cidr: producer-pods, 45.45.45.0/24 Cluster name: producer-cluster
Untuk mengetahui informasi selengkapnya tentang cara membuat jaringan VPC, lihat Membuat jaringan VPC.
Dengan jaringan dan subnet VPC yang dibuat dengan rentang PUPI pada langkah sebelumnya, Anda dapat membuat dua cluster GKE (
producerdanconsumer).Buat cluster
producerdengan jaringan dan subnet produser sebagai berikut:gcloud container clusters create PRODUCER_CLUSTER_NAME \ --location=PRODUCER_CONTROL_PLANE_LOCATION \ --enable-ip-alias \ --network=PRODUCER_NETWORK_NAME \ --subnetwork=PRODUCER_SUBNETWORK_NAME \ --cluster-secondary-range-name=PRODUCER_PODS \ --services-secondary-range-name=PRODUCER_SERVICES \ --num-nodes=1 \ --project=PRODUCER_PROJECT_IDGanti kode berikut:
PRODUCER_CLUSTER_NAME: nama cluster produsen GKE.PRODUCER_CONTROL_PLANE_LOCATION: lokasi Compute Engine bidang kontrol cluster produsen Anda. Berikan region untuk cluster regional, atau zona untuk cluster zona.PRODUCER_NETWORK_NAME: nama jaringan VPC produsen yang ada.PRODUCER_SUBNETWORK_NAME: nama subnet yang ada. Rentang alamat IP utama subnet digunakan untuk node. Subnet harus ada di region yang sama dengan yang digunakan oleh cluster. Jika dihilangkan, GKE akan mencoba menggunakan subnet dalam jaringan VPCdefaultdi region cluster.PRODUCER_PODS: nama rentang alamat IP sekunder yang ada diPRODUCER_SUBNETWORK_NAMEyang digunakan GKE untuk Pod cluster.PRODUCER_SERVICES: nama rentang alamat IP sekunder yang ada diPRODUCER_SUBNETWORK_NAMEyang digunakan GKE untuk Layanan cluster.PRODUCER_PROJECT_ID: ID project produsen.
Buat cluster
consumerdengan jaringan dan subnet konsumen sebagai berikut:gcloud container clusters create CONSUMER_CLUSTER_NAME \ --location=CONSUMER_CONTROL_PLANE_LOCATION \ --enable-ip-alias \ --network=CONSUMER_NETWORK_NAME \ --subnetwork=CONSUMER_SUBNETWORK_NAME \ --cluster-secondary-range-name=CONSUMER_PODS \ --services-secondary-range-name=CONSUMER_SERVICES \ --num-nodes=1 \ --project=CONSUMER_PROJECT_IDGanti kode berikut:
CONSUMER_CLUSTER_NAME: nama cluster konsumen GKE.CONSUMER_CONTROL_PLANE_LOCATION: lokasi Compute Engine bidang kontrol cluster konsumen Anda. Berikan region untuk cluster regional, atau zona untuk cluster zona.CONSUMER_NETWORK_NAME: nama jaringan VPC konsumen yang ada.CONSUMER_SUBNETWORK_NAME: nama subnet yang ada. Rentang alamat IP utama subnet digunakan untuk node. Subnet harus ada di region yang sama dengan yang digunakan oleh cluster. Jika dihilangkan, GKE akan mencoba menggunakan subnet dalam jaringan VPCdefaultdi region cluster.CONSUMER_PODS: Nama rentang alamat IP sekunder yang ada diCONSUMER_SUBNETWORK_NAMEyang digunakan GKE untuk Pod cluster.CONSUMER_SERVICES: Nama rentang alamat IP sekunder yang ada diCONSUMER_SUBNETWORK_NAMEyang digunakan GKE untuk Layanan cluster.CONSUMER_PROJECT_ID: ID project konsumen.
Untuk mengetahui informasi selengkapnya tentang cara membuat cluster, lihat Membuat cluster.
Buat hubungan peering VPC antara jaringan consumer-vpc dan jaringan producer-vpc sebagai berikut:
Untuk menghubungkan jaringan
consumerke produser, jalankan perintah berikut:gcloud compute networks peerings create CONSUMER_PEERING_NAME \ --project=CONSUMER_PROJECT_ID \ --network=CONSUMER_NETWORK_NAME \ --peer-network=PRODUCER_NETWORK_NAMEGanti
CONSUMER_PEERING_NAMEdengan nama peering yang akan ditambahkan ke jaringan konsumen.Untuk menghubungkan jaringan
producerke konsumen, jalankan perintah berikut:gcloud compute networks peerings create PRODUCER_PEERING_NAME \ --project=PRODUCER_PROJECT_ID \ --network=PRODUCER_NETWORK_NAME \ --peer-network=CONSUMER_NETWORK_NAME \ --no-export-subnet-routes-with-public-ip \ --import-subnet-routes-with-public-ipGanti
PRODUCER_PEERING_NAMEdengan nama peering yang akan ditambahkan ke jaringan produsen.
Secara default, VPC konsumen mengekspor alamat PUPI. Saat membuat VPC produser, Anda menggunakan argumen berikut untuk mengonfigurasi VPC agar mengimpor alamat PUPI, tetapi tidak mengekspornya:
--no-export-subnet-routes-with-public-ip --import-subnet-routes-with-public-ip
Memverifikasi jaringan dan subnetwork
Verifikasi jaringan produsen:
gcloud compute networks describe PRODUCER_NETWORK_NAME \ --project=PRODUCER_PROJECT_IDOutputnya mirip dengan hal berikut ini:
... kind: compute#network name: producer peerings: - autoCreateRoutes: true exchangeSubnetRoutes: true exportCustomRoutes: false exportSubnetRoutesWithPublicIp: false importCustomRoutes: false importSubnetRoutesWithPublicIp: true name: producer-peer-consumer …Verifikasi subnetwork produsen:
gcloud compute networks subnets describe PRODUCER_SUBNETWORK_NAME \ --project=PRODUCER_PROJECT_ID\ --region=PRODUCER_CONTROL_PLANE_LOCATIONOutputnya mirip dengan hal berikut ini:
... ipCidrRange: 10.128.0.0/24 kind: compute#subnetwork name: producer-subnet … secondaryIpRanges: - ipCidrRange: 172.16.45.0/24 rangeName: producer-services - ipCidrRange: 45.45.45.0/24 rangeName: producer-pods …Verifikasi jaringan konsumen:
gcloud compute networks describe CONSUMER_NETWORK_NAME \ --project=CONSUMER_PROJECT_IDOutputnya mirip dengan hal berikut ini:
... kind: compute#network name: consumer peerings: - autoCreateRoutes: true exchangeSubnetRoutes: true exportCustomRoutes: false exportSubnetRoutesWithPublicIp: true importCustomRoutes: false importSubnetRoutesWithPublicIp: false name: consumer-peer-producer ...Verifikasi subnetwork konsumen:
gcloud compute networks subnets describe CONSUMER_SUBNETWORK_NAME \ --project=CONSUMER_PROJECT_ID\ --region=CONSUMER_CONTROL_PLANE_LOCATIONOutputnya mirip dengan hal berikut ini:
... ipCidrRange: 10.129.0.0/24 kind: compute#subnetwork name: consumer-subnet ... secondaryIpRanges: - ipCidrRange: 172.16.5.0/24 rangeName: consumer-services - ipCidrRange: 5.5.5.0/24 rangeName: consumer-pods ...
Memverifikasi cluster GKE dan resource-nya
Dapatkan kredensial cluster konsumen:
gcloud container clusters get-credentials CONSUMER_CLUSTER_NAME \ --project=CONSUMER_PROJECT_ID \ --location=CONSUMER_CONTROL_PLANE_LOCATIONOutputnya mirip dengan hal berikut ini:
... Fetching cluster endpoint and auth data. kubeconfig entry generated for consumer-cluster. ...Instal dan verifikasi helloapp.
Atau, Anda dapat menyimpan manifes berikut sebagai
deployment.yaml:kubectl apply -f - <<'EOF' apiVersion: apps/v1 kind: Deployment metadata: name: helloweb labels: app: hello spec: selector: matchLabels: app: hello tier: web template: metadata: labels: app: hello tier: web spec: containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 ports: - containerPort: 8080 resources: requests: cpu: 200m EOFTerapkan manifes ke cluster Anda:
kubectl apply -f deployment.yamlVerifikasi deployment
helloweb:kubectl get deployment hellowebOutputnya mirip dengan hal berikut ini:
... NAME READY UP-TO-DATE AVAILABLE AGE helloweb 1/1 1 1 10s ...
Memverifikasi solusi
Pastikan Anda berhasil membuat peering VPC:
gcloud compute networks peerings listOutputnya mirip dengan berikut ini, yang menampilkan peering yang diberi nama consumer dan producer:
NAME NETWORK PEER_PROJECT PEER_NETWORK STACK_TYPE PEER_MTU IMPORT_CUSTOM_ROUTES EXPORT_CUSTOM_ROUTES STATE STATE_DETAILS consumer-peer-producer consumer <project_name> producer IPV4_ONLY 1460 False False ACTIVE [2023-08-07T13:14:57.178-07:00]: Connected. producer-peer-consumer producer <project_name> consumer IPV4_ONLY 1460 False False ACTIVE [2023-08-07T13:14:57.178-07:00]: Connected.Validasi bahwa VPC konsumen mengekspor rute PUPI:
gcloud compute networks peerings list-routes CONSUMER_PEERING_NAME \ --direction=OUTGOING \ --network=CONSUMER_NETWORK_NAME \ --region=CONSUMER_CONTROL_PLANE_LOCATIONOutputnya mirip dengan berikut ini, yang menampilkan ketiga blok CIDR konsumen:
DEST_RANGE TYPE NEXT_HOP_REGION PRIORITY STATUS 10.129.0.0/24 SUBNET_PEERING_ROUTE us-central1 0 accepted by peer 172.16.5.0/24 SUBNET_PEERING_ROUTE us-central1 0 accepted by peer 5.5.5.0/24 SUBNET_PEERING_ROUTE us-central1 0 accepted by peerMemvalidasi rute PUPI yang diimpor VPC produsen:
gcloud compute networks peerings list-routes PRODUCER_PEERING_NAME \ --direction=INCOMING \ --network=PRODUCER_NETWORK_NAME \ --region=PRODUCER_CONTROL_PLANE_LOCATIONOutputnya mirip dengan berikut ini, yang menampilkan ketiga blok CIDR konsumen:
DEST_RANGE TYPE NEXT_HOP_REGION PRIORITY STATUS 10.129.0.0/24 SUBNET_PEERING_ROUTE us-central1 0 accepted 172.16.5.0/24 SUBNET_PEERING_ROUTE us-central1 0 accepted 5.5.5.0/24 SUBNET_PEERING_ROUTE us-central1 0 acceptedValidasi bahwa Pod GKE memiliki alamat PUPI:
kubectl get pod -o wideOutputnya mirip dengan berikut ini, yang menunjukkan bahwa alamat IP Pod berada dalam rentang 5.5.5/24.
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES helloweb-575d78464d-xfklj 1/1 Running 0 28m 5.5.5.16 gke-consumer-cluster-default-pool-e62b6542-dp5f <none> <none>
Langkah berikutnya
- Baca panduan Mengonfigurasi akses layanan pribadi.
- Baca panduan Mulai menggunakan Service Networking API.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.