Control plane components
-
Pilot: registration center, distribution center; responsible for the svc endpoint pod injected scheduling configuration onward transport of the Envoys
-
Mixer: responsible for traffic scheduling unified strategy, metrics collection, docking external components (Prometheus, Fluentd, Jaeger)
-
Envroys: The envroys proxy container in sidecar manner svc injected into the rear end of the pod, the components interact with the control plane. (Pod can be understood as a gateway) Dynamic Services acquisition, load balancing, routing, circuit breakers, time-out, indicator reporting.
-
Citadel: Security Center
download
https://github.com/istio/istio/releases/download/1.1.7/istio-1.1.7-linux.tar.gz
k8s above installation
## 下载istio安装包
wget https://github.com/istio/istio/releases/download/1.1.7/istio-1.1.7-linux.tar.gz
tar xf istio-1.1.7-linux.tar.gz
cd istio-1.1.7/
cp bin/istioctl /usr/local/bin/
## 为 Istio 组件创建命名空间 istio-system:
kubectl create namespace istio-system
## 使用 kubectl apply 安装所有的 Istio CRD,命令执行之后,会隔一段时间才能被 Kubernetes API Server 收到
helm template install/kubernetes/helm/istio-init --name istio-init --namespace istio-system | kubectl apply -f -
## 如下命令以确保全部 53 个 Istio CRD 被提交到 Kubernetes api-server:
如果你启用了 cert-manager,那么 CRD 的数目为58个。
kubectl get crds | grep 'istio.io\|certmanager.k8s.io' | wc -l
## 部署与你选择的配置文件相对应的 Istio 的核心组件,我们建议在生成环境部署中使用 default 配置文件
helm template install/kubernetes/helm/istio \
--name istio --namespace istio-system \
--set gateways.enabled=true \
--set ingress.service.type=NodePort \
--set gateways.istio-ingressgateway.enabled=true \
--set gateways.istio-ingressgateway.type=NodePort \
--set gateways.istio-egressgateway.enabled=true \
--set gateways.istio-egressgateway.type=NodePort \
--set prometheus.service.nodePort.enabled=true \
--set grafana.enabled=true \
--set grafana.service.type=NodePort \
--set kiali.enabled=true \
--set "kiali.dashboard.jaegerURL=http://$(kubectl get svc tracing --namespace istio-system -o jsonpath='{.spec.clusterIP}'):80" \
--set "kiali.dashboard.grafanaURL=http://$(kubectl get svc grafana --namespace istio-system -o jsonpath='{.spec.clusterIP}'):3000" \
--set tracing.enabled=true \
--set servicegraph.enabled=true| kubectl apply -f -
Acquiring state of the grid
you can get the grid status proxy-status command:
istioctl proxy-status
### 参数解析
SYNCED 表示 Envoy 已经确认了 Pilot 上次发送给它的配置。
SYNCED (100%) 表示 Envoy 已经成功同步了集群中的所有端点。
NOT SENT 表示 Pilot 没有发送任何信息给 Envoy。这通常是因为 Pilot 没有任何数据可以发送。
STALE 表示 Pilot 已向 Envoy 发送更新但尚未收到确认。这通常表明 Envoy 和 Pilot 之间的网络存在问题或 Istio 本身的错误。