ProHoster > Blog > Stjórnsýsla > Hvernig á að opna göng í Kubernetes belg eða ílát með tcpserver og netcat
Hvernig á að opna göng í Kubernetes belg eða ílát með tcpserver og netcat
Athugið. þýð.: Þessi hagnýta athugasemd frá höfundi LayerCI er frábær mynd af svokölluðum ráðum og brellum fyrir Kubernetes (og fleira). Lausnin sem hér er lögð til er aðeins ein af fáum og kannski ekki sú augljósasta (í sumum tilfellum gæti sú „innfædda“ fyrir K8 sem þegar er nefnd í athugasemdunum hentað kubectl port-forward). Hins vegar gerir það þér kleift að skoða vandamálið að minnsta kosti út frá því að nota klassísk tól og sameina þau frekar - á sama tíma einfalt, sveigjanlegt og öflugt (sjá „aðrar hugmyndir“ í lokin til að fá innblástur).
Ímyndaðu þér dæmigert ástand: þú vilt hafa höfn á staðbundinni vél til að framsenda umferð á töfrandi hátt í belg/ílát (eða öfugt).
Möguleg notkunartilvik
Athugaðu hverju HTTP endapunkturinn skilar /healthz fræbelgur í framleiðsluklasanum.
Tengdu TCP kembiforrit við pod á staðbundinni vél.
Fáðu aðgang að framleiðslugagnagrunninum frá staðbundnum gagnagrunnsverkfærum án þess að þurfa að skipta sér af auðkenningu (venjulega hefur localhost rótarréttindi).
Keyra einu sinni flutningsskriftu fyrir gögn í sviðsetningarklasa án þess að þurfa að búa til gám fyrir það.
Tengdu VNC lotu við belg sem keyrir sýndarskjáborð (sjá XVFB).
Nokkur orð um nauðsynleg verkfæri
Tcpþjónn — Opinn uppspretta tól sem er fáanlegt í flestum Linux pakkageymslum. Það gerir þér kleift að opna staðbundna höfn og beina umferð sem berast í gegnum stdin/stdout frá hvaða tilteknu skipun sem er til hennar:
Þessi skipun gerir belgnum kleift að fá aðgang að port 8000 á staðbundinni vél.
Bash handrit
Ég skrifaði sérstakt handrit fyrir Bash sem gerir þér kleift að stjórna Kubernetes framleiðsluklasa LayerCImeð því að nota aðferðina sem lýst er hér að ofan:
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"
}
Ef þú bætir þessari aðgerð við ~/.bashrc, þú getur auðveldlega opnað göng í belg með skipuninni kubetunnel web-pod 8080 og gera curl localhost:6666.
Fyrir göngin inn Docker þú getur skipt út aðallínunni fyrir: