Tcpserver рдФрд░ netcat рдХреЗ рд╕рд╛рде Kubernetes рдкреЙрдб рдпрд╛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реБрд░рдВрдЧ рдХреИрд╕реЗ рдЦреЛрд▓реЗрдВ

рд▓рдЧрднрдЧред рдЯреНрд░рд╛рдВрд╕ред : рд▓реЗрдпрд░рд╕реА рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛ рдпрд╣ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдиреЛрдЯ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ (рдФрд░ рди рдХреЗрд╡рд▓) рдХреЗ рд▓рд┐рдП рддрдерд╛рдХрдерд┐рдд рдпреБрдХреНрддрд┐рдпреЛрдВ рдФрд░ рдпреБрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдорд╣рд╛рди рдЪрд┐рддреНрд░рдг рд╣реИред рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рдХреБрдЫ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдФрд░, рд╢рд╛рдпрдж, рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ (рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд kubectl port-forward рд▓рд┐рдП " kubectl port-forward " рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рд╢рд╛рд╕реНрддреНрд░реАрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рдЖрдЧреЗ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рджреЛрдиреЛрдВ рд╕рд░рд▓, рд▓рдЪреАрд▓реЗ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА (рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд▓рд┐рдП рдЕрдВрдд рдореЗрдВ "рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░" рджреЗрдЦреЗрдВ)ред



рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ: рдЖрдк рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдкреЛрд░реНрдЯ рдХреЛ рдкреЙрдб / рдХрдВрдЯреЗрдирд░ (рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд) рдореЗрдВ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдЯреНрд░реИрдлрд╝рд┐рдХ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ


  1. рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ HTTP рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ /healthz рдЙрддреНрдкрд╛рджрди рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ /healthz рдЧрдпрд╛ рд╣реИред
  2. рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдлрд▓реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреАрд╕реАрдкреА рдбрд┐рдмрдЧрд░ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред
  3. рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдкрд░реЗрд╢рд╛рди рдХрд┐рдП рдмрд┐рдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдЙрддреНрдкрд╛рджрди рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдЖрдорддреМрд░ рдкрд░ рд╕реНрдерд╛рдиреАрдпрд╣реЛрд╕реНрдЯ рдХреЗ рдкрд╛рд╕ рд░реВрдЯ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╣реИрдВ)ред
  4. рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдордЪрд╛рди рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдБред
  5. рд╡рд░реНрдЪреБрдЕрд▓ рдбреЗрд╕реНрдХрдЯреЙрдк рдЪрд▓рд╛ рд░рд╣реЗ рдкреЙрдб рдореЗрдВ VNC рд╕рддреНрд░ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ (XVFB рджреЗрдЦреЗрдВ)ред

рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж


Tcpserver рд╕рдмрд╕реЗ рд▓рд┐рдирдХреНрд╕ рдкреИрдХреЗрдЬ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдпреВрдЯрд┐рд▓рд┐рдЯреА рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдкреЛрд░реНрдЯ рдЦреЛрд▓рдиреЗ рдФрд░ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рд╕реЗ рд╕реНрдЯрдб / рд╕реНрдЯрдбрдЖрдЙрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

 colin@colin-work:~$ tcpserver 127.0.0.1 8080 echo -e 'HTTP/1.0 200 OK\r\nContent-Length: 19\r\n\r\n<body>hello!</body>'& [1] 17377 colin@colin-work:~$ curl localhost:8080 <body>hello!</body>colin@colin-work:~$ 

( asciinema.org )

рдиреЗрдЯрдХрдЯ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдЦреБрд▓реЗ рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рд╕реНрдЯрдб / рд╕реНрдЯрдбрдЖрдЙрдЯ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

 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 рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред

рдХреБрдмреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХ: рдореЗрдЬрдмрд╛рди рдкрд░ рд╕реБрдиреЗрдВ рдФрд░ рдлрд▓реА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ


рдпрджрд┐ рд╣рдо рдЙрдкрд░реЛрдХреНрдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдХреБрдмреЗрдЯреЗрд▓ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдХрдорд╛рдВрдб рдорд┐рд▓рддреА рд╣реИ:

 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 рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдмреИрд╢ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ


рдореИрдВрдиреЗ рдмреИрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд▓реЗрдпрд░рд╕реАрдЖрдИ рдЙрддреНрдкрд╛рджрди рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

 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 рдореЗрдВ рд╕реБрд░рдВрдЧ kubetunnel web-pod 8080 рдХрдорд╛рдВрдб 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 тАж 
  • рдЖрджрд┐

рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░


  • рдЖрдк рдпреВрдбреАрдкреА рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ tcpserver netcat -l -u -c tcpserver netcat -l -u -c рдмрдЬрд╛рдп рдХреНрд░рдорд╢рдГ tcpserver рдФрд░ tcpserver рдмрдЬрд╛рдп tcpserver рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдкрд╛рдЗрдк рджрд░реНрд╢рдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ I / O рджреЗрдЦреЗрдВ:

    nc 127.0.0.1 8000 | pv --progress | kubectl exec -i web-pod tcpserver 127.0.0.1 8080 cat
  • рдЖрдк gzip рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛрдиреЛрдВ рд╕рд┐рд░реЛрдВ рдкрд░ рдпрд╛рддрд╛рдпрд╛рдд рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдФрд░ рд╡рд┐рдШрдЯрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдЗрд╕реА kubeconfig рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде SSH рдХреЛ рджреВрд╕рд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:

    tcpserver ssh workcomputer "kubectl exec -i my-pod nc 127.0.0.1 80"
  • рдЖрдк mkfifo рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рджреЛ рдкреЙрдбреНрд╕ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ kubectl ред

рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдЕрдирдВрдд рд╣реИрдВ!

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рдкреА.рдПрд╕.


рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рднреА рдкрдврд╝реЗрдВ:

Source: https://habr.com/ru/post/hi479910/


All Articles