ProHoster > blog > Gweinyddiaeth > Sut i agor twnnel mewn pod neu gynhwysydd Kubernetes gyda tcpserver a netcat
Sut i agor twnnel mewn pod neu gynhwysydd Kubernetes gyda tcpserver a netcat
Nodyn. traws.: Mae'r nodyn ymarferol hwn gan greawdwr LayerCI yn enghraifft wych o'r awgrymiadau a'r triciau fel y'u gelwir ar gyfer Kubernetes (a mwy). Dim ond un o’r ychydig yw’r ateb a gynigir yma ac, efallai, nid yr un mwyaf amlwg (mewn rhai achosion, gall yr un “brodorol” ar gyfer K8 a grybwyllwyd eisoes yn y sylwadau fod yn addas. kubectl port-forward). Fodd bynnag, mae'n caniatáu ichi o leiaf edrych ar y broblem o safbwynt defnyddio cyfleustodau clasurol a'u cyfuno ymhellach - ar yr un pryd yn syml, yn hyblyg ac yn bwerus (gweler "syniadau eraill" ar y diwedd am ysbrydoliaeth).
Dychmygwch sefyllfa arferol: rydych chi eisiau porthladd ar eich peiriant lleol i anfon traffig ymlaen yn hudol i god/cynhwysydd (neu i'r gwrthwyneb).
Achosion defnydd posibl
Gwiriwch beth mae'r endpoint HTTP yn ei ddychwelyd /healthz pod yn y clwstwr cynhyrchu.
Cysylltwch ddadfygiwr TCP â'r pod ar y peiriant lleol.
Sicrhewch fynediad i'r gronfa ddata gynhyrchu o offer cronfa ddata lleol heb orfod trafferthu â dilysu (fel arfer mae gan localhost hawliau gwraidd).
Rhedeg sgript mudo un-amser ar gyfer data mewn clwstwr llwyfannu heb orfod creu cynhwysydd ar ei gyfer.
Cysylltwch sesiwn VNC i god sy'n rhedeg bwrdd gwaith rhithwir (gweler XVFB).
Ychydig eiriau am yr offer angenrheidiol
Tcpserver — Cyfleustodau Ffynhonnell Agored sydd ar gael yn y mwyafrif o ystorfeydd pecynnau Linux. Mae'n caniatáu ichi agor porthladd lleol ac ailgyfeirio traffig a dderbynnir trwy stdin/stdout o unrhyw orchymyn penodedig iddo:
Mae'r gorchymyn hwn yn caniatáu i'r pod gael mynediad i borthladd 8000 ar y peiriant lleol.
Sgript Bash
Ysgrifennais sgript arbennig ar gyfer Bash sy'n eich galluogi i reoli clwstwr cynhyrchu Kubernetes HaenCIgan ddefnyddio’r dull a ddisgrifir uchod:
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"
}
Os ydych chi'n ychwanegu'r swyddogaeth hon i ~/.bashrc, gallwch chi agor twnnel yn hawdd mewn pod gyda'r gorchymyn kubetunnel web-pod 8080 a gwneud curl localhost:6666.
Ar gyfer y twnnel yn Docker gallwch ddisodli'r brif linell gyda:
Gallwch ailgyfeirio traffig CDU gan ddefnyddio'r gorchmynion netcat -l -u -c yn hytrach na tcpserver и netcat -u yn hytrach na netcat yn y drefn honno.