เจŸเฉ€เจธเฉ€เจชเฉ€เจธเจฐเจตเจฐ เจ…เจคเฉ‡ เจจเฉˆเฉฑเจŸเจ•เฉˆเจŸ เจจเจพเจฒ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจชเฉŒเจก เจœเจพเจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเฉเจฐเฉฐเจ— เจ•เจฟเจตเฉ‡เจ‚ เจ–เฉ‹เจฒเฉเจนเจฃเฉ€ เจนเฉˆ

เจจเฉ‹เจŸ เจ•เจฐเฉ‹เฅค เจ…เจจเฉเจตเจพเจฆ: LayerCI เจฆเฉ‡ เจธเจฟเจฐเจœเจฃเจนเจพเจฐ เจคเฉ‹เจ‚ เจ‡เจน เจตเจฟเจนเจพเจฐเจ• เจจเฉ‹เจŸ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ (เจ…เจคเฉ‡ เจนเฉ‹เจฐ) เจฒเจˆ เจ…เจ–เฉŒเจคเฉ€ เจธเฉเจเจพเจ… เจ…เจคเฉ‡ เจœเฉเจ—เจคเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเจผเจพเจจเจฆเจพเจฐ เจ‰เจฆเจพเจนเจฐเจฃ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‡ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจนเฉฑเจฒ เจ•เฉเจ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆ เจ…เจคเฉ‡, เจธเจผเจพเจ‡เจฆ, เจธเจญ เจคเฉ‹เจ‚ เจธเจชเฉฑเจธเจผเจŸ เจจเจนเฉ€เจ‚ เจนเฉˆ (เจ•เฉเจ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจฒเจˆ, เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจœเจผเจฟเจ•เจฐ เจ•เฉ€เจคเฉ‡ K8 เจฒเจˆ "เจฎเฉ‚เจฒ" เจขเฉเจ•เจตเจพเจ‚ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค kubectl port-forward). เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ•เจฒเจพเจธเฉ€เจ•เจฒ เจ‰เจชเจฏเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจœเฉ‹เฉœเจจ เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ - เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจธเจงเจพเจฐเจจ, เจฒเจšเจ•เจฆเจพเจฐ เจ…เจคเฉ‡ เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ (เจชเฉเจฐเฉ‡เจฐเจจเจพ เจฒเจˆ เจ…เฉฐเจค เจตเจฟเฉฑเจš "เจนเฉ‹เจฐ เจตเจฟเจšเจพเจฐ" เจฆเฉ‡เจ–เฉ‹)เฅค

เจŸเฉ€เจธเฉ€เจชเฉ€เจธเจฐเจตเจฐ เจ…เจคเฉ‡ เจจเฉˆเฉฑเจŸเจ•เฉˆเจŸ เจจเจพเจฒ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจชเฉŒเจก เจœเจพเจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเฉเจฐเฉฐเจ— เจ•เจฟเจตเฉ‡เจ‚ เจ–เฉ‹เจฒเฉเจนเจฃเฉ€ เจนเฉˆ

เจ‡เฉฑเจ• เจ†เจฎ เจธเจฅเจฟเจคเฉ€ เจฆเฉ€ เจ•เจฒเจชเจจเจพ เจ•เจฐเฉ‹: เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ€ เจธเจฅเจพเจจเจ• เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉ‹เจฐเจŸ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ เจœเจพเจฆเฉ‚เจˆ เจคเฉŒเจฐ 'เจคเฉ‡ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉŒเจก/เจ•เฉฐเจŸเฉ‡เจจเจฐ (เจœเจพเจ‚ เจ‡เจธเจฆเฉ‡ เจ‰เจฒเจŸ) เจตเฉฑเจฒ เจญเฉ‡เจœเฉ‡เฅค

เจธเฉฐเจญเจพเจตเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ‡ เจ•เฉ‡เจธ

  1. เจœเจพเจ‚เจš เจ•เจฐเฉ‹ เจ•เจฟ HTTP เจเจ‚เจกเจชเฉเจ†เจ‡เฉฐเจŸ เจ•เฉ€ เจฐเจฟเจŸเจฐเจจ เจ•เจฐเจฆเจพ เจนเฉˆ /healthz เจ‰เจคเจชเจพเจฆเจจ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจชเฉŒเจก.
  2. เจ‡เฉฑเจ• TCP เจกเฉ€เจฌเจ—เจฐ เจจเฉ‚เฉฐ เจธเจฅเจพเจจเจ• เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจชเฉŒเจก เจจเจพเจฒ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเฉ‹เฅค
  3. เจชเฉเจฐเจฎเจพเจฃเจฟเจ•เจคเจพ (เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจฒเฉ‹เจ•เจฒเจนเฉ‹เจธเจŸ เจฆเฉ‡ เจฐเฉ‚เจŸ เจ…เจงเจฟเจ•เจพเจฐ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ) เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจธเจฅเจพเจจเจ• เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจŸเฉ‚เจฒเจธ เจคเฉ‹เจ‚ เจ‰เจคเจชเจพเจฆเจจ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจชเฉเจฐเจพเจชเจค เจ•เจฐเฉ‹เฅค
  4. เจธเจŸเฉ‡เจœเจฟเฉฐเจ— เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจฒเจˆ เจ‡เฉฑเจ•-เจตเจพเจฐ เจฎเจพเจˆเจ—เฉเจฐเฉ‡เจธเจผเจจ เจธเจ•เฉเจฐเจฟเจชเจŸ เจšเจฒเจพเจ“, เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฌเจฃเจพเจ เจฌเจฟเจจเจพเจ‚เฅค
  5. เจ‡เฉฑเจ• VNC เจธเฉˆเจธเจผเจจ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ เจกเฉˆเจธเจ•เจŸเจพเจช เจšเจฒเจพเจ‰เจฃ เจตเจพเจฒเฉ‡ เจชเฉŒเจก เจจเจพเจฒ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเฉ‹ (XVFB เจฆเฉ‡เจ–เฉ‹)เฅค

เจœเจผเจฐเฉ‚เจฐเฉ€ เจธเฉฐเจฆ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจธเจผเจฌเจฆ

Tcpserver โ€” เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจฒเฉ€เจจเจ•เจธ เจชเฉˆเจ•เฉ‡เจœ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจธเจนเฉ‚เจฒเจค เจ‰เจชเจฒเจฌเจง เจนเฉˆเฅค เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจฅเจพเจจเจ• เจชเฉ‹เจฐเจŸ เจ–เฉ‹เจฒเฉเจนเจฃ เจ…เจคเฉ‡ stdin/stdout เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจพเจชเจค เจŸเฉเจฐเฉˆเจซเจฟเจ• เจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฎเจพเจ‚เจก เจคเฉ‹เจ‚ เจ‡เจธ 'เจคเฉ‡ เจฐเฉ€เจกเจพเจ‡เจฐเฉˆเจ•เจŸ เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ:

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:~$

(asciinema.org)

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:~$

(asciinema.org)

เจ‰เจชเจฐเฉ‹เจ•เจค เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš, 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

(asciinema.org)

เจŸเฉ€เจธเฉ€เจชเฉ€เจธเจฐเจตเจฐ เจ…เจคเฉ‡ เจจเฉˆเฉฑเจŸเจ•เฉˆเจŸ เจจเจพเจฒ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจชเฉŒเจก เจœเจพเจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเฉเจฐเฉฐเจ— เจ•เจฟเจตเฉ‡เจ‚ เจ–เฉ‹เจฒเฉเจนเจฃเฉ€ เจนเฉˆ
เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจ‡เฉฐเจŸเจฐเฉˆเจ•เจธเจผเจจ เจกเจพเจ‡เจ—เจฐเจพเจฎ

เจ‰เจฒเจŸ เจฆเจฟเจธเจผเจพ เจตเจฟเฉฑเจš: เจชเฉŒเจก เจตเจฟเฉฑเจš เจธเฉเจฃเฉ‹ เจ…เจคเฉ‡ เจนเฉ‹เจธเจŸ เจจเจพเจฒ เจœเฉเฉœเฉ‹

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.

เจธเฉฐเจญเจพเจตเจจเจพเจตเจพเจ‚ เจฌเฉ‡เจ…เฉฐเจค เจนเจจ!

เจ…เจจเฉเจตเจพเจฆเจ• เจคเฉ‹เจ‚ เจชเฉ€.เจเจธ

เจธเจพเจกเฉ‡ เจฌเจฒเฉŒเจ— 'เจคเฉ‡ เจตเฉ€ เจชเฉœเฉเจนเฉ‹:

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹