ProHoster > Блог > Administrado > Kiel malfermi tunelon en Kubernetes-podo aŭ ujo kun tcpserver kaj netcat
Kiel malfermi tunelon en Kubernetes-podo aŭ ujo kun tcpserver kaj netcat
Notu. transl.: Ĉi tiu praktika noto de la kreinto de LayerCI estas bonega ilustraĵo de la tiel nomataj konsiletoj kaj lertaĵoj por Kubernetes (kaj pli). La solvo ĉi tie proponita estas nur unu el la malmultaj kaj, eble, ne la plej evidenta (por iuj kazoj, la "denaska" por K8-oj jam menciita en la komentoj eble taŭgas. kubectl port-forward). Tamen ĝi permesas al vi almenaŭ rigardi la problemon el la perspektivo uzi klasikajn utilecojn kaj plu kombini ilin - samtempe simpla, fleksebla kaj potenca (vidu "aliajn ideojn" fine por inspiro).
Imagu tipan situacion: vi volas ke haveno sur via loka maŝino magie plusendi trafikon al pod/ujo (aŭ inverse).
Eblaj uzkazoj
Kontrolu, kion redonas la HTTP-finpunkto /healthz pod en la produktada areto.
Konektu TCP-erarsermilon al la pod sur la loka maŝino.
Akiru aliron al la produktada datumbazo de lokaj datumbazaj iloj sen devi ĝeni per aŭtentikigo (kutime localhost havas radikrajtojn).
Rulu unufojan migradan skripton por datumoj en sursceniga areto sen devi krei ujon por ĝi.
Konektu VNC-sesion al pod, kiu funkcias per virtuala labortablo (vidu XVFB).
Kelkajn vortojn pri la necesaj iloj
Tcpserver — Malfermfonta ilo havebla en la plej multaj Linukso-pakaĵdeponejoj. Ĝi permesas vin malfermi lokan havenon kaj redirekti trafikon ricevitan per stdin/stdout de iu ajn specifita komando al ĝi:
Ĉi tiu komando permesas al la pod aliri la havenon 8000 sur la loka maŝino.
Bash-skripto
Mi skribis specialan skripton por Bash, kiu ebligas al vi administri Kubernetes-produktadgrupon TavoloCIuzante la metodon priskribitan supre:
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"
}
Se vi aldonas ĉi tiun funkcion al ~/.bashrc, vi povas facile malfermi tunelon en pod kun la komando kubetunnel web-pod 8080 kaj faru curl localhost:6666.
Por la tunelo en Docker vi povas anstataŭigi la ĉefan linion per: