เจจเฉเจ เจเจฐเฉเฅค เจ
เจจเฉเจตเจพเจฆ: LayerCI เจฆเฉ เจธเจฟเจฐเจเจฃเจนเจพเจฐ เจคเฉเจ เจเจน เจตเจฟเจนเจพเจฐเจ เจจเฉเจ เจเฉเจฌเจฐเจจเฉเจเจธ (เจ
เจคเฉ เจนเฉเจฐ) เจฒเจ เจ
เจเฉเจคเฉ เจธเฉเจเจพเจ
เจ
เจคเฉ เจเฉเจเจคเจพเจ เจฆเจพ เจเฉฑเจ เจธเจผเจพเจจเจฆเจพเจฐ เจเจฆเจพเจนเจฐเจฃ เจนเฉเฅค เจเฉฑเจฅเฉ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจนเฉฑเจฒ เจเฉเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจนเฉ เจ
เจคเฉ, เจธเจผเจพเจเจฆ, เจธเจญ เจคเฉเจ เจธเจชเฉฑเจธเจผเจ เจจเจนเฉเจ เจนเฉ (เจเฉเจ เจฎเจพเจฎเจฒเจฟเจเจ เจฒเจ, เจเจฟเฉฑเจชเจฃเฉเจเจ เจตเจฟเฉฑเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเจผเจฟเจเจฐ เจเฉเจคเฉ K8 เจฒเจ "เจฎเฉเจฒ" เจขเฉเจเจตเจพเจ เจนเฉ เจธเจเจฆเจพ เจนเฉเฅค kubectl port-forward
เจเฉฑเจ เจเจฎ เจธเจฅเจฟเจคเฉ เจฆเฉ เจเจฒเจชเจจเจพ เจเจฐเฉ: เจคเฉเจธเฉเจ เจเจชเจฃเฉ เจธเจฅเจพเจจเจ เจฎเจธเจผเฉเจจ 'เจคเฉ เจเฉฑเจ เจชเฉเจฐเจ เจเจพเจนเฉเฉฐเจฆเฉ เจนเฉ เจเฉ เจเจพเจฆเฉเจ เจคเฉเจฐ 'เจคเฉ เจเฉเจฐเฉเจซเจฟเจ เจจเฉเฉฐ เจเฉฑเจ เจชเฉเจก/เจเฉฐเจเฉเจจเจฐ (เจเจพเจ เจเจธเจฆเฉ เจเจฒเจ) เจตเฉฑเจฒ เจญเฉเจเฉเฅค
เจธเฉฐเจญเจพเจตเฉ เจตเจฐเจคเฉเจ เจฆเฉ เจเฉเจธ
- เจเจพเจเจ เจเจฐเฉ เจเจฟ HTTP เจเจเจกเจชเฉเจเจเฉฐเจ เจเฉ เจฐเจฟเจเจฐเจจ เจเจฐเจฆเจพ เจนเฉ
/healthz
เจเจคเจชเจพเจฆเจจ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจชเฉเจก. - เจเฉฑเจ TCP เจกเฉเจฌเจเจฐ เจจเฉเฉฐ เจธเจฅเจพเจจเจ เจฎเจธเจผเฉเจจ 'เจคเฉ เจชเฉเจก เจจเจพเจฒ เจเจจเฉเจเจ เจเจฐเฉเฅค
- เจชเฉเจฐเจฎเจพเจฃเจฟเจเจคเจพ (เจเจฎ เจคเฉเจฐ 'เจคเฉ เจฒเฉเจเจฒเจนเฉเจธเจ เจฆเฉ เจฐเฉเจ เจ เจงเจฟเจเจพเจฐ เจนเฉเฉฐเจฆเฉ เจนเจจ) เจคเฉเจ เจฌเจฟเจจเจพเจ เจธเจฅเจพเจจเจ เจกเฉเจเจพเจฌเฉเจธ เจเฉเจฒเจธ เจคเฉเจ เจเจคเจชเจพเจฆเจจ เจกเฉเจเจพเจฌเฉเจธ เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจชเฉเจฐเจพเจชเจค เจเจฐเฉเฅค
- เจธเจเฉเจเจฟเฉฐเจ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจกเฉเจเจพ เจฒเจ เจเฉฑเจ-เจตเจพเจฐ เจฎเจพเจเจเฉเจฐเฉเจธเจผเจจ เจธเจเฉเจฐเจฟเจชเจ เจเจฒเจพเจ, เจเจธเจฆเฉ เจฒเจ เจเฉฑเจ เจเฉฐเจเฉเจจเจฐ เจฌเจฃเจพเจ เจฌเจฟเจจเจพเจเฅค
- เจเฉฑเจ VNC เจธเฉเจธเจผเจจ เจจเฉเฉฐ เจเฉฑเจ เจตเจฐเจเฉเจ เจฒ เจกเฉเจธเจเจเจพเจช เจเจฒเจพเจเจฃ เจตเจพเจฒเฉ เจชเฉเจก เจจเจพเจฒ เจเจจเฉเจเจ เจเจฐเฉ (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 เจจเจพเจฒ เจเจจเฉเจเจธเจผเจจ: เจนเฉเจธเจ 'เจคเฉ เจธเฉเจฃเฉ เจ เจคเฉ เจชเฉเจก เจจเจพเจฒ เจเฉเฉเฉ
เจเฉเจเจฐ เจ เจธเฉเจ เจเจชเจฐเฉเจเจค เจเฉเจฒเจธ เจจเฉเฉฐ kubectl เจจเจพเจฒ เจเฉเฉเจฆเฉ เจนเจพเจ, เจคเจพเจ เจธเจพเจจเฉเฉฐ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเฉ เจเจฎเจพเจเจก เจฎเจฟเจฒเจฆเฉ เจนเฉ:
tcpserver 127.0.0.1 8000 kubectl exec -i web-pod nc 127.0.0.1 8080
เจธเจฎเจพเจจเจคเจพ เจฆเฉเจเจฐเจพ, เจชเฉเจก เจฆเฉ เจ
เฉฐเจฆเจฐ เจชเฉเจฐเจ 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
เจเจชเจฏเฉเจเจคเจพ เจเฉฐเจเจฐเฉเจเจธเจผเจจ เจกเจพเจเจเจฐเจพเจฎ
เจเจฒเจ เจฆเจฟเจธเจผเจพ เจตเจฟเฉฑเจ: เจชเฉเจก เจตเจฟเฉฑเจ เจธเฉเจฃเฉ เจ เจคเฉ เจนเฉเจธเจ เจจเจพเจฒ เจเฉเฉเฉ
nc 127.0.0.1 8000 | kubectl exec -i web-pod tcpserver 127.0.0.1 8080 cat
เจเจน เจเจฎเจพเจเจก เจชเฉเจก เจจเฉเฉฐ เจธเจฅเจพเจจเจ เจฎเจธเจผเฉเจจ 'เจคเฉ เจชเฉเจฐเจ 8000 เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจเจฐเจจ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเฉ เจนเฉเฅค
เจฌเฉเจธเจผ เจธเจเฉเจฐเจฟเจชเจ
เจฎเฉเจ Bash เจฒเจ เจเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผ เจธเจเฉเจฐเจฟเจชเจ เจฒเจฟเจเฉ เจนเฉ เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ Kubernetes เจเจคเจชเจพเจฆเจจ เจเจฒเฉฑเจธเจเจฐ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเฉ เจนเฉ
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"
}
เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเจธ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจเจธ เจตเจฟเฉฑเจ เจเฉเฉเจฆเฉ เจนเฉ ~/.bashrc
, เจคเฉเจธเฉเจ เจเจฎเจพเจเจก เจจเจพเจฒ เจชเฉเจก เจตเจฟเฉฑเจ เจเฉฑเจ เจธเฉเจฐเฉฐเจ เจจเฉเฉฐ เจเจธเจพเจจเฉ เจจเจพเจฒ เจเฉเจฒเฉเจน เจธเจเจฆเฉ เจนเฉ kubetunnel web-pod 8080
เจ
เจคเฉ เจเจฐเฉ curl localhost:6666
.
- เจตเจฟเจ เจธเฉเจฐเฉฐเจ เจฒเจ เจกเฉเจเจฐ เจคเฉเจธเฉเจ เจฎเฉเฉฑเจ เจฒเจพเจเจจ เจจเฉเฉฐ เจเจธ เจจเจพเจฒ เจฌเจฆเจฒ เจธเจเจฆเฉ เจนเฉ:
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
เจเฉเจฐเจฎเจตเจพเจฐ. - เจชเจพเจเจช เจฆเจฐเจธเจผเจ เจฆเฉเจเจฐเจพ 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
เจ เจคเฉ เจฆเฉ เจตเฉฑเจเจฐเฉเจเจ เจเจฎเจพเจเจกเจพเจ เจเจฒเจพเจkubectl
.
เจธเฉฐเจญเจพเจตเจจเจพเจตเจพเจ เจฌเฉเจ เฉฐเจค เจนเจจ!
เจ เจจเฉเจตเจพเจฆเจ เจคเฉเจ เจชเฉ.เจเจธ
เจธเจพเจกเฉ เจฌเจฒเฉเจ 'เจคเฉ เจตเฉ เจชเฉเฉเจนเฉ:
- ยซ
เจเฉเจฌเจฐเจจเฉเจเจธ 'เจคเฉ เจเฉฑเจฒ เจฐเจนเฉเจเจ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจฆเฉ เจกเจฟเจตเฉเจฒเจชเจฐเจพเจ เจฒเจ เจเฉเจฒ "; - ยซ
เจเฉเจฌเจฐเจจเฉเจเจธ เจเจฟเจชเจธ เจ เจคเฉ เจเฉเจฐเจฟเจเจธ: เจธเจฅเจพเจจเจ เจตเจฟเจเจพเจธ เจ เจคเฉ เจเฉเจฒเฉเจชเฉเจฐเฉเจธเฉเจเจธ เจฌเจพเจฐเฉ "; - ยซ
เจเฉเจฌเจฐเจจเฉเจเจธ เจชเฉเจกเจธ เจตเจฟเฉฑเจ เจกเฉเจฌเฉฑเจ เจเจฐเจจ เจฒเจ kubectl-debug เจชเจฒเฉฑเจเจเจจ "; - ยซ
เจเฉเจฌเจฐเจจเฉเจเจธ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจฆเฉ เจธเจฎเฉเจ เจเจชเจฏเฉเจเฉ เจเจชเจฏเฉเจเจคเจพเจตเจพเจ ".
เจธเจฐเฉเจค: www.habr.com