ProHoster > Blog > Adminisztráció > Alagút megnyitása Kubernetes podban vagy tárolóban tcpserver és netcat segítségével
Alagút megnyitása Kubernetes podban vagy tárolóban tcpserver és netcat segítségével
Jegyzet. ford.: A LayerCI készítőjének ez a praktikus megjegyzése kiválóan illusztrálja az úgynevezett tippeket és trükköket a Kubernetes számára (és nem csak). Az itt javasolt megoldás csak egy a kevés közül, és talán nem a legkézenfekvőbb (bizonyos esetekben a megjegyzésekben már említett „natív” a K8-asokhoz megfelelő lehet kubectl port-forward). Lehetővé teszi azonban, hogy legalább a klasszikus segédprogramok használatának és további kombinálásának szemszögéből nézze meg a problémát - ugyanakkor egyszerű, rugalmas és hatékony (inspirációért lásd a végén az „egyéb ötletek” részt).
Képzeljünk el egy tipikus helyzetet: azt szeretnénk, hogy egy port a helyi gépünkön varázsütésre továbbítsa a forgalmat egy podba/tárolóba (vagy fordítva).
Lehetséges használati esetek
Ellenőrizze, hogy mit ad vissza a HTTP-végpont /healthz pod a termelési klaszterben.
Csatlakoztasson egy TCP hibakeresőt a helyi gép podjához.
Hozzáférhet az éles adatbázishoz a helyi adatbázis-eszközökből anélkül, hogy a hitelesítéssel bajlódnia kellene (általában a localhost root jogokkal rendelkezik).
Futtasson egyszeri áttelepítési parancsfájlt egy átmeneti fürtben lévő adatokhoz anélkül, hogy tárolót kellene létrehoznia hozzá.
Csatlakoztasson egy VNC-munkamenetet egy virtuális asztalt futtató podhoz (lásd: XVFB).
Néhány szó a szükséges eszközökről
Tcpserver — Nyílt forráskódú segédprogram, amely a legtöbb Linux-csomag tárolójában elérhető. Lehetővé teszi egy helyi port megnyitását és az stdin/stdout-on keresztül fogadott forgalom átirányítását bármely megadott parancsból arra:
Ez a parancs lehetővé teszi, hogy a pod hozzáférjen a helyi gép 8000-es portjához.
Bash script
Írtam egy speciális szkriptet a Bash számára, amely lehetővé teszi egy Kubernetes éles fürt kezelését LayerCIa fent leírt módszerrel:
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"
}
Ha hozzáadja ezt a funkciót a ~/.bashrc, a paranccsal könnyedén megnyithat egy alagutat egy podban kubetunnel web-pod 8080 és csináld curl localhost:6666.
Az alagúthoz Dokkmunkás a fősort a következőre cserélheti: