ááŸááºáá»ááºá áá¬áá¬ááŒááº: LayerCI áááºáá®ážáá°áá¶á០áááºááœá±á·áá»áá±á¬ááŸááºáá»ááºááẠKubernetes (ááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážá¡ááœááº) áá¯áá±á«áºáá±á¬ á¡ááŒá¶áá¬ááºáá»á¬ážááŸáá·áº ááŸáá·áºááœááºáá»á¬ážá¡ááŒá±á¬ááºáž á¡ááœááºáá±á¬ááºážááœááºáá±á¬ áá¯á¶á¥ááá¬áá
áºáá¯ááŒá
áºáááºá á€áá±áá¬ááœáẠá¡ááá¯ááŒá¯áá¬ážáá±á¬ ááŒá±ááŸááºážáá»ááºááẠá¡áááºážáááºáá²á០áá
áºáá¯áá¬ááŒá
áºááŒá®ážá á¡áááºááŸá¬ážáá¯á¶ážááá¯ááºáá« (á¡áá»áá¯á·ááá
á¹á
áá»á¬ážááœááºá ááŸááºáá»ááºáá»á¬ážááœáẠáá±á¬áºááŒáá¬ážááŒá®ážááŒá
áºáá±á¬ K8s á¡ááœáẠ"áá¬áá" áá
áºáá¯ááẠááá·áºáá»á±á¬áºááá¯ááºáá«áááºá kubectl port-forward
áá¯á¶ááŸááºá¡ááŒá±á¡áá±áá
áºáá¯ááᯠááŒááºáá±á¬ááºááŒáá·áºáá«- áááºááẠáááºáá
ááºááœááºážááŸá ááááºáááºážáá
áºáá¯á¡á¬áž pod/container (ááá¯á·ááá¯áẠá¡ááŒááºá¡ááŸááºá¡á¬ážááŒáá·áº) áááºážááŒá±á¬ááºážáá
áºáá¯ááá¯á· ááŸá±á¬áºáááºá
áœá¬ ááá¯á·áá±á¬ááºáá±ážá
á±ááá¯áá«áááºá
ááŒá áºááá¯ááºáá±á¬ááá á¹á áá»á¬áž
- HTTP á¡áá¯á¶ážááŸááºááẠá¡áááºá¡áá¬ááŒááºáá¬áááºááᯠá
á
áºáá±ážáá«á
/healthz
áá¯ááºáá¯ááºááŸá¯á¡á á¯á¡áá±ážááŸá pod á - TCP á¡ááŸá¬ážááŸá¬ááŒááºáááááá¬ááᯠá ááºááœááºážá ááºáá±á«áºááŸá áá±á«á·ááºááá¯á· áá»áááºáááºáá«á
- á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááŒááºážá¡á¬áž á¡ááŸá±á¬ááºá¡ááŸááºááá±ážáá² áá±ááá±áá¬áá±á·á áºáá°ážááºáá»á¬ážá០áá¯ááºáá¯ááºááá·áºáá±áá¬áá±á·á áºááá¯á· áááºáá±á¬ááºááœáá·áºááá°áá« (áá»á¬ážáá±á¬á¡á¬ážááŒáá·áº localhost ááœáẠroot áá¯ááºááá¯ááºááœáá·áºááŸááááº)á
- áááºážá¡ááœáẠááœááºááááºáá¬áá áºáá¯áááºáá®ážááẠáááá¯á¡ááºáá² á¡ááá·áºáááºááŸááºáá¬ážáá±á¬ á¡á á¯á¡áá±ážáá áºáá¯ááŸá áá±áá¬á¡ááœáẠáá áºááŒáááºáᬠááœáŸá±á·ááŒá±á¬ááºážááŒááºáž script ááᯠáá¯ááºáá±á¬ááºáá«á
- VNC á ááºááŸááºááᯠvirtual desktop áááºáááºáá±ááá·áº pod ááá¯á· áá»áááºáááºáá« (XVFB ááá¯ááŒáá·áºáá«)á
ááá¯á¡ááºáá±á¬áááááá¬áá»á¬ážá¡ááŒá±á¬ááºáž á áá¬ážá¡áááºážáááºááŒá±á¬áá«á
colin@colin-work:~$ tcpserver 127.0.0.1 8080 echo -e 'HTTP/1.0 200 OKrnContent-Length: 19rnrn<body>hello!</body>'&
[1] 17377
colin@colin-work:~$ curl localhost:8080
<body>hello!</body>colin@colin-work:~$
Netcat áááºááá·áºáá»ááºáááºááŒá¯áááºá áááºážááẠááá·áºá¡á¬áž á¡ááœáá·áºá¡áá±á«ááºáá áºáá¯ááá¯á· áá»áááºáááºááá¯ááºááŒá®áž áááºážááŸáááŸááá±á¬ I/O ááᯠ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:~$
á¡áááºáá±á¬áºááŒáá« á¥ááá¬ááœááºá netcat ááẠHTTP á០á
á¬áá»ááºááŸá¬ááᯠáá±á¬ááºážááá¯áááºá á¡áᶠ-C
áááºážááẠá
á¬ááŒá±á¬ááºážáá¡áá¯á¶ážááœáẠCRLF ááᯠáá±á«ááºážááá·áºá
á±áááºá
kubectl ááŸáá·áºáá»áááºáááºááŸá¯- host ááá¯áá¬ážáá±á¬ááºááŒá®áž pod ááá¯á·áá»áááºáááºáá«á
á¡áááºáá±á¬áºááŒáá« tool áá»á¬ážááᯠkubectl ááŸáá·áº áá±á«ááºážá ááºáá«áá á€áá²á·ááá¯á·áá±á¬ command áá áºáá¯ááᯠáá»áœááºá¯ááºááá¯á· áááŸááááº-
tcpserver 127.0.0.1 8000 kubectl exec -i web-pod nc 127.0.0.1 8080
á¥ááá¬á¡á¬ážááŒáá·áºá pod á¡ááœááºážááŸá port 80 ááá¯áááºáá±á¬ááºááẠáá¯á¶áá±á¬ááºáá«áááºá 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
á¡áá¯á¶ážáááºáá¯á¶ á¡ááŒááºá¡ááŸááºáááºááœááºááŸá¯áá¯á¶á
á¶
ááá·áºáá»ááºáááºáŠážáááºáá»ááº- pod ááœááºáá¬ážáá±á¬ááºááŒá®áž host ááŸáá·áºáá»áááºáááºáá«á
nc 127.0.0.1 8000 | kubectl exec -i web-pod tcpserver 127.0.0.1 8080 cat
á€á¡áááá·áºáá±ážáá»ááºááẠpod á¡á¬áž á ááºááœááºážá ááºááœáẠport 8000 ááá¯á·áááºáá±á¬ááºááœáá·áºááŒá¯áááºá
Bash áá²áá»á
Kubernetes áá¯ááºáá¯ááºááŸá¯á¡á
á¯á¡áá±ážááᯠá
á®áá¶ááá·áºááœá²ááá¯ááºá
á±ááá·áº Bash á¡ááœáẠá¡áá°ážáá¬ááºááœáŸááºážáá
áºáá¯ááᯠáá«áá±ážáá²á·áááºá
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"
}
áá® function ááá¯ááá·áºááẠ~/.bashrc
command ááŒáá·áº pod áá
áºáá¯ááœáẠtunnel áá
áºáá¯ááᯠá¡ááœááºááá° ááœáá·áºááá¯ááºáááºá kubetunnel web-pod 8080
áá¯ááºáá«á curl localhost:6666
.
- á¥áááºááá¯ááºáá±á«ááºážá¡ááœáẠDocker áááºáááá¯ááºážááᯠááẠá¡á
á¬ážááá¯ážááá¯ááºáááº-
tcpserver 127.0.0.1 6666 docker exec -i "$CONTAINER" nc 127.0.0.1 "$DESTPORT"
- á¥áááºááá¯ááºáá±á«ááºážá¡ááœáẠK3s - áááºážááá¯:
tcpserver 127.0.0.1 6666 k3s kubectl exec âŠ
- á áááºááá¯á·ááá¯
áá±á¬ááºáááºá¡ááœá±ážá¡áá±á«áºáá»á¬áž
- ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á UDP á¡ááœá¬ážá¡áá¬ááᯠáááºááŒááºááœáŸááºážááá¯ááºáááºá
netcat -l -u -c
á¡á á¬ážtcpserver
Оnetcat -u
á¡á á¬ážnetcat
á¡áá®ážáá®ážá - pipe viewer ááŸáááá·áº I/O ááá¯ááŒáá·áºáá«-
nc 127.0.0.1 8000 | pv --progress | kubectl exec -i web-pod tcpserver 127.0.0.1 8080 cat
- á¡á
áœááºážááŸá
áºáááºá
áá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯á á¡ááœá¬ážá¡áá¬ááᯠáá»á¯á¶á·ááŒá®áž áá»á¯á¶á·ááá¯ááºáááºá
gzip
. - SSH ááŸáá
áºááá·áº áááºááá¯ááºáá¬ááá¯ááºááŒáá·áº á¡ááŒá¬ážááœááºáá»á°áá¬ááá¯á· áá»áááºáááºáá«á
kubeconfig
:tcpserver ssh workcomputer "kubectl exec -i my-pod nc 127.0.0.1 80"
- ááœá²ááŒá¬ážáá±á¬á¡á
á¯á¡áá±ážáá»á¬ážááœáẠá¡ááœááºááŸá
áºáá¯ááᯠá¡áá¯á¶ážááŒá¯á áááºáá»áááºáááºááá¯ááºáááºá
mkfifo
áá®ážááŒá¬áž command ááŸá áºáá¯ááᯠrun áá«ákubectl
.
ÐПзЌПжМПÑÑОбезгÑаМОÑÐœÑ!
PS áá¬áá¬ááŒááºááŸ
áá»áœááºá¯ááºááá¯á·áááá±á¬á·ááºááœááºáááºážáááºáá«
- «
Kubernetes áá±á«áºááœáẠáá¯ááºáá±á¬ááºáá±áá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬áž áááºáá®ážáá°áá»á¬áž á¡ááœáẠáááááá¬áá»á¬áž "; - «
Kubernetes á¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážááŸáá·áº ááŸáá·áºááœááºáá»á¬áž- áá±áááœá¶á·ááŒáá¯ážáá±ážááŸáá·áº Telepresence á¡ááŒá±á¬ááºáž "; - «
Kubernetes pods áá»á¬ážááœáẠá¡ááŸá¬ážááŸá¬ááŒááºááŒááºážá¡ááœáẠkubectl-debug ááááºá¡áẠ"; - «
Kubernetes ááŸáá·áº á¡áá¯ááºáá¯ááºáá±á¬á¡áá« á¡áá¯á¶ážáááºáá±á¬ á¡áá¯á¶ážá¡áá±á¬ááºáá»á¬áž "á
source: www.habr.com