ProHoster > Blog > Pentadbiran > Cara membuka terowong dalam pod atau bekas Kubernetes dengan tcpserver dan netcat
Cara membuka terowong dalam pod atau bekas Kubernetes dengan tcpserver dan netcat
Catatan. terjemah: Nota praktikal daripada pencipta LayerCI ini ialah ilustrasi yang sangat baik tentang apa yang dipanggil petua & helah untuk Kubernetes (dan banyak lagi). Penyelesaian yang dicadangkan di sini hanyalah salah satu daripada beberapa dan, mungkin, bukan yang paling jelas (untuk sesetengah kes, penyelesaian "asli" untuk K8 yang telah disebutkan dalam ulasan mungkin sesuai kubectl port-forward). Walau bagaimanapun, ia membolehkan anda sekurang-kurangnya melihat masalah dari perspektif menggunakan utiliti klasik dan menggabungkannya lagi - pada masa yang sama mudah, fleksibel dan berkuasa (lihat "idea lain" di penghujung untuk mendapatkan inspirasi).
Bayangkan situasi biasa: anda mahukan port pada mesin tempatan anda untuk memajukan trafik secara ajaib ke pod/bekas (atau sebaliknya).
Kemungkinan kes penggunaan
Semak perkara yang dikembalikan oleh titik akhir HTTP /healthz pod dalam kelompok pengeluaran.
Sambungkan penyahpepijat TCP ke pod pada mesin tempatan.
Dapatkan akses kepada pangkalan data pengeluaran daripada alat pangkalan data tempatan tanpa perlu bersusah payah dengan pengesahan (biasanya localhost mempunyai hak root).
Jalankan skrip migrasi satu kali untuk data dalam kelompok pementasan tanpa perlu membuat bekas untuknya.
Sambungkan sesi VNC ke pod yang menjalankan desktop maya (lihat XVFB).
Beberapa perkataan tentang alat yang diperlukan
Tcpserver β Utiliti Sumber Terbuka tersedia dalam kebanyakan repositori pakej Linux. Ia membolehkan anda membuka port tempatan dan mengubah hala lalu lintas yang diterima melalui stdin/stdout daripada sebarang arahan yang ditentukan kepadanya:
Perintah ini membenarkan pod mengakses port 8000 pada mesin tempatan.
Skrip Bash
Saya menulis skrip khas untuk Bash yang membolehkan anda mengurus kelompok pengeluaran Kubernetes LayerCImenggunakan kaedah yang diterangkan di atas:
kubetunnel() {
POD="$1"
DESTPORT="$2"
if [ -z "$POD" -o -z "$DESTPORT" ]; then
echo "Usage: kubetunnel [pod name] [destination port]"
return 1
fi
pkill -f 'tcpserver 127.0.0.1 6666'
tcpserver 127.0.0.1 6666 kubectl exec -i "$POD" nc 127.0.0.1 "$DESTPORT"&
echo "Connect to 127.0.0.1:6666 to access $POD:$DESTPORT"
}
Jika anda menambah fungsi ini kepada ~/.bashrc, anda boleh membuka terowong dalam pod dengan mudah dengan arahan kubetunnel web-pod 8080 dan buat curl localhost:6666.
Untuk terowong masuk buruh pelabuhan anda boleh menggantikan baris utama dengan: