fampidirana
Ao isika
Π
Miaraka amin'ny Istio 1.1, ny proxy dia mandany manodidina ny 0,6 vCPUs (core virtoaly) isaky ny fangatahana 1000 isan-tsegondra.
Ho an'ny faritra voalohany amin'ny serivisy serivisy (proxies 2 amin'ny lafiny tsirairay amin'ny fifandraisana), dia hanana cores 1200 izahay ho an'ny proxy, amin'ny tahan'ny fangatahana iray tapitrisa isan-tsegondra. Araka ny kajy ny vidin'ny Google, dia mety ho eo amin'ny $40/volana/fototra ho an'ny fanamboarana. n1-standard-64
, izany hoe ity faritra ity fotsiny dia handany 50 arivo dolara mahery isam-bolana ho an'ny fangatahana 1 tapitrisa isan-tsegondra.
Ivan Sim (
Toa hampitombo be ny fangatahana CPU ny values-istio-test.yaml. Raha nanao ny kajikajy tsara aho dia mila cores CPU 24 eo ho eo ianao ho an'ny tontonana fanaraha-maso ary CPU 0,5 ho an'ny proxy tsirairay. Tsy manana izany betsaka aho. Hamerimberiko ny fitsapana rehefa omena loharano bebe kokoa ho ahy.
Te-hahita ny tenako manokana aho hoe mitovy amin'ny zava-bitan'i Istio amin'ny harato serivisy loharano misokatra hafa:
Fametrahana harato serivisy
Voalohany indrindra, nametraka azy tao anaty cluster aho
$ supergloo init
installing supergloo version 0.3.12
using chart uri https://storage.googleapis.com/supergloo-helm/charts/supergloo-0.3.12.tgz
configmap/sidecar-injection-resources created
serviceaccount/supergloo created
serviceaccount/discovery created
serviceaccount/mesh-discovery created
clusterrole.rbac.authorization.k8s.io/discovery created
clusterrole.rbac.authorization.k8s.io/mesh-discovery created
clusterrolebinding.rbac.authorization.k8s.io/supergloo-role-binding created
clusterrolebinding.rbac.authorization.k8s.io/discovery-role-binding created
clusterrolebinding.rbac.authorization.k8s.io/mesh-discovery-role-binding created
deployment.extensions/supergloo created
deployment.extensions/discovery created
deployment.extensions/mesh-discovery created
install successful!
Nampiasa SuperGloo aho satria manamora kokoa ny bootstrap ny serivisy. Tsy nila nanao zavatra betsaka aho. Tsy mampiasa SuperGloo izahay amin'ny famokarana, fa mety amin'ny asa toy izany. Tsy maintsy nampiasa baiko roa aho isaky ny harato serivisy. Nampiasa cluster roa aho mba hitokana - iray ho an'ny Istio sy Linkerd.
Ny andrana dia natao tao amin'ny Google Kubernetes Engine. Nampiasa Kubernetes aho 1.12.7-gke.7
ary dobo nodes n1-standard-4
miaraka amin'ny scaling node mandeha ho azy (farafahakeliny 4, ambony indrindra 16).
Avy eo dia nametraka ny serivisy serivisy roa avy amin'ny baiko baiko aho.
Mpikambana voalohany:
$ supergloo install linkerd --name linkerd
+---------+--------------+---------+---------------------------+
| INSTALL | TYPE | STATUS | DETAILS |
+---------+--------------+---------+---------------------------+
| linkerd | Linkerd Mesh | Pending | enabled: true |
| | | | version: stable-2.3.0 |
| | | | namespace: linkerd |
| | | | mtls enabled: true |
| | | | auto inject enabled: true |
+---------+--------------+---------+---------------------------+
Avy eo i Istio:
$ supergloo install istio --name istio --installation-namespace istio-system --mtls=true --auto-inject=true
+---------+------------+---------+---------------------------+
| INSTALL | TYPE | STATUS | DETAILS |
+---------+------------+---------+---------------------------+
| istio | Istio Mesh | Pending | enabled: true |
| | | | version: 1.0.6 |
| | | | namespace: istio-system |
| | | | mtls enabled: true |
| | | | auto inject enabled: true |
| | | | grafana enabled: true |
| | | | prometheus enabled: true |
| | | | jaeger enabled: true |
+---------+------------+---------+---------------------------+
Naharitra minitra vitsivitsy ny fikorontanana, ary avy eo dia nilamina ny tontonana fanaraha-maso.
(Fanamarihana: Istio 1.0.x ihany no manohana ny SuperGloo amin'izao fotoana izao. Naveriko indray ny fanandramana tamin'ny Istio 1.1.3, saingy tsy nahatsikaritra fahasamihafana miharihary.)
Fametrahana Istio Automatic Deployment
Mba hahatonga an'i Istio hametraka ny Envoy sidecar dia mampiasa ny injector sidecar β MutatingAdmissionWebhook
. Tsy hiresaka momba izany isika ato amin'ity lahatsoratra ity. Avelao aho hilaza fotsiny fa ity dia mpanara-maso izay manara-maso ny fidirana amin'ny pods vaovao rehetra ary manampy amin'ny fomba mavitrika ny sidecar sy initContainer, izay tompon'andraikitra amin'ny asa. iptables
.
Izahay ao amin'ny Shopify dia nanoratra ny mpanara-maso ny fidiranay manokana mba hampiharana sidecars, fa ho an'ity mari-pamantarana ity dia nampiasa ny controller miaraka amin'i Istio aho. Ny controller dia manindrona sidecars amin'ny alΓ lan'ny default rehefa misy hitsin-dΓ lana amin'ny namespace istio-injection: enabled
:
$ kubectl label namespace irs-client-dev istio-injection=enabled
namespace/irs-client-dev labeled
$ kubectl label namespace irs-server-dev istio-injection=enabled
namespace/irs-server-dev labeled
Fametrahana ny fametrahana Linkerd mandeha ho azy
Mba hametrahana ny fampidirana sidecar Linkerd dia mampiasa fanamarihana izahay (nampiako azy ireo tamin'ny alΓ lan'ny kubectl edit
):
metadata:
annotations:
linkerd.io/inject: enabled
$ k edit ns irs-server-dev
namespace/irs-server-dev edited
$ k get ns irs-server-dev -o yaml
apiVersion: v1
kind: Namespace
metadata:
annotations:
linkerd.io/inject: enabled
name: irs-server-dev
spec:
finalizers:
- kubernetes
status:
phase: Active
Simulator Fandeferana Istio Fault
Nanangana simulator fandeferana fahadisoana antsoina hoe Istio izahay hanandrana ny fifamoivoizana tokana amin'ny Shopify. Nila fitaovana izahay hamoronana topologie manokana izay maneho ampahany manokana amin'ny kisary serivisy, namboarina mavitrika mba hamolavola enta-mavesatra manokana.
Enta-mavesatra ny fotodrafitrasa Shopify mandritra ny fivarotana tselatra. Mandritra izany fotoana izany, Shopify
Tianay ny simulator ho an'ny fahatanjahanay mba hamolavola ny workflow izay mifanandrify amin'ny topologie sy ny enta-mavesatra izay nanenika ny fotodrafitrasa Shopify taloha. Ny tanjona lehibe amin'ny fampiasana harato serivisy dia ny mila fahamendrehana sy fandeferana amin'ny tambajotra, ary zava-dehibe ho antsika ny fiatrehana tsara ny enta-mavesatry ny serivisy taloha.
Ao am-pon'ny simulator fandeferana fahadisoana dia node mpiasa, izay miasa toy ny node mesh serivisy. Ny node mpiasa dia azo amboarina static amin'ny fanombohana na mavitrika amin'ny alΓ lan'ny REST API. Mampiasa fanefena mavitrika amin'ny node mpiasa izahay mba hamoronana rindran-damina amin'ny endrika fitsapana fihemorana.
Ity misy ohatra amin'ny dingana toy izany:
- Manokatra mpizara 10 izahay toy ny
bar
serivisy izay mamerina valiny200/OK
aorian'ny 100 ms. - Manomboka mpanjifa 10 izahay - samy mandefa fangatahana 100 isan-tsegondra ny tsirairay
bar
. - Isaky ny 10 segondra dia manala mpizara 1 izahay ary manara-maso ny lesoka
5xx
amin'ny mpanjifa.
Amin'ny fiafaran'ny fizotran'ny asa dia mandinika ny diary sy ny metrika isika ary manamarina raha nandalo ny fitsapana. Amin'izany fomba izany no ianarantsika momba ny fahombiazan'ny serivisy serivisy ary manao andrana mihemotra mba hitsapana ny hevitsika momba ny fandeferana diso.
(Fanamarihana: Mieritreritra ny hisokatra malalaka ny simulator fandeferana Istio izahay, saingy mbola tsy vonona ny hanao izany.)
Simulator fandeferana Istio ho an'ny mari-pamantarana mesh serivisy
Nanangana nodes miasa maromaro amin'ny simulator izahay:
irs-client-loadgen
: Replika 3 mandefa fangatahana 100 isan-tsegondra isaky nyirs-client
.irs-client
: Dika mitovy 3 mandray ny fangatahana, miandry 100ms ary alefaso any amin'nyirs-server
.irs-server
: Replika 3 miverina200/OK
aorian'ny 100 ms.
Miaraka amin'ity fanamafisana ity, azontsika atao ny mandrefy ny fikorianan'ny fifamoivoizana eo anelanelan'ny teboka 9. Sidecar in irs-client-loadgen
ΠΈ irs-server
mahazo fangatahana 100 isan-tsegondra, ary irs-client
- 200 (miditra sy mivoaka).
Manara-maso ny fampiasana loharano izahay
vokatra
Takelaka fanaraha-maso
Voalohany, nandinika ny fanjifana CPU izahay.
Panel fanaraha-maso Linkerd ~ 22 millicore
Panel fanaraha-maso Istio: ~ 750 millicore
Ny tontonana fanaraha-maso Istio dia mampiasa eo ho eo 35 heny ny loharanon-karena CPUnoho ny Linkerd. Mazava ho azy, ny zava-drehetra dia napetraka amin'ny alΓ lan'ny default, ary ny istio-telemetry dia mandany loharanon-karenan'ny processeur be dia be eto (mety ho kilemaina amin'ny alΓ lan'ny fanesorana ny fiasa sasany). Raha esorina ity singa ity dia mbola mahazo mihoatra ny 100 millicores, izany hoe 4 heny bebe kokoanoho ny Linkerd.
Sidecar proxy
Nanandrana ny fampiasana proxy izahay avy eo. Tokony hisy fifandraisana tsipika miaraka amin'ny isan'ny fangatahana, fa ho an'ny sidecar tsirairay dia misy ny overhead izay misy fiantraikany amin'ny curve.
Linkerd: ~100 millicores ho an'ny irs-client, ~50 milicores ho an'ny irs-client-loadgen
Ny valiny dia toa mitombina, satria ny proxy mpanjifa dia mahazo fifamoivoizana avo roa heny noho ny proxy loadgen: isaky ny fangatahana mivoaka avy amin'ny loadgen, ny mpanjifa dia manana iray miditra ary iray mivoaka.
Istio/Envoy: ~155 millicores ho an'ny irs-client, ~75 milicores ho an'ny irs-client-loadgen
Mahita valiny mitovitovy amin'izany izahay ho an'ny sidecars Istio.
Saingy amin'ny ankapobeny, ny proxy Istio/Envoy dia mandany eo ho eo amin'ny 50% ny loharanon-karena CPUnoho ny Linkerd.
Hitantsika ny tetika mitovy amin'ny lafiny mpizara:
Linkerd: ~50 millicore ho an'ny irs-server
Istio/Iraka: ~80 millicore ho an'ny irs-server
Eo amin'ny lafiny mpizara dia mampiasa sidecar Istio/Envoy eo ho eo amin'ny 60% ny loharanon-karena CPUnoho ny Linkerd.
famaranana
Ny proxy Istio Envoy dia mandany CPU 50+% bebe kokoa noho ny Linkerd amin'ny enta-mavesatra ataontsika. Ny tontolon'ny fanaraha-maso Linkerd dia mandany loharanon-karena kely kokoa noho ny Istio, indrindra ho an'ireo singa fototra.
Mbola mieritreritra ny fomba hampihenana ireo fandaniana ireo izahay. Raha manana hevitra ianao dia mba zarao!
Source: www.habr.com