ProHoster > Blog > Ma'muriyat > Tcpserver va netcat bilan Kubernetes podasi yoki konteynerida tunnelni qanday ochish mumkin
Tcpserver va netcat bilan Kubernetes podasi yoki konteynerida tunnelni qanday ochish mumkin
Eslatma. tarjima.: LayerCI yaratuvchisidan olingan ushbu amaliy eslatma Kubernetes (va nafaqat) uchun maslahatlar va fokuslar deb ataladigan ajoyib tasvirdir. Bu erda taklif qilingan yechim faqat bir nechta va, ehtimol, eng aniq emas (ba'zi hollarda, sharhlarda aytib o'tilgan K8 uchun "mahalliy" mos kelishi mumkin. kubectl port-forward). Biroq, bu sizga hech bo'lmaganda muammoga klassik yordamchi dasturlardan foydalanish va ularni yanada uyg'unlashtirish nuqtai nazaridan qarashga imkon beradi - shu bilan birga oddiy, moslashuvchan va kuchli (ilhom olish uchun oxirida "boshqa g'oyalar" ga qarang).
Oddiy vaziyatni tasavvur qiling: siz mahalliy mashinangizdagi portni sehrli ravishda pod/konteynerga (yoki aksincha) yo'naltirishini xohlaysiz.
Mumkin foydalanish holatlari
HTTP oxirgi nuqtasi nimani qaytarishini tekshiring /healthz ishlab chiqarish klasteridagi pod.
TCP disk raskadrovkasini mahalliy mashinadagi podga ulang.
Autentifikatsiya bilan bezovta qilmasdan mahalliy ma'lumotlar bazasi vositalaridan ishlab chiqarish ma'lumotlar bazasiga kiring (odatda localhost ildiz huquqlariga ega).
Stinglash klasteridagi ma'lumotlar uchun konteyner yaratmasdan bir martalik migratsiya skriptini ishga tushiring.
VNC seansini virtual ish stolida ishlaydigan podga ulang (XVFBga qarang).
Kerakli vositalar haqida bir necha so'z
Tcpserver β KoΚ»pgina Linux paketlar omborlarida mavjud boΚ»lgan ochiq manba yordam dasturi. Bu sizga mahalliy portni ochish va stdin/stdout orqali qabul qilingan trafikni har qanday belgilangan buyruqdan unga yo'naltirish imkonini beradi:
Ushbu buyruq podkastga mahalliy kompyuterdagi 8000 portiga kirish imkonini beradi.
Bash skripti
Men Bash uchun maxsus skript yozdim, bu sizga Kubernetes ishlab chiqarish klasterini boshqarish imkonini beradi LayerCIyuqorida tavsiflangan usul yordamida:
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"
}
Agar siz ushbu funktsiyaga qo'shsangiz ~/.bashrc, buyrug'i bilan podada tunnelni osongina ochishingiz mumkin kubetunnel web-pod 8080 va qiling curl localhost:6666.
Tunnel uchun Docker asosiy qatorni quyidagi bilan almashtirishingiz mumkin: