Pendahuluan
Kubectl port-forward memungkinkan Anda untuk mengakses dan berinteraksi dengan proses cluster Kubernetes internal dari localhost Anda. Anda dapat menggunakan metode ini untuk menyelidiki masalah dan menyesuaikan layanan Anda secara lokal tanpa perlu mengungkapkannya terlebih dahulu.
Kubectl adalah alat baris perintah utama untuk mengelola cluster Kubernetes. Ini penting untuk menerapkan aplikasi, mengelola sumber daya cluster, dan membangun kerangka kerja yang kompleks.
Tutorial singkat ini menunjukkan kepada Anda cara menggunakan kubectl untuk melakukan port-forward ke pod di cluster Kubernetes.
Prasyarat
- Kluster Kubernetes
- Kubectl yang dikonfigurasikan sepenuhnya alat baris perintah
Bagaimana Cara Kerja Penerusan Port Kubernetes?
Meskipun Kubernetes adalah sistem orkestrasi yang sangat otomatis, proses penerusan port memerlukan input pengguna langsung dan berulang. Sambungan berakhir setelah instance pod gagal, dan perlu untuk membuat penerusan baru dengan memasukkan perintah yang sama secara manual.
Seluruh proses disederhanakan oleh fakta bahwa kubectl sudah memiliki fungsi penerusan port bawaan.
- Pengguna berinteraksi dengan Kubernetes menggunakan kubectl baris perintah di mesin lokal mereka.
port-forward
perintah menentukan nama sumber daya cluster dan menentukan nomor port yang akan diteruskan.- Akibatnya, server Kubernetes API membuat koneksi HTTP tunggal antara localhost Anda dan sumber daya yang berjalan di cluster Anda.
- Pengguna sekarang dapat menggunakan pod tertentu secara langsung, baik untuk mendiagnosis masalah atau men-debug jika perlu.
Penerusan port adalah metode padat karya. Namun, dalam beberapa kasus, ini adalah satu-satunya cara untuk mengakses sumber daya cluster internal.
Perintah dasar kubectl port-forward
port-forward
perintah membuat terowongan dari pod target ke localhost Anda. Perintah tersebut mengharuskan Anda untuk menentukan jenis atau nama sumber daya serta nomor port lokal dan jarak jauh:
kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT
Jika beberapa pod cocok dengan kriteria tipe/nama, satu pod acak akan dipilih secara default. Untuk menghindari inkonsistensi seperti itu, tentukan pod setepat mungkin. Anda dapat menemukan nama pod yang tepat dengan mencantumkan pod secara manual di dalam namespace dengan mengetik:
kubectl -n yournamespace get pods
Daftar tersebut memberikan nama-nama pod dalam namespace tersebut.
kubectl port-forward ke Pod Tertentu
Misalnya, perintah berikut akan memungkinkan Anda untuk mengakses penyebaran MongoDB dalam cluster Anda. Nama podnya adalah mongo-db-r3pl1ka3 , dan nomor port adalah 5762:
kubectl port-forward pod/mongo-db-r3pl1ka3 8080:5762
Kubernetes API sekarang mendengarkan pada port lokal 8080 dan meneruskan data ke port 5762 pada pod yang ditentukan.
Port Lokal Acak
Dengarkan port acak secara lokal, dan teruskan ke port 5762 dalam pod yang ditentukan:
kubectl port-forward pod/mongo-db-r3pl1ka3 :5762
Port Lokal dan Jarak Jauh yang Sesuai
Dengarkan dan teruskan data menggunakan port yang identik (8080, 5762) baik secara lokal maupun di dalam pod tertentu:
kubectl port-forward pod/mongo-db-r3pl1ka3 8080 5762
Alamat IP Lokal Acak
Dengarkan di port 8080 di alamat lokal mana pun, teruskan ke port 5762 di pod yang ditentukan:
kubectl port-forward --address 0.0.0.0 pod/mongo-db-r3pl1ka3 8888:5762
Tentukan Alamat IP Lokal untuk Penerusan Port
Dengarkan di port 8080 di localhost menggunakan IP yang ditentukan, teruskan ke port 5762 di pod:
kubectl port-forward --address localhost,10.153.40.102 pod/mongo-db-r3pl1ka3 8080:5762
Gunakan Deployment untuk Memilih Pod port-forward
Dengarkan dan teruskan data menggunakan port yang sama (8080 5762) baik secara lokal maupun di dalam pod. Penerapan mendefinisikan pod mana yang akan digunakan:
kubectl port-forward deployment/mydeployment 8080 5762
Izinkan Layanan untuk Mendefinisikan Pod port-forward
Dengarkan dan teruskan data menggunakan port yang sama (8080 5762) baik secara lokal maupun di dalam pod. Layanan memilih pod mana yang akan digunakan:
kubectl port-forward service/myservice 8080 5762