ProHoster > blog > administrasi > Cara membuka terowongan di pod atau container Kubernetes dengan tcpserver dan netcat
Cara membuka terowongan di pod atau container Kubernetes dengan tcpserver dan netcat
Catatan. terjemahan: Catatan praktis dari pembuat LayerCI ini merupakan ilustrasi luar biasa tentang apa yang disebut tips & trik untuk Kubernetes (dan masih banyak lagi). Solusi yang diusulkan di sini hanyalah satu dari sedikit dan, mungkin, bukan yang paling jelas (untuk beberapa kasus, solusi βasliβ untuk K8 yang telah disebutkan dalam komentar mungkin cocok. kubectl port-forward). Namun, ini memungkinkan Anda untuk setidaknya melihat masalah dari sudut pandang penggunaan utilitas klasik dan menggabungkannya lebih lanjut - sekaligus sederhana, fleksibel, dan kuat (lihat βide lainβ di bagian akhir untuk mendapatkan inspirasi).
Bayangkan situasi yang umum: Anda ingin port pada mesin lokal Anda meneruskan lalu lintas secara ajaib ke pod/container (atau sebaliknya).
Kemungkinan kasus penggunaan
Periksa apa yang dikembalikan oleh titik akhir HTTP /healthz pod di cluster produksi.
Hubungkan debugger TCP ke pod di mesin lokal.
Dapatkan akses ke database produksi dari alat database lokal tanpa harus repot dengan otentikasi (biasanya localhost memiliki hak root).
Jalankan skrip migrasi satu kali untuk data dalam klaster penahapan tanpa harus membuat kontainer untuknya.
Hubungkan sesi VNC ke pod yang menjalankan desktop virtual (lihat XVFB).
Beberapa kata tentang alat yang diperlukan
server tcp β Utilitas Sumber Terbuka yang tersedia di sebagian besar repositori paket Linux. Ini memungkinkan Anda untuk membuka port lokal dan mengarahkan lalu lintas yang diterima melalui stdin/stdout dari perintah tertentu ke sana:
Perintah ini memungkinkan pod untuk mengakses port 8000 pada mesin lokal.
Skrip pesta
Saya menulis skrip khusus untuk Bash yang memungkinkan Anda mengelola kluster produksi Kubernetes LapisanCImenggunakan metode yang dijelaskan 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 menambahkan fungsi ini ke ~/.bashrc, Anda dapat dengan mudah membuka terowongan di pod dengan perintah kubetunnel web-pod 8080 dan lakukan curl localhost:6666.
Untuk terowongan masuk Buruh pelabuhan Anda dapat mengganti jalur utama dengan: