MĂ€rk. tĂ”lge.: See on LayerCI looja praktiline mĂ€rkused â suurepĂ€rane nĂ€ide nn Kubernetes'i (ja muude) nipi ja trikkide puhul. Siin pakutud lahendus on vaid ĂŒks vĂ€hestest ja vĂ”ib-olla mitte kĂ”ige ilmsem (mĂ”nes arengus vĂ”iks sobida ka varem mainitud 'kodune' K8s jaoks. ). Kuid see vĂ”imaldab vĂ€hemalt vaadata probleemi klassikaliste utiliitide rakendamise ja nende edasise kombineerimise perspektiivist â samal ajal lihtsast, paindlikust ja vĂ”imsast (vt âteised ideedâ allpool inspiratsiooni saamiseks).

Kujutage ette tĂŒĂŒpilist olukorda: soovite, et teie kohalikul arvutil port maagiliselt suunaks liikluse pod/konteinerisse (vĂ”i vastupidi).
VÔimalikud kasutusstsenaariumid
- Kontrollige, mida HTTP lÔpp-punkt tagastab
/healthzpod'i tootmisklastri. - Ăhendage kohalikul masinal TCP-debbuger pod'iga.
- Saada tootmisandmebaasi ligipÀÀs kohalike andmebaasitööriistade kaudu ilma autentimisega vaevlemata (tavaliselt on localhost'il juurÔigused).
- KĂ€itage ĂŒhekordset migratsiooniskeemi andmete jaoks staging-klastri jaoks ilma vajaduseta sellele konteinerit luua.
- Ăhendage VNC seanss podâiga, kus on töötav virtuaalne töölaua (vt XVFB).
MÔned sÔnad vajalike tööriistade kohta
â avatud lĂ€htekoodiga tööriist, mis on saadaval enamikus Linuxi pakettide hoidlatest. See vĂ”imaldab avada kohaliku pordi ja suunata sinna liiklust, mis saadakse stdin/stdout kaudu mis tahes mÀÀratud kĂ€sult:
colin@colin-work:~$ tcpserver 127.0.0.1 8080 echo -e 'HTTP/1.0 200 OKrnContent-Length: 19rnrn<body>Tere!</body>'&
[1] 17377
colin@colin-work:~$ curl localhost:8080
<body>Tere!</body>colin@colin-work:~$()
Netcat teeb vastupidist. See vĂ”imaldab ĂŒhendada avatud pordiga ja edastada sealt saadud sisend/vĂ€ljund stdin/stdout:
colin@colin-work:~$ nc -C httpstat.us 80
GET /200 HTTP/1.0
Host: httpstat.us
HTTP/1.1 200 OK
Cache-Control: private
Server: Microsoft-IIS/10.0
X-AspNetMvc-Version: 5.1
Access-Control-Allow-Origin: *
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Set-Cookie: ARRAffinity=93fdbab9d364704de8ef77182b4d13811344b7dd1ec45d3a9682bbd6fa154ead;Path=/;HttpOnly;Domain=httpstat.us
Date: Fri, 01 Nov 2019 17:53:04 GMT
Connection: close
Content-Length: 0
^C
colin@colin-work:~$()
Ălaltoodud nĂ€ites kĂŒsib netcat lehte HTTP kaudu. Lipp -C sunub sellele jĂ€rjestusele CRLF-i.
Koostöö kubectl-iga: kuulake hostis ja ĂŒhendage podâiga
Kui ĂŒhendame ĂŒlaltoodud tööriistad kubectl-iga, saame jĂ€rgmise kĂ€su:
tcpserver 127.0.0.1 8000 kubectl exec -i web-pod nc 127.0.0.1 8080 Sarnaselt piisab 80. pordi juurde pÀÀsemiseks podâis, kui teha curl "127.0.0.1:80":
colin@colin-work:~$ sanic kubectl exec -it web-54dfb667b6-28n85 bash
root@web-54dfb667b6-28n85:/web# apt-get -y install netcat-openbsd
Reading package lists... Done
Building dependency tree
Reading state information... Done
netcat-openbsd is already the newest version (1.195-2).
0 upgraded, 0 newly installed, 0 to remove and 10 not upgraded.
root@web-54dfb667b6-28n85:/web# exit
colin@colin-work:~$ tcpserver 127.0.0.1 8000 sanic kubectl exec -i web-54dfb667b6-28n85 nc 127.0.0.1 8080&
[1] 3232
colin@colin-work:~$ curl localhost:8000/healthz
{"status":"ok"}colin@colin-work:~$ exit()

Utiliitide koostöö skeem
Tagasi: kuulake pod'is ja ĂŒhendage see hostiga
nc 127.0.0.1 8000 | kubectl exec -i web-pod tcpserver 127.0.0.1 8080 catSee kÀsk vÔimaldab pod'il pÀÀseda ligi port 8000 kohalikule masinale.
Bash'i skript
Olen kirjutanud spetsiaalse Bash skripti, mis vÔimaldab hallata tootmisklastrit Kubernetes , kasutades eespool kirjeldatud meetodit:
kubetunnel() {
POD="$1"
DESTPORT="$2"
if [ -z "$POD" -o -z "$DESTPORT" ]; then
echo "Kasutamine: kubetunnel [pod'i nimi] [sihtport]"
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 "Ăhendu 127.0.0.1:6666, et pÀÀseda ligi $POD:$DESTPORT"
} Kui lisate selle funktsiooni ~/.bashrc, saab hÔlpsasti avada tunneli pod'i kÀsklusega kubetunnel web-pod 8080 ja teha curl localhost:6666.
- Tunneliks Docker saab pÔhirea asendada:
tcpserver 127.0.0.1 6666 docker exec -i "$CONTAINER" nc 127.0.0.1 "$DESTPORT" - tunneli jaoks K3s â vahetage see vĂ€lja:
tcpserver 127.0.0.1 6666 k3s kubectl exec ⊠- Kui kaua aega kulub vÀljastamiseks?
Teised ideed
- UDP-liiklust saab suunata kÀskudega
netcat -l -u -casetataksetcpserverjanetcat -uasetataksenetcatvastavalt. - Vaadake sisend/vÀljund pipe vieweriga:
nc 127.0.0.1 8000 | pv --progress | kubectl exec -i web-pod tcpserver 127.0.0.1 8080 cat - Saate komprimeerida ja dekomprimeerida liiklust mÔlemal pool kasutades
gzip. - Ăhenduge SSH kaudu teise arvuti juurde koos vastava failiga
kubeconfig:tcpserver ssh workcomputer "kubectl exec -i my-pod nc 127.0.0.1 80" - Saate ĂŒhendada kaks pod'i erinevates klastrites kasutades
mkfifoja kÀivitada kaks eraldi kÀskukubectl.
VÔimalused on piiritud!
P.S. tÔlkija mÀrkused
Lugege ka meie blogist:
- «»;
- «»;
- «»;
- «».
Allikas: habr.com
