Exposing Services in Kubernetes
Kuna njia tofauti za kufunua huduma katika Kubernetes ili vifaa vya ndani na vifaa vya nje viweze kuzifikia. Usanidi huu wa Kubernetes ni muhimu sana kwani msimamizi anaweza kumpa ufikiaji wa wahalifu kwa huduma ambazo hawapaswi kuweza kuzifikia.
Uorodheshaji wa Kiotomatiki
Kabla ya kuanza kutambua njia ambazo K8s inatoa kufunua huduma hadharani, tambua kwamba ikiwa unaweza kuorodhesha majina ya nafasi, huduma na ingresses, unaweza kupata kila kitu kilichofunuliwa hadharani kwa:
ClusterIP
ClusterIP huduma ni chaguo-msingi wa Kubernetes huduma. Inakupa huduma ndani ya kikundi chako ambayo programu nyingine ndani ya kikundi chako zinaweza kufikia. Hakuna upatikanaji wa nje.
Hata hivyo, hii inaweza kufikiwa kwa kutumia Kubernetes Proxy:
Sasa, unaweza kutembea kupitia API ya Kubernetes ili kupata huduma kwa kutumia mpangilio huu:
http://localhost:8080/api/v1/proxy/namespaces/<NAMESPACE>/services/<SERVICE-NAME>:<PORT-NAME>/
Kwa mfano, unaweza kutumia URL ifuatayo:
http://localhost:8080/api/v1/proxy/namespaces/default/services/my-internal-service:http/
kupata huduma hii:
Mbinu hii inahitaji uendeshe kubectl
kama mtumiaji aliyeidhinishwa.
Pata orodha ya ClusterIPs:
NodePort
Wakati NodePort unapotumiwa, bandari maalum inapatikana kwenye Nodes zote (zinawakilisha Mashine za Virtual). Trafiki inayoelekezwa kwenye bandari hii maalum kisha inaelekezwa kwa utaratibu kwenye huduma. Kwa kawaida, njia hii haipendekezwi kutokana na mapungufu yake.
Pata orodha ya NodePorts:
Mfano wa maelezo ya NodePort:
If you don't specify the nodePort in the yaml (it's the port that will be opened) a port in the range 30000–32767 will be used.
LoadBalancer
Inaonyesha Huduma kwa njia ya nje kwa kutumia balansa ya mzigo ya mtoa huduma wa wingu. Kwenye GKE, hii itaanzisha Balansa ya Mzigo wa Mtandao ambayo itakupa anwani moja ya IP ambayo itaendeleza trafiki yote kwenye huduma yako. Kwenye AWS itaanzisha Balansa ya Mzigo.
Unalazimika kulipa kwa kila Balansa ya Mzigo iliyofunguliwa, ambayo inaweza kuwa ghali.
Pata orodha ya Balansa zote za Mzigo:
Anwani za IP za Kigeni
Anwani za IP za kigeni hufunuliwa na huduma za aina ya Load Balancers na kwa ujumla hutumiwa wakati Load Balancer wa Cloud wa kigeni unapotumiwa.
Ili kuzipata, angalia load balancers zenye thamani katika uga wa EXTERNAL-IP
.
Trafiki inayoingia kwenye kikundi na anwani ya IP ya kigeni (kama anwani ya marudio ya IP), kwenye bandari ya Huduma, itaelekezwa kwa moja ya vituo vya Huduma. externalIPs
hazisimamiwi na Kubernetes na ni jukumu la msimamizi wa kikundi.
Katika maelezo ya Huduma, externalIPs
inaweza kutajwa pamoja na aina yoyote ya ServiceTypes
. Katika mfano hapa chini, "huduma-yangu
" inaweza kupatikana na wateja kwenye "80.11.12.10:80
" (externalIP:port
)
JinaLaNje
Kutoka kwa nyaraka: Huduma za aina ya ExternalName zinamapisha Huduma kwa jina la DNS, sio kwa kawaida ya kuchagua kama my-service
au cassandra
. Unaweza kutaja Huduma hizi kwa kutumia parameter ya spec.externalName
.
Ufafanuzi huu wa Huduma, kwa mfano, unamapisha Huduma ya my-service
katika eneo la prod
kwenda my.database.example.com
:
Kufunua Huduma katika Kubernetes
Wakati unapotafuta mwenyeji my-service.prod.svc.cluster.local
, Huduma ya DNS ya kikundi inarudisha rekodi ya CNAME
yenye thamani my.database.example.com
. Kufikia my-service
hufanya kazi kwa njia ile ile kama Huduma zingine lakini tofauti muhimu ni kwamba urekebishaji unatokea katika kiwango cha DNS badala ya kupitia kusambaza au kupeleka.
Orodhesha ExternalNames zote:
Ingress
Tofauti na mifano yote hapo juu, Ingress SI aina ya huduma. Badala yake, inakaa mbele ya huduma nyingi na hufanya kazi kama "router mjanja" au mlango wa kuingia kwenye kikundi chako.
Unaweza kufanya mambo mengi tofauti na Ingress, na kuna aina nyingi za watawala wa Ingress zenye uwezo tofauti.
Watawala wa Ingress wa msingi wa GKE wataanzisha HTTP(S) Load Balancer kwako. Hii itakuruhusu kufanya mizunguko ya njia na subdomain kwa huduma za nyuma. Kwa mfano, unaweza kutuma kila kitu kwenye foo.yourdomain.com kwa huduma ya foo, na kila kitu chini ya njia ya yourdomain.com/bar/ kwa huduma ya bar.
YAML kwa kitu cha Ingress kwenye GKE na L7 HTTP Load Balancer inaweza kuonekana kama hivi:
Panga yote yaingie:
Ingawa katika kesi hii ni bora kupata habari ya kila moja moja kwa moja ili kuisoma vizuri:
Marejeo
Last updated