نوٽ. ترجمو: LayerCI جي تخليق ڪندڙ کان هي عملي نوٽ ڪبرنيٽس (۽ وڌيڪ) لاءِ نام نهاد تجويزون ۽ ترڪيبون جو هڪ بهترين مثال آهي. هتي تجويز ڪيل حل صرف چند مان هڪ آهي ۽، شايد، سڀ کان وڌيڪ واضح نه آهي (ڪجهه ڪيسن لاء، "آبائي" هڪ K8 لاء اڳ ۾ ئي ذڪر ڪيل تبصرن ۾ مناسب ٿي سگهي ٿو. ). بهرحال، اهو توهان کي اجازت ڏئي ٿو ته گهٽ ۾ گهٽ مسئلي کي ڏسڻ جي نقطي نظر کان ڪلاسيڪل افاديت کي استعمال ڪرڻ ۽ انهن کي وڌيڪ گڏ ڪرڻ - ساڳئي وقت سادو، لچڪدار ۽ طاقتور (ڏسو "ٻيا خيال" آخر ۾ حيرت لاء).

هڪ عام صورتحال جو تصور ڪريو: توهان چاهيو ٿا ته توهان جي مقامي مشين تي هڪ بندرگاهه جادوئي طور تي ٽرئفڪ کي پوڊ / ڪنٽينر ڏانهن منتقل ڪرڻ لاءِ (يا ان جي برعڪس).
ممڪن استعمال ڪيس
- چيڪ ڪريو ته ڇا HTTP آخر پوائنٽ واپس اچي ٿو
/healthzپيداوار جي ڪلستر ۾ پوڊ. - مقامي مشين تي هڪ TCP ڊيبگر کي پوڊ سان ڳنڍيو.
- مقامي ڊيٽابيس جي اوزارن مان پيداوار جي ڊيٽابيس تائين رسائي حاصل ڪريو بغير تصديق جي تڪليف ڪرڻ جي (عام طور تي لوڪل هوسٽ وٽ روٽ حق آهن).
- ھڪڙي وقت واري لڏپلاڻ واري اسڪرپٽ کي ھڪڙي اسٽيجنگ ڪلستر ۾ ڊيٽا لاءِ بغير ان لاءِ ڪنٽينر ٺاھيو.
- وي اين سي سيشن کي ورچوئل ڊيسڪ ٽاپ تي هلندڙ پوڊ سان ڳنڍيو (ڏسو XVFB).
ضروري اوزار جي باري ۾ چند لفظ
— هڪ اوپن سورس يوٽيلٽي جيڪا گھڻن پيڪيج ريپوزٽريز ۾ موجود آهي. Linuxاهو توهان کي مقامي پورٽ کولڻ ۽ 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:~$()
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 سان ڪنيڪشن: ميزبان تي ٻڌو ۽ پوڊ سان ڳنڍيو
جيڪڏهن اسان مٿي ڏنل اوزار کي ڪبيڪٽل سان گڏ ڪريون ٿا، اسان کي هن طرح هڪ حڪم ملي ٿو:
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 تائين رسائي جي اجازت ڏئي ٿو.
باش اسڪرپٽ
مون بش لاءِ هڪ خاص اسڪرپٽ لکيو آهي جيڪا توهان کي ڪبرنيٽس جي پيداوار واري ڪلستر کي منظم ڪرڻ جي اجازت ڏئي ٿي مٿي بيان ڪيل طريقي کي استعمال ڪندي:
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.
- اندر سرنگ لاء Docker توھان تبديل ڪري سگھوٿا مکيه لائن سان:
tcpserver 127.0.0.1 6666 docker exec -i "$CONTAINER" nc 127.0.0.1 "$DESTPORT" - اندر سرنگ لاء ڪ 3 - ان کي تبديل ڪريو:
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
