Halaman ini menunjukkan cara menerapkan alamat IP persisten di Pod Google Kubernetes Engine (GKE). Anda dapat mengontrol GKE Jaringan pod dengan pemetaan alamat IP persisten kustom. Untuk mempelajari lebih lanjut tentang alamat IP persisten, kasus penggunaan, dan manfaatnya, lihat artikel Tentang IP persisten alamat IP untuk GKE Pod.
Persyaratan
- GKE versi 1.29 atau yang lebih baru.
- Pilih antara menyimpan alamat IP yang disediakan Google (alamat IP yang disediakan Google) atau membawa alamat IP Anda sendiri (BYOIP).
- Konfigurasikan aplikasi Anda yang berjalan di dalam Pod untuk mengenali dan menggunakan alamat IP persisten yang telah ditetapkan.
- Alamat IP persisten untuk Pod GKE memerlukan GKE Dataplane V2 dan cluster yang mendukung multijaringan.
Batasan
- Jaringan default tidak mendukung alamat IP Persisten. Anda harus mengaktifkan multijaringan selama pembuatan cluster.
- Konfigurasi aplikasi Anda untuk menggunakan alamat IP persisten yang telah ditetapkan. GKE tidak secara otomatis menambahkan konfigurasi alamat IP ke antarmuka jaringan Pod.
- Anda dapat mengaitkan setiap alamat IP persisten dengan satu Pod dalam satu waktu.
Ketika Anda memiliki beberapa Pod yang tersedia, GKE biasanya mengirimkan
traffic ke Pod terbaru. Namun, GKE hanya melakukan ini jika
Pod terbaru responsif, artinya Pod memiliki status kondisi
Ready
sebagaiTrue
secara default. Anda dapat mengonfigurasi perilaku ini dan mengubahnya menggunakan SetelanreactionMode
diGKEIPRoute
. - GKE hanya mendukung alamat IPv4 sebagai alamat IP persisten.
- GKE hanya mendukung Lapisan 3 atau Jenis perangkat multijaringan untuk alamat IP persisten.
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
.
Baca tentang alamat IP.
Tinjau persyaratan dan batasan.
Harga
Fitur Network Function Optimizer (NFO) berikut didukung hanya pada cluster yang ada di Project yang diaktifkan dengan GKE Enterprise:
- Dukungan multi-jaringan untuk Pod
- Dukungan alamat IP persisten untuk Pod (Pratinjau)
- Kebijakan jaringan multi-jaringan (Pratinjau)
- Dukungan Service Steering untuk Pod (Pratinjau)
Untuk memahami biaya yang berlaku untuk mengaktifkan edisi Google Kubernetes Engine (GKE) Enterprise, lihat Harga GKE Enterprise.
Mengimplementasikan alamat IP persisten untuk Pod GKE
Alamat IP persisten di GKE menawarkan cara untuk memberi Pod Anda identitas jaringan yang stabil, meskipun Pod itu sendiri diupdate atau dipindahkan di sekitar Anda.
Bagian ini merangkum alur kerja untuk menerapkan alamat IP persisten untuk Pod GKE:
- Buat cluster: Buat cluster yang memiliki Gateway API, GKE Dataplane V2, dan multi-jaringan diaktifkan.
- Cadangkan alamat IP: Putuskan apakah Anda memerlukan alamat IP eksternal ( dapat diakses) atau internal (khusus Google Cloud) dan mencadangkannya. Pilih region yang sama dengan cluster GKE Anda.
- Buat Gateway: Konfigurasikan objek Gateway Kubernetes yang menyimpan
alamat IP persisten yang dicadangkan dan memungkinkan Anda membuat aturan (
GKEIPRoutes
) Pod mana di cluster Anda yang dapat menggunakan alamat IP persisten tersebut. - Buat atau identifikasi workload dengan jaringan tambahan untuk alamat IP persisten: Menyiapkan Pod untuk menggunakan alamat IP persisten dengan mengaktifkan beberapa jaringan dan menentukan jaringan tempat alamat IP persisten berada.
- Buat objek GKEIPRoute untuk workload yang dipilih: Konfigurasi
GKEIPRoute
untuk menetapkan alamat IP persisten ke Pod tertentu. Anda dapat menggunakan label untuk menargetkan Pod yang tepat dan secara opsional dapat mengonfigurasi reaksi perutean terhadap perubahan Pod. - Mengonfigurasi awareness aplikasi Anda: Konfigurasikan aplikasi Anda dalam Pod untuk menggunakan alamat IP persisten secara aktif.
- Pemantauan: Lacak status Gateway dan
GKEIPRoute
Anda. untuk memastikan semuanya bekerja seperti yang diharapkan.
Untuk mengimplementasikan alamat IP persisten untuk Pod GKE, lakukan langkah-langkah berikut:
Langkah 1: Buat GKE Dataplane V2 dan cluster GKE yang mendukung multi-jaringan
Untuk mengaktifkan kemampuan pemilihan rute jaringan dan pengelolaan alamat IP lanjutan yang diperlukan untuk menerapkan alamat IP persisten pada Pod GKE, Anda harus buat GKE Dataplane V2 dan cluster yang mendukung multi-jaringan.
Langkah 2: Cadangkan alamat IP persisten
Guna membangun identitas jaringan yang andal untuk Pod Anda dan menyiapkan IP persisten , Anda harus terlebih dahulu memperoleh alamat IP persisten. Anda dapat memilih antara mereservasi alamat IP yang disediakan Google atau menggunakan alamat IP Anda sendiri (BYOIP).
Langkah 2a: Cadangkan alamat IP yang disediakan Google
Untuk mencadangkan alamat IP eksternal, jalankan perintah berikut:
gcloud compute addresses create ADDRESS_NAME \
--region=REGION
Ganti kode berikut:
ADDRESS_NAME
: nama yang ingin Anda kaitkan dengan alamat ini.REGION
: wilayah tempat Anda ingin mereservasi ini alamat IPv6 Region ini harus sama dengan region Pod yang diinginkan untuk melekatkan alamat IP.Catatan: Anda harus menentukan region saat mereservasi alamat IP karena aturan penerusan, yang menangani perutean traffic untuk alamat IP persisten, bersifat regional. Alamat IP dan cluster GKE Anda harus berada di wilayah yang sama agar {i>routing<i} berfungsi dengan benar.
Untuk mencadangkan alamat IP internal, jalankan perintah berikut:
gcloud compute addresses create ADDRESS_NAME \
--region REGION
--subnet SUBNETWORK \
--addresses IP_ADDRESS
Ganti kode berikut:
ADDRESS_NAME
: nama dari satu atau beberapa alamat yang ingin direservasi. Untuk beberapa alamat, tentukan semua sebagai daftar, yang dipisahkan oleh spasi. Misalnya, contoh-alamat-1 contoh-alamat-2 contoh-alamat-3REGION
: region untuk permintaan ini.SUBNETWORK
: subnet untuk alamat IPv4 internal ini.
Untuk memastikan lalu lintas diarahkan dengan benar dalam jaringan pribadi Anda, alamat harus berasal dari subnet yang ditentukan.
Untuk informasi selengkapnya tentang alamat IP eksternal dan internal, lihat Mencadangkan IP eksternal statis alamat IP dan Mencadangkan IP internal statis Anda.
Langkah 2b: Bawa alamat IP Anda sendiri (BYOIP)
Anda dapat membawa alamat IP Anda sendiri (BYOIP), daripada mengandalkan Alamat IP yang disediakan Google. BYOIP sangat membantu jika Anda memerlukan alamat IP tertentu untuk aplikasi Anda atau memindahkan sistem yang ada ke Google Cloud. Untuk menggunakan BYOIP, Google memvalidasi bahwa Anda memiliki rentang alamat IP, dan setelah alamat IP dan alamat jaringan diimpor ke Google Cloud, Anda dapat menetapkannya sebagai Alamat IP untuk Pod GKE. Untuk informasi selengkapnya, lihat Menggunakan bawa alamat IP Anda sendiri.
Langkah 3: Buat objek Gateway
Objek gateway menyimpan alamat IP dan menentukan Pod mana yang memenuhi syarat untuk digunakan mereka. Untuk mengontrol cara alamat IP persisten ditetapkan ke Pod GKE, Anda akan menggunakan objek Gateway.
- Buat objek Gateway Kubernetes dari class yang sesuai:
gke-persistent-regional-external-managed
untuk alamat IP eksternal (publik).gke-persistent-regional-internal-managed
untuk alamat IP internal (khusus Google Cloud).
- Di dalam bagian Alamat gateway, cantumkan alamat IP persisten (disediakan oleh Google atau BYOIP) yang dikelola oleh Gateway ini.
Gunakan bagian
Listeners
untuk menentukan Pod mana (dan Pod yang terkaitGKEIPRoute
) berpotensi menggunakan alamat IP Gateway.Listeners
bertindak sebagai filter berdasarkan namespace GKEIPRoute di mana ObjekGKEIPRoute
ada.Anda dapat memilih dari opsi pemilihan namespace Kubernetes berikut:
- Semua Namespace: Semua
GKEIPRoute
yang ada di cluster. - Pemilih:
GKEIPRoute
di namespace GKEIPRoute yang cocok dengan label tertentu. - Name yang Sama: Hanya
GKEIPRoutes
dalam namespace GKEIPRoute yang sama dengan Gateway.
- Semua Namespace: Semua
Contoh berikut memberikan akses tingkat cluster ke IP persisten eksternal yang memungkinkan Pod berpotensi menggunakannya.
Simpan manifes contoh berikut sebagai allowed-pod-ips.yaml
:
kind: Gateway
apiVersion: gateway.networking.k8s.io/v1beta1
metadata:
namespace: default
name: allowed-pod-ips
spec:
gatewayClassName: gke-persistent-regional-external-managed
listeners:
- name: default
port: 443
protocol: none
allowedRoutes:
namespaces:
from: All
addresses:
- value: "34.123.10.1/32"
type: "gke.networking.io/cidr"
- value: "34.123.10.2/32"
type: "gke.networking.io/cidr"
dengan:
- alamat: mencantumkan semua alamat IP yang izinnya dikelola oleh {i>Gateway<i} tertentu.
- pemroses: digunakan untuk mengidentifikasi namespace tempat objek
GKEIPRoute
dapat merujuk ke {i>Gateway<i} ini.
Terapkan manifes ke cluster:
kubectl apply -f allowed-pod-ips.yaml
Langkah 4: Buat atau identifikasi workload dengan jaringan tambahan untuk alamat IP persisten
Menyiapkan multi-jaringan Pod dan membuat objek jaringan yang menunjukkan jaringan di mana alamat IP persisten berada.
Langkah 5: Buat objek GKEIPRoute
untuk workload yang dipilih
Untuk menetapkan alamat IP persisten ke Pod yang dipilih, buat objek GKEIPRoute
.
Simpan manifes contoh berikut sebagai my-ip-route.yaml
:
kind: GKEIPRoute
apiVersion: networking.gke.io/v1
metadata:
namespace: default
name: my-ip-route
spec:
parentRefs:
- name: allowed-pod-ips
namespace: default
addresses:
- value: "34.123.10.1/32"
type: "gke.networking.io/cidr"
network: blue-network
reactionMode: ReadyCondition
podSelector: # Only one pod is selected.
matchLabels:
component: proxy
dengan:
- parentRefs: mengarah ke Gateway tempat alamat IP persisten berada data Kolom ini tidak dapat diubah.
- address: mencantumkan semua alamat IP persisten yang dirutekan ke
Pod yang diidentifikasi dengan
podSelector
. Kolom ini dapat berubah. Untuk IPv4, hanya /32 alamat email tidak didukung. - podSelector: menentukan label yang mengidentifikasi Pod tempat
dan alamat IP akan dirutekan. Kolom ini dapat berubah dan berlaku untuk
namespace tempat
GKEIPRoute
ditempatkan. Jika memilih beberapa Pod, ada dua faktor tambahan juga dipertimbangkan: waktu pembuatan Pod (GKE memilih yang terbaru) dan setelan kolomreactionMode
. - reactionMode: menentukan perilaku fitur ini saat Pod tertentu
(dipilih oleh
podSelector
) akan dibuat atau dihapus. Bidang ini adalah opsional dan defaultnya adalahReadyCondition
. KolomReadyCondition
tidak dapat diubah. Anda dapat menyetelreactionMode
untuk mengontrol cara kerja fitur kapan Pod dibuat, dihapus, atau diupdate. - network: mengarah ke antarmuka jaringan di Pod tempat alamat IP persisten alamat akan dirutekan. Kolom ini tidak dapat diubah.
Terapkan manifes ke cluster:
kubectl apply -f my-ip-route.yaml
Menetapkan alamat IP persisten ke Pod StatefulSet
Untuk menetapkan alamat IP persisten ke Pod tertentu dalam StatefulSet, gunakan metode Nama host dan Kubernetes yang dapat diprediksi untuk pod pelabelan otomatis, seperti yang terlihat dalam contoh berikut:
Simpan manifes contoh berikut sebagai my-pod-ips.yaml
:
kind: GKEIPRoute
apiVersion: networking.gke.io/v1
metadata:
namespace: proxy-ss-ns
name: my-pod-ips
spec:
parentRefs:
- name: allowed-pod-ips
namespace: default
addresses:
- value: "34.123.10.1/32"
type: "gke.networking.io/cidr"
- value: "34.123.10.2/32"
type: "gke.networking.io/cidr"
network: blue-network
reactionMode: ReadyCondition
podSelector:
matchLabels:
statefulset.kubernetes.io/pod-name: proxy-ss-1
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
namespace: proxy-ss-ns
name: proxy-ss
spec:
selector:
matchLabels:
component: proxy
serviceName: "proxy"
replicas: 3
template:
metadata:
annotations:
networking.gke.io/default-interface: 'eth0'
networking.gke.io/interfaces: '[{"interfaceName":"eth0","network":"default"}, {"interfaceName":"eth1","network":"blue-network"}]'
labels:
component: proxy
spec:
containers:
- name: hello-app
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Terapkan manifes ke cluster (pastikan Anda memiliki Jaringan bernama "blue-network"):
kubectl apply -f my-pod-ips.yaml
Menetapkan alamat IP persisten ke Pod Deployment
Untuk menetapkan alamat IP persisten ke Pod terbaru di Deployment, terapkan
GKEIPRoute
dengan konfigurasi berikut:
Simpan manifes contoh berikut sebagai my-pod-ips.yaml
:
kind: GKEIPRoute
apiVersion: networking.gke.io/v1
metadata:
namespace: proxy-deploy-ns
name: my-pod-ips
spec:
parentRefs:
- name: allowed-pod-ips
namespace: default
addresses:
- value: "34.123.10.1/32"
type: "gke.networking.io/cidr"
- value: "34.123.10.2/32"
type: "gke.networking.io/cidr"
network: blue-network
reactionMode: ReadyCondition
podSelector:
matchLabels:
component: proxy
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: proxy-deploy-ns
name: proxy-deploy
spec:
selector:
matchLabels:
component: proxy
replicas: 4 # Latest Pod is used
template:
metadata:
annotations:
networking.gke.io/default-interface: 'eth0'
networking.gke.io/interfaces: '[{"interfaceName":"eth0","network":"default"}, {"interfaceName":"eth1","network":"blue-network"}]'
labels:
component: proxy
spec:
containers:
- name: hello-app
image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Terapkan manifes ke cluster (pastikan Anda memiliki Jaringan bernama "blue-network"):
kubectl apply -f my-ip-route.yaml
Langkah 6: Gunakan alamat IP persisten di dalam Pod
Menetapkan alamat IP persisten ke Pod GKE menggunakan GKEIPRoute
tidak secara otomatis membuat alamat IP
dapat digunakan oleh aplikasi Anda. Tujuan
alamat IP persisten ditangani pada tingkat perutean jaringan, tetapi alamat IP
konfigurasi {i>default<i} tidak
akan menyadarinya. Anda harus mengonfigurasi atribut
untuk mengenali dan menggunakan alamat dalam Pod. Untuk mencapai hal ini,
Pod Anda akan memerlukan izin hak istimewa.
Untuk mengonfigurasi aplikasi Anda, pertimbangkan opsi berikut:
- net.ipv4.ip_nonlocal_bind: Ubah setelan sistem untuk memungkinkan aplikasi untuk menggunakan alamat IP yang tidak secara langsung ditetapkan ke antarmukanya.
- ip address add: Gunakan perintah ini dalam logika aplikasi Anda untuk akan menambahkan alamat IP persisten ke antarmuka secara manual.
- Soket mentah: Untuk kontrol yang lebih besar, aplikasi Anda dapat berinteraksi langsung dengan tumpukan jaringan (lanjutan).
- Tumpukan alamat IP Userspace: Dalam kasus khusus, alamat IP aplikasi dapat berjalan di dalam Pod untuk mengelola alamat IP (yang sangat tingkat lanjut).
Menyesuaikan perilaku alamat IP persisten selama perubahan Pod
Bagian ini menjelaskan cara alamat IP persisten untuk Pod GKE
akan berperilaku saat Pod yang ditargetkan dibuat atau dihapus. GKE
pengontrol memantau Pod Anda dan konfigurasi GKEIPRoute
. Saat mendeteksi
terjadi pembaruan, sistem secara otomatis
menetapkan kembali alamat IP persisten untuk
Pod yang cocok sesuai dengan reactionMode
pilihan Anda.
Memahami cara fitur alamat IP persisten menangani Pod secara otomatis perubahan dan opsi konfigurasi yang tersedia untuk Anda:
- Tentukan antara
ReadyCondition
atau
Ada
dalam
reactionMode
untuk konfigurasi
GKEIPRoute
Anda. Mempertimbangkan kebutuhan aplikasi Anda mengenai seberapa cepat alamat IP ditetapkan versus seberapa ketat persyaratan kesiapan. - Jika Anda menggunakan
ReadyCondition
untuk memastikan kesiapan, pastikan bahwa Pod telah mengimplementasikan pemeriksaan kesiapan Kubernetes dengan benar. Jika tidak, alamat IP persisten mungkin tidak berfungsi sebagaimana mestinya. - Sebaiknya Anda memantau status Pod dan
Conditions
kolom objekGKEIPRoute
untuk memastikan sistem berfungsi dengan benar. Statustrue
dari kondisiReady
menunjukkan bahwa sistem telah bekerja dengan benar.
Memecahkan masalah komunikasi dengan alamat IP persisten untuk Pod
Bagian ini menampilkan cara menyelesaikan masalah yang terkait dengan alamat IP persisten untuk Pod.
NoPodsFound
jika tidak ditemukan Pod yang cocok
Gejala
Objek GKEIPRoute
menentukan podSelector
(sekumpulan label) untuk diidentifikasi
Pod mana yang terkait dengan alamat IP persisten. Tujuan
Status NoPodsFound
menunjukkan bahwa tidak ada Pod dalam target
Namespace GKEIPRoute's
yang memiliki label yang cocok.
Kemungkinan penyebab
- Label salah: Pod yang ingin Anda gunakan dengan alamat IP persisten mungkin memiliki label yang salah, atau tidak ada label sama sekali.
- Tidak ada Pod: Jika
reactionMode == Exists
, periksa apakah Pod sudah ditetapkan ke node dengan memeriksa kolompod.Spec.nodeName
. Terkadang mungkin ada bukanlah Pod yang berjalan di namespaceGKEIPRoute's
yang sesuai dengan pemilih. - Pod tidak Siap: Jika
reactionMode == ReadyCondition
, periksa apakah Pod statusnya adalahREADY
. Meskipun ada Pod yang cocok, jika Pod tidak ada dalamReady
status, tidak dapat melayani lalu lintas dan oleh karena itu tidak dipilih.
Resolusi
- Periksa Label Anda: Periksa kembali apakah label di
GKEIPRoute's
podSelector
cocok dengan label yang telah Anda terapkan ke Pod yang diinginkan. - Memverifikasi Keberadaan Pod: Pastikan Pod dengan label yang benar
ada di namespace
GKEIPRoute's
yang ditentukan olehListeners
Gateway Anda. JikareactionMode == Exists
, periksa apakah Pod telah ditetapkan ke node oleh memeriksa kolompod.Spec.nodeName
Konfirmasi Kesiapan Pod: Jika
reactionMode == ReadyCondition
, periksa apakah status Pod adalahREADY
. Pastikan Pod berada dalam statusReady
menggunakan perintah berikut:kubectl get pods -n <namespace>
Pod yang berstatus lain (misalnya, "Tertunda", "Error") tidak dipilih.
Mengonfigurasi Pod merespons alamat IP persisten yang telah ditetapkan.
Mutated
saat Pod yang cocok ditemukan dan pemrograman alamat IP persisten sedang berlangsung
Gejala
Status GKEIPRoute
menunjukkan "Bermutasi", yang menunjukkan bahwa alamat IP persisten
untuk Pod yang cocok sedang berlangsung.
Potensi Penyebab:
Anda akan mendapati status selama konfigurasi karena sistem sedang mengatur jalur data GKE dan resource Google Cloud untuk IP persisten alamat IPv6
Penyelesaian:
- Tunggu dan coba lagi: Pada umumnya, proses konfigurasi akan selesai
secara otomatis dalam waktu singkat. Periksa status setelah menunggu. Ini
akan berubah menjadi
Ready
jika berhasil. - Investigasi lebih lanjut (jika perlu): Jika instance "Diubah" status akan tetap ada selama
waktu yang lebih lama, hal ini mungkin
mengindikasikan error konfigurasi. Periksa
kondisi status lainnya di
GKEIPRoute
Anda:- Diterima: Menunjukkan apakah penyiapan
GKEIPRoute
valid. - DPV2Ready: Menunjukkan apakah jalur data pada node diprogram dengan benar.
- GCPReady: Menunjukkan apakah resource Google Cloud telah disiapkan sebagai yang diharapkan.
- Diterima: Menunjukkan apakah penyiapan
Cari pesan error dalam kondisi ini untuk membantu memecahkan masalah.