Tutorial ini menunjukkan cara menerapkan alamat IP publik yang digunakan secara pribadi (PUPI) untuk 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) Google Cloud. IP ini alamat tersebut tidak dimiliki oleh Google. Anda tidak perlu memiliki IP publik ini untuk digunakan secara pribadi.
Ringkasan
Cluster GKE memerlukan rentang alamat IP khusus untuk node, Pod, dan Layanan Google. Seiring dengan berkembangnya infrastruktur, Anda mungkin menghadapi ruang alamat IP internal standar (RFC 1918). Salah satu cara untuk mengurangi RFC pribadi Kehabisan alamat 1918 adalah penggunaan alamat IP publik yang digunakan secara pribadi (PUPI) untuk CIDR Pod GKE memblokir. PUPI memberikan alternatif untuk jaringan Pod GKE, yang mencadangkan menggunakan alamat IP pribadi untuk komponen cluster lainnya.
Cluster Tunggal: Jika hanya membuat satu cluster GKE, Anda dapat mengaktifkan PUPI dengan mengaktifkan alamat IP eksternal yang digunakan secara pribadi rentang.
Beberapa Cluster: Jika Anda bekerja dengan beberapa GKE cluster yang terhubung melalui peering VPC (skenario umum untuk penyedia layanan), Anda memerlukan konfigurasi yang lebih kompleks. Hal berikut diagram menunjukkan contoh cara perusahaan (produsen) menawarkan layanan terkelola menggunakan PUPI dengan peering VPC ke 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 beberapa VPC.
- Blok CIDR sekunder produsen: Blok CIDR PUPI yang digunakan untuk Pod
(misalnya,
45.45.0.0/16
). - Blok CIDR sekunder konsumen: Blok CIDR PUPI lainnya pada pelanggan
(misalnya,
5.5.0.0/16
).
Cara PUPI digunakan dalam skenario Penyedia layanan
Penyedia layanan (produsen) menjalankan layanan terkelola mereka di
Cluster GKE (gke-2) dalam VPC (vpc-producer
). Ini
cluster menggunakan rentang PUPI 45.0.0.0/8
untuk alamat IP Pod-nya.
Pelanggan (konsumen) juga memiliki cluster GKE (gke-1) sendiri
VPC (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 {i>node<i}, layanan, dan load balancer internal.
Memastikan komunikasi antar-VPC
- Konsumen ke Produsen: Secara default, VPC konsumen secara otomatis membagikan rute RFC 1918-nya (tapi bukan PUPI) dengan produsen. Hal ini memungkinkan resource di VPC konsumen untuk mengakses di VPC produsen (biasanya melalui jaringan load balancer).
- Produser ke Konsumen: Agar Pod produsen dapat menjangkau resource di VPC konsumen, diperlukan konfigurasi eksplisit.
- Tidak Ada Tumpang-Tindih: Produsen dan konsumen harus memastikan bahwa rentang PUPI konsumen tidak bertentangan 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 produser, komunikasi langsung dari Pod produser tidak mungkin dilakukan. Sebagai gantinya, produser bisa mengaktifkan penyamaran alamat IP, di mana alamat IP Pod tersembunyi di balik alamat IP {i>node<i} produsen.
Tabel berikut menampilkan setelan impor dan ekspor default untuk masing-masing
Jaringan VPC. Anda dapat mengubah setelan peering VPC default
menggunakan perintah gcloud compute networks peerings update
.
Jaringan VPC | Impor setelan | Ekspor setelan | Catatan |
---|---|---|---|
Produsen | Perilaku default (dinonaktifkan): Tidak mengimpor rute subnet dengan rute publik
Alamat IP |
Perilaku default (diaktifkan): Mengekspor rute subnet dengan IP publik
alamat |
Tanda yang dikontrol melalui jaringan layanan. |
Konsumen | Dinonaktifkan (default) | Diaktifkan (default) | Biasanya dikelola oleh pelanggan, tidak perlu dimodifikasi melalui jaringan layanan |
Setelan ini menghasilkan hal berikut:
- 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-consumer
harus diterjemahkan di belakang alamat {i>node<i} pada klaster produsen.
Prasyarat
Untuk membangun komunikasi yang sukses antara Pod VPC dan VPC lain, pastikan prasyarat dan konfigurasi terpenuhi:
- Cluster GKE Anda harus memenuhi versi minimum berikut
persyaratan:
- Cluster Autopilot: GKE versi 1.22 atau yang lebih baru
- Cluster standar: 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 dari keduanya VPC tidak tumpang tindih.
- Jika Anda memerlukan komunikasi Pod-ke-Pod langsung antara pelanggan
VPC 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. Mengaktifkan SNAT untuk PUPI kemacetan. Untuk informasi selengkapnya, lihat Mengaktifkan IP eksternal yang digunakan secara pribadi rentang alamat IP.
Mengonfigurasi alamat IP publik yang digunakan secara pribadi untuk cluster GKE
Guna mengonfigurasi alamat PUPI untuk cluster GKE:
- Mengonfigurasi dua jaringan Virtual Private Cloud.
- Mengonfigurasi satu subnet di dalam setiap jaringan Virtual Private Cloud.
- Mengonfigurasi rentang alamat PUPI pada rentang alamat sekunder di setiap subnet.
- Membangun hubungan peering Virtual Private Cloud antara kedua Virtual Private Cloud jaringan dengan setelan impor dan ekspor yang tepat.
- Periksa rute dalam setiap Virtual Private Cloud.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan, gunakan kalkulator harga.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Mengaktifkan 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
gcloud components update
.
Gunakan cluster VPC native saja.
Menyiapkan spesifikasi IPAM yang diperlukan untuk VPC peering.
Menyiapkan Jaringan dan cluster
Membuat jaringan VPC:
Buat dua jaringan VPC berikut dengan RFC-1918 sebagai rentang primer untuk node dan rentang PUPI untuk Pod. Tetapkan alamat IP utama rentang dari ruang alamat pribadi RFC 1918 (misalnya
10.x.x.x
,172.16.x.x
, atau192.168.x.x
) ke kedua VPC. Rentang-rentang ini yang biasanya digunakan untuk worker node dalam GKE Anda klaster. Selain rentang alamat IP internal, tetapkan rentang alamat IP Publik yang Digunakan Secara Pribadi (PUPI) untuk masing-masing Jaringan VPC. Rentang PUPI ini digunakan secara eksklusif untuk IP Pod dalam cluster GKE yang sesuai.Jaringan VPC konsumen: VPC ini menghosting Cluster GKE tempat aplikasi atau workload konsumen akan dijalankan. Anda dapat menggunakan konfigurasi yang mirip dengan berikut ini:
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-cluster
Jaringan VPC produsen: VPC ini menghosting GKE yang bertanggung jawab untuk menyediakan layanan yang penggunaan konsumen. Anda dapat menggunakan konfigurasi yang mirip dengan berikut ini:
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 informasi selengkapnya tentang cara membuat jaringan VPC, lihat Membuat VPC jaringan.
Dengan Jaringan dan subnet VPC dibuat dengan rentang PUPI di langkah sebelumnya, Anda dapat membuat dua Cluster GKE (
producer
danconsumer
).Buat cluster
producer
dengan jaringan produsen dan subnet sebagai berikut:gcloud container clusters create PRODUCER_CLUSTER_NAME \ --enable-ip-alias \ --network=NETWORK_NAME \ --subnetwork=SUBNETWORK_NAME \ --cluster-secondary-range-name=PRODUCER_PODS \ --services-secondary-range-name=PRODUCER_SERVICES \ --num-nodes=1 \ --zone=PRODUCER_ZONE_NAME \ --project=PRODUCER_PROJECT_NAME
Ganti kode berikut:
PRODUCER_CLUSTER_NAME
: nama Cluster produser GKE.COMPUTE_LOCATION
: Compute Engine untuk cluster tersebut.PRODUCER_SUBNET_NAME
: nama subnet yang ada. Rentang alamat IP primer subnet digunakan untuk node. Subnet harus berada di region yang sama dengan region yang digunakan oleh cluster. Jika dihilangkan, GKE mencoba menggunakan subnet di VPCdefault
jaringan di region cluster.- Jika metode penetapan rentang sekunder dikelola oleh GKE:
POD_IP_RANGE
: rentang alamat IP dalam notasi CIDR, seperti10.0.0.0/14
, atau ukuran subnet mask blok CIDR, seperti/14
. Ini digunakan untuk membuat rentang alamat IP sekunder subnet untuk Pod. Jika Anda menghapus opsi--cluster-ipv4-cidr
, GKE memilih/14
rentang (218 alamat) secara otomatis. Rentang yang dipilih secara otomatis dipilih secara acak dari10.0.0.0/8
(rentang 224 alamat).SERVICES_IP_RANGE
: rentang alamat IP dalam notasi CIDR (misalnya,10.4.0.0/19
) atau ukuran subnet mask blok CIDR (untuk contoh,/19
). Ini digunakan untuk membuat alamat IP sekunder subnet untuk Layanan.
- Jika metode penetapan rentang sekunder dikelola pengguna:
SECONDARY_RANGE_PODS
: nama bisnis yang sudah ada rentang alamat IP sekunder dalamSUBNET_NAME
yang ditentukan. GKE menggunakan seluruh rentang alamat IP sekunder subnet untuk Pod di cluster tersebut.SECONDARY_RANGE_SERVICES
: nama bisnis yang sudah ada rentang alamat IP sekunder di yang ditentukan.
Buat cluster
consumer
dengan jaringan dan subnet konsumen sebagai berikut:gcloud container clusters create CONSUMER_CLUSTER_NAME \ --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 \ --zone=CONSUMER_ZONE \ --project=CONSUMER_PROJECT
Ganti kode berikut:
CONSUMER_CLUSTER_NAME
: nama cluster konsumen GKE.COMPUTE_LOCATION
: Compute Engine untuk cluster tersebut.CONSUMER_SUBNET_NAME
: nama subnet yang ada. Rentang alamat IP primer subnet digunakan untuk node. Subnet harus berada di region yang sama dengan region yang digunakan oleh cluster. Jika dihilangkan, GKE mencoba menggunakan subnet di VPCdefault
jaringan di region cluster.- Jika metode penetapan rentang sekunder dikelola oleh GKE:
POD_IP_RANGE
: rentang alamat IP dalam notasi CIDR, seperti10.0.0.0/14
, atau ukuran subnet mask blok CIDR, seperti/14
. Ini digunakan untuk membuat rentang alamat IP sekunder subnet untuk Pod. Jika Anda menghapus opsi--cluster-ipv4-cidr
, GKE memilih/14
rentang (218 alamat) secara otomatis. Rentang yang dipilih secara otomatis dipilih secara acak dari10.0.0.0/8
(rentang 224 alamat) dan tidak akan menyertakan rentang alamat IP yang dialokasikan untuk VM, rute yang ada, atau rentang yang dialokasikan ke klaster lain. Rentang yang dipilih secara otomatis mungkin dengan alamat IP yang dicadangkan, rute dinamis, atau rute dalam VPC yang melakukan peering dengan cluster ini. Jika Anda menggunakan salah satunya, Anda harus menentukan--cluster-ipv4-cidr
untuk mencegah konflik.SERVICES_IP_RANGE
: rentang alamat IP dalam notasi CIDR (misalnya,10.4.0.0/19
) atau ukuran subnet mask blok CIDR (untuk contoh,/19
). Ini digunakan untuk membuat alamat IP sekunder subnet untuk Layanan.
- Jika metode penetapan rentang sekunder dikelola pengguna:
SECONDARY_RANGE_PODS
: nama bisnis yang sudah ada rentang alamat IP sekunder dalamSUBNET_NAME
yang ditentukan. GKE menggunakan seluruh rentang alamat IP sekunder subnet untuk Pod di cluster tersebut.SECONDARY_RANGE_SERVICES
: nama bisnis yang sudah ada rentang alamat IP sekunder di yang ditentukan.
Untuk informasi selengkapnya tentang cara membuat cluster, lihat Membuat cluster.
Menetapkan VPC peering antara jaringan konsumen-vpc dan jaringan produsen-vpc sebagai berikut:
Untuk menghubungkan jaringan
consumer
ke produser, jalankan perintah berikut:gcloud compute networks peerings create PEERING_NAME \ --project=consumer_project \ --network=consumer \ --peer-network=producer
Untuk menghubungkan jaringan
producer
ke konsumen, jalankan perintah berikut:gcloud compute networks peerings create PEERING_NAME \ --project=producer_project \ --network=producer \ --peer-network=consumer \ --no-export-subnet-routes-with-public-ip \ --import-subnet-routes-with-public-ip
Ganti kode berikut:
PEERING_NAME
: nama GKE klaster konsumen.CONSUMER_CLUSTER_NAME
: nama cluster konsumen GKE.
Secara default, VPC konsumen mengekspor alamat PUPI. Kapan saat membuat VPC produsen, gunakan argumen berikut untuk mengonfigurasi VPC untuk 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 \ --project=producer_project
Outputnya 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 produser:
gcloud compute networks subnets describe producer-subnet \ --project=producer_project\ --region=producer_region
Outputnya 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 subnets describe consumer-subnet \ --project=consumer_project \ --region=consumer_region
Outputnya 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 describe consumer \ --project=consumer_project
Outputnya 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 \ --project=consumer_project \ --zone=consumer_zone
Outputnya 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 EOF
Terapkan deployment.yaml:
kubectl apply -f
Verifikasi deployment
helloweb
:kubectl get deployment helloweb
Outputnya mirip dengan hal berikut ini:
... NAME READY UP-TO-DATE AVAILABLE AGE helloweb 1/1 1 1 10s ...
Memverifikasi solusi
Pastikan Anda telah berhasil membuat peering VPC:
gcloud compute networks peerings list
Outputnya mirip dengan yang berikut ini, yang menunjukkan peering yang diberi nama konsumen dan produsen:
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-peer-producer \ --direction=OUTGOING \ --network=consumer \ --region=<consumer_region>
Output-nya serupa dengan berikut ini, yang menunjukkan ketiga CIDR konsumen blok:
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 peer
Validasi rute PUPI yang diimpor VPC produsen:
gcloud compute networks peerings list-routes producer-peer-consumer \ --direction=INCOMING \ --network=producer \ --region=<producer_region>
Output-nya serupa dengan berikut ini, yang menunjukkan ketiga CIDR konsumen blok:
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 accepted
Lakukan validasi bahwa Pod GKE memiliki alamat PUPI:
kubectl get pod -o wide
Output-nya mirip dengan di bawah ini, yang menunjukkan bahwa alamat IP Pod dalam kisaran 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 selanjutnya
- Baca Mengonfigurasi layanan pribadi akses.
- Baca panduan Memulai dengan Jaringan Layanan Panduan API.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Arsitektur Cloud kami Google.