ααα ααααΈααααΆα
ααΎαβαααα·αβαα
βαααα»α
Π
ααΆαα½αααΉα Istio 1.1 ααααΌααααΈααααΎααααΆαααααα αα 0,6 vCPUs (ααααΌααα·αααα·α) αααα»α 1000 ααααΎαααα»ααα½ααα·ααΆααΈα
αααααΆαααααααααΈαα½ααα
αααα»ααααααΆαααααΆ (ααααΌααααΈ 2 αα
αααααααααΆαααααΆααααααΆαα) ααΎαααΉαααΆα 1200 ααααΌααααααΆααααααΌααααΈ αααα»αα’ααααΆαα½αααΆαααααΎαααα»ααα½ααα·ααΆααΈα αααααΆαααΆαααααΆααααααααα Google ααΆααααΎαααΆααααα αα $40/month/core αααααΆααααΆαααααααα
ααΆαααααααα n1-standard-64
αααααΊαααααααααααα½αααΉαααααΎα±ααααΎαα
αααΆαα
αααΎαααΆα 50 ααΆαααα»ααααΆααααα»ααα½ααααααααΆααααααΎ 1 ααΆααααα»ααα½ααα·ααΆααΈα
α’ααΈαααΆα αααΈα (
ααΆααααααα ααααα-istio-test.yaml ααΉααααααΎαααααΎαααΈααΈααΌαααΆααααααααααα ααααα·αααΎαααα»αααααΎααα·ααα·ααααΆααΆαααααΉαααααΌα α’αααααααΌαααΆαααααΌααααΈααΈααΌαααα αα 24 αααααΆααααααΆαααααααΆ αα·α 0,5 αααΈααΈααΌαααααΆααααααΌααααΈααΈαα½ααα αααα»ααα·αααΆαα αααΎααααααα αααα»αααΉαααααΎαααααααααααα αα ααααααααααΆαααΆααααα αααΎαααααΌαααΆααααα ααα±αααααα»αα
αααα»αβα
ααβααΎαβαααα½αβα―αβααΆβααΎβααΆαβα’αα»ααααβαααα Istio ααααααβααααΆβααΉαβαααααΆαβααααΆβαααααβααΎαβα
αα βαα½αβαααβαααΆαβααΆα
ααΆαααα‘αΎαααααΆααααααΆαααα
ααΆααααΌααααα»αααΆαααα‘αΎαααΆαα
αααα»αα
ααααα
$ 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!
αααα»αααΆαααααΎ SuperGloo αααααααΆααααΎα±αα bootstrapping ααααΆααΆααααα½αααΆαα αααα»ααα·αα αΆαααΆα αααααΎα’αααΈα αααΎαααα ααΎααα·αααααΎ SuperGloo αααα»αααΆαααα·ααα ααα»ααααααΆααα’αααααΆααααΆαααΆαααααααα αααα»αβααααΌαβααααΎβααΆαααβαααααΆβααΈαβααΈβααααΆβαααααΆααβααααΆααααβααΈαα½ααα αααα»αααΆαααααΎα αααααααΈααααααΆααααΆαα―αα - αα½ααααααΆαα Istio αα·α Linkerd α
ααΆααα·αααααααααΌαααΆαααααΎα‘αΎααα
ααΎ Google Kubernetes Engine α αααα»αααΆαααααΎ Kubernetes 1.12.7-gke.7
αα·ααααα»αααααΆαα n1-standard-4
ααΆαα½αααΉαααΆαααααΎααΆαααααααΆαααααΆαααααααααααααααααα· (α’αααααααΆ 4 α’αα·ααααΆ 16) α
αααααΆαααααααα»αααΆαααα‘αΎαααααΆ Meshes ααΆααααΈαααΈαααααΆααααΆααααααααΆα
α’αααααααΆααααααΌαα
$ 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 |
+---------+--------------+---------+---------------------------+
αααααΆαααα 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 |
+---------+------------+---------+---------------------------+
ααααα·ααα»αααΆααααΆαα αααΆααααααΈαααΈααΆααΈ α αΎααααααΆααααααααΆαααααααΆααΆααααααααΆαα
(α αααΆαα SuperGloo ααΆαααααα Istio 1.0.x ααα»ααααααααααΆααααααααα αααα»αααΆαααααΎααΆααα·ααααααααααααααΆαα½α Istio 1.1.3 ααα»αααααα·αααΆαααααααααΆααααΈααΆααα»αααααΆαα½αα±ααααααααααΆαααααααα)
ααΆαααα‘αΎα Istio ααΆαααΆααα±ααααααΎααααΆαααααααααααααααααα·
ααΎααααΈααααΎα±αα Istio ααα‘αΎα sidecar Envoy ααΎαααααΎ sidecar injector β MutatingAdmissionWebhook
. ααΎαααΉααα·ααα·ααΆαα’αααΈααΆαα
αααα»αα’ααααααααααα αααα»αααααΆαααααα·ααΆαααΆαααααΊααΆα§ααααααααααΆααααααα½ααα·αα·αααααΆαα
αΌαααααΎααααααααΈααΆααα’αα α αΎαααααααααΆααααα sidecar αα·α initContainer αααααα½ααα»αααααΌαα
αααααα·α
αα
ααΆαα iptables
.
ααΎααα
Shopify ααΆααααααα§ααααααααααΆααΆαα
αΌαααααΎαααΆαααααΆαααααα½αααααααΎαααΎααααΈα’αα»ααααααααααα
αα αα ααα»αααααααααΆαααααααααΆαααα αααα»αααΆαααααΎα§ααααααααααΆαααααααΆααααααΆαα½α Istio α α§ααααααααααΆα
αΆααααααΆαα
αα ααααΆαααααΆαααΎα αα
ααααααααΆαααααΌαααΆαααααα»αα
αααααααααα 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
αααα αααΆαααΆααα±ααααααΎααααΆαα Linkerd αααααααααααααααα·
ααΎααααΈααα‘αΎαααΆααααααα Linkerd sidecar ααΎαααααΎα
αααΆααααααα (αααα»αααΆαααααααααΆαααααααΆαααα 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
Istio Fault Tolerance Simulator
ααΎαααΆααααααΎααααααα·ααΈααααΆααααΆαααα α»ααααα α ααΆ Istio ααΎααααΈααΆαααααααΆαα½αααΉαα ααΆα ααααααα½ααααα αααα Shopify α ααΎαααααΌαααΆαα§αααααααΎααααΈαααααΎα topology ααααΆαααααα½α αααααΉαααααΆαα±αααααααααΆααααΆααααααααΆα ααααααΆααααααααααΎα αααααααΌαααΆαααααααα ααΆααααααααααΆαααααααΎααααΈααααΎααααΌααααααα»αααΆαααΆαααΆααααΆααα
α αααααΆαα
ααΆαααααααααααα Shopify αααα·ααα
αααααααααα»ααααααααα‘α»ααααααααααααΊα αααα»ααααααΆαα½αααααΆααα Shopify
ααΎαα ααααΆααααΆαααΈααααααααααΎααΆααααααααααΎαααΎααααΈααααΎααααΌααα αΌαααΆαααΆααααααααΌαααααΆααΉααααααΆ αα·αααααα»αααΆαααΆααααααΆαααααααααααααΎα αααααΆαα ααΆαααααααααααα Shopify ααΆαααΈα’ααΈαααΆαα αααααααααααΆααααααΆαααααΎααααΆααααααΆααααΆααααΊααΆ ααΎαααααΌαααΆαααΆαααΏααΆαα αα·αααΆαα’ααα±αα ααααααα α»ααα ααααα·ααααααΆα α αΎαααΆααΆαααΆααααααΆαααααααΆααααΎααααααααΆααααααΆααααααΆαααααα·αααααΆαααααααααΉαααααα»ααααααααΆαααααΆααααααΈαα»αα
αα αααα»ααααααΌααααααΆαααΈααααααααααΎααΆαα’ααα±αααα α»αααΊααΆααααΆαααααααααααααΎααα½ααΆααααΆααααααΆααααααΆααααα ααααΆααααααααα’αΆα ααααΌαααΆαααααααα ααΆααααααααααααα αααα αΆααααααΎαα¬ααΆαααααααΆαααα REST API α ααΎαααααΎααΆαααααααα ααΆααααααααααΆαααααααααααΆααααααααααΎααααΈαααααΎαααα αΌαααΆαααΆααααα»αααααααααααΆαααααΎααααααααααααααα
αααααΊααΆα§ααΆα αααααααααΎαααΆαααααααα
- ααΎαααΎαααααΎαααΆα 10 servers as
bar
ααααΆααααααααααααααΆαααααΎααα200/OK
αααααΆααααΈ 100 ms α - ααΎαααΎαααααΎαααΆαα’αα·αα·αα 10 ααΆαα - ααααΆαααααααΎααααΎ 100 αααα»ααα½ααα·ααΆααΈαα
bar
. - αααααΆαα 10 αα·ααΆααΈ ααΎααα»ααααΆαααΈααα 1 αα·ααααα½ααα·αα·αααααα α»α
5xx
ααΎα’αα·αα·ααα
αα α α»ααααα ααααααααΎαααΆαααΆαααΆα ααΎααα·αα·αααααΎααααααα ααα» αα·ααααααΆαα α αΎααα·αα·αααααΎαααΆααΎααΆαααααΎαααααααΆαααααααΆαααααα¬ααα αα·ααΈαααααΎααααα’αααΈααααΎαααΆαααααααΆααααΆααααααααΎα αα·αααααΎαααΆαααΆαααααΎααααααααααααααααΎααααΈααΆαααααααΆαααααααααααααΎαα’αααΈααΆαα’ααα±αααα α»αα
(α αααΆαα ααΎααααα»ααα·αα’αααΈαααααααΎαα αα αααααΆαααΈααα·αααααΆαα’ααααααα Istio ααα»αααααα·αααΆαααα½α ααΆααααΎααααΈααααΎααΌα αααααα α‘αΎαααα )
Istio fault tolerance simulator αααααΆααααααΆααααβ mesh benchmark
ααΎααααα αααααΆααααααΎααΆαααΆα αααΎααααααΆαααΈααααααααααΎα
irs-client-loadgen
α ααΆαα ααααα ααα½α 3 αααααααΎααααΎ 100 αααα»ααα½ααα·ααΆααΈαααα»ααα½αirs-client
.irs-client
α 3 α αααΆααα αααααααααα½αααααΎ αααα αΆα 100ms α αΎααααααΌαααααΎααirs-server
.irs-server
α 3 ααΌαα ααααααααααα‘αααααα·α200/OK
αααααΆααααΈ 100 ms α
ααΆαα½αααΉαααΆαααααααα
ααΆααααααααααα ααΎαα’αΆα
ααΆαααααααααα αΌαα
ααΆα
ααααααααΆααααααααΆααααΆαα
ααα»α
αααα
αα 9 α α’ααααα·ααααα»α irs-client-loadgen
ΠΈ irs-server
ααα½αααΆα 100 ααααΎαααα»ααα½ααα·ααΆααΈ irs-client
- 200 (α
αΌααα·αα
αα) α
ααΎαααΆαααΆαααΆαααααΎααααΆααααααΆαααΆαααα
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ
ααααΆαααααααΆ
ααααΌαααΎααα·αα·αααααΎαααΆαααααΎααααΆαααααΈααΈααΌα
ααααΆαααααααΆ Linkerd ~ 22 αα·ααααΈα
ααααΆαααααααΆ Istio: ~750 millicore
ααααΆαααααααΆ Istio ααααΎαααα αα ααααΆα CPU α αααΎαααΆα 35 ααααΆα Linkerd α ααΆααΆααα·αααΆαα α’αααΈααααααααΆαααααΌαααΆαααα‘αΎαααΆαααααΆαααΎα α αΎα istio-telemetry ααααΎααααΆααααααΆααα½αααααΆαααΆα αααΎααα ααΈααα (ααΆα’αΆα ααααΌαααΆααα·ααααααΆααα·ααα»αααΆααα½αα ααα½α)α ααααα·αααΎααΎααααααΆαααΆααααα αα ααΎααα ααααα½αααΆαα αααΎαααΆα 100 αα·ααααΈα αααααΊ 4 ααα αααΎαααΆααααααΆα Linkerd α
ααααΌααααΈ Sidecar
αααααΆαααα ααΎαααΆαααΆαααααααΆαααααΎααααΆααααααΌααααΈα ααΆαα½αααααΆαααααΆααααααααΈααα’αααααΆαα½αααΉαα ααα½αααααααΎ ααα»αααααααααΆααααααααα αα ααααΈαα½ααααΆαα ααα»α ααΎααα½αα ααα½αααααααααΆααααααααααααα
Linkerdα ~100 millicores αααααΆαα irs-client, ~50 millicores αααααΆαα irs-client-loadgen
ααααααααΎααα α‘αΌααΈαα ααΈαααααααααΌααααΈα’αα·αα·ααααα½αααΆαα ααΆα αααα αααΎαααΆαααααΌααααΈ loadgen ααΈαααα αααααΆααααΆααααααΎαααα ααααααΈ loadgen α’αα·αα·ααααΆααα½αα αΌα αα·ααα½αα ααα
Istio/Envoy: ~155 millicores αααααΆαα irs-client, ~75 millicores αααααΆαα irs-client-loadgen
ααΎαβααΎαβααααααβααααααβααααΆβαααβαααααΆαα Istio sidecarsα
ααα»ααααααΆααΌαα ααααΌααααΈ Istio/Envoy ααααΎααααΆαα αααα αα 50% ααααΆα CPU αααααααααααΆα Linkerd α
ααΎαααΎααααααααΆαααααΌα ααααΆαα αααααααΆααααΆαααΈαααα
Linkerdα ~50 millicore αααααΆαα irs-server
Istio/Envoyα ~80 millicore αααααΆαα irs-server
αα αααααααΆααααΆαααΈααα ααΆααΈαααααα Istio/Envoy ααααΎααααΆαα αααα αα 60% ααααΆα CPU αααααααααααΆα Linkerd α
ααα ααααΈααααα·ααααΆα
ααααΌααααΈ Istio Envoy ααααΎααααΆαααααΈααΈααΌ 50+% α αααΎαααΆα Linkerd αα ααΎααααα»αααΆαααΆααααααΆααααααααααΎααααααΎαα ααααααααα½ααα·αα·ααα Linkerd ααααΎααααΆααααααΆααα·α ααΆα Istio ααΆαα·ααααααααΆαααααΆαααΆαα»ααααΌαα
ααΎααα αααα·αα’αααΈααααααΆαααααααααΆαα αααΆαααΆαααααα ααΎααΆααααα·α ααΌααα½αα ααααααααα!
ααααα: www.habr.com