ProHoster > Blog > Pangangasiwa > Paano magbukas ng tunnel sa isang Kubernetes pod o container na may tcpserver at netcat
Paano magbukas ng tunnel sa isang Kubernetes pod o container na may tcpserver at netcat
Tandaan. transl.: Ang praktikal na tala na ito mula sa lumikha ng LayerCI ay isang mahusay na paglalarawan ng tinatawag na mga tip at trick para sa Kubernetes (at higit pa). Ang solusyon na iminungkahi dito ay isa lamang sa iilan at, marahil, hindi ang pinaka-halata (para sa ilang mga kaso, ang "katutubong" para sa mga K8 na nabanggit na sa mga komento ay maaaring angkop kubectl port-forward). Gayunpaman, pinapayagan ka nitong tingnan ang problema mula sa pananaw ng paggamit ng mga klasikal na kagamitan at higit pang pagsasama-sama ng mga ito - sa parehong oras ay simple, nababaluktot at makapangyarihan (tingnan ang "iba pang mga ideya" sa dulo para sa inspirasyon).
Isipin ang isang tipikal na sitwasyon: gusto mo ng port sa iyong lokal na makina na magically forward ng trapiko sa isang pod/container (o vice versa).
Mga posibleng kaso ng paggamit
Suriin kung ano ang ibinabalik ng HTTP endpoint /healthz pod sa production cluster.
Ikonekta ang isang TCP debugger sa pod sa lokal na makina.
Kumuha ng access sa database ng produksyon mula sa mga lokal na tool sa database nang hindi na kailangang mag-abala sa pagpapatunay (karaniwang ang localhost ay may mga karapatan sa ugat).
Magpatakbo ng isang beses na migration script para sa data sa isang staging cluster nang hindi kinakailangang gumawa ng container para dito.
Ikonekta ang isang VNC session sa isang pod na nagpapatakbo ng virtual desktop (tingnan ang XVFB).
Ang ilang mga salita tungkol sa mga kinakailangang tool
Tcpserver β Isang Open Source utility na available sa karamihan ng mga repositoryo ng package ng Linux. Pinapayagan ka nitong magbukas ng lokal na port at mag-redirect ng trapiko na natanggap sa pamamagitan ng stdin/stdout mula sa anumang tinukoy na utos dito:
Ang command na ito ay nagpapahintulot sa pod na ma-access ang port 8000 sa lokal na makina.
Bash script
Sumulat ako ng isang espesyal na script para sa Bash na nagbibigay-daan sa iyong pamahalaan ang isang Kubernetes production cluster LayerCIgamit ang pamamaraang inilarawan sa itaas:
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"
}
Kung idaragdag mo ang function na ito sa ~/.bashrc, madali mong mabubuksan ang isang tunnel sa isang pod gamit ang command kubetunnel web-pod 8080 at gawin curl localhost:6666.
Para sa tunnel in Manggagawa sa pantalan maaari mong palitan ang pangunahing linya ng:
Maaari mong i-redirect ang trapiko ng UDP gamit ang mga command netcat -l -u -c sa halip ng tcpserver ΠΈ netcat -u sa halip ng netcat ayon sa pagkakabanggit.