服务热线
135-6963-3175
安装步骤:
curl -L https://istio.io/downloadIstio | sh - cd istio-1.5.4 $ export PATH=$PWD/bin:$PATH
部署模式查看:
[root@master1 istio-1.13.1]# istioctl profile list Istio configuration profiles: default demo empty external minimal openshift preview remote
目录:
install/kubernetes 目录下,有 Kubernetes 相关的 YAML 安装文件 samples/ 目录下,有示例应用程序 bin/ 目录下,包含 istioct的客户端文件。istioctl 工具用于手动注入 Envoy sidecar 代理。
配置文件
[root@master1 profiles]# pwd /app/istio-1.13.1/manifests/profiles [root@master1 profiles]# ls default.yaml demo.yaml empty.yaml external.yaml minimal.yaml openshift.yaml preview.yaml remote.yaml
可以看下文件大概内容,例如demo.yaml:
[root@master1 profiles]# more demo.yaml apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: accessLogFile: /dev/stdout components: egressGateways:#出口流量管理 - name: istio-egressgateway enabled: true k8s: resources: requests: cpu: 10m memory: 40Mi ingressGateways:#入口流量管理 - name: istio-ingressgateway enabled: true k8s: resources: requests: cpu: 10m memory: 40Mi service: ports: ## You can add custom gateway ports in user values overrides, but it must include those ports since helm replaces. # Note that AWS ELB will by default perform health checks on the first port # on this list. Setting this to the health check port will ensure that health # checks always work. https://github.com/istio/istio/issues/12503 - port: 15021 targetPort: 15021 name: status-port - port: 80 targetPort: 8080 name: http2 - port: 443 targetPort: 8443 name: https - port: 31400 targetPort: 31400 name: tcp # This is the port where sni routing happens - port: 15443 targetPort: 15443 name: tls pilot: k8s: env: - name: PILOT_TRACE_SAMPLING value: "100" resources: requests: cpu: 10m memory: 100Mi values: global: proxy: resources: requests: cpu: 10m memory: 40Mi pilot: autoscaleEnabled: false gateways: istio-egressgateway: autoscaleEnabled: false istio-ingressgateway: autoscaleEnabled: false
部署:
istioctl manifest apply --set profile=demo #或者编写yaml执行:istioctl manifest apply -f istio-xx.yaml
为了验证是否安装成功,需要先确保以下 Kubernetes 服务正确部署,然后验证除 jaeger-agent 服务外的其他服务,是否均有正确的 CLUSTER-IP:
#查看负载状态 $ kubectl get svc -n istio-system #查看pod $ kubectl get pods -n istio-system
1.自动注入:
当使用 kubectl apply 来部署应用时,如果 pod 启动在标有 istio-injection=enabled 的命名空间中,那么,Istio sidecar 注入器将自动注入 Envoy 容器到应用的 pod 中:
kubectl label namespace <namespace> istio-injection=enabled 或者 kubectl create -n <namespace> -f <your-app-spec>.yaml
2. 手动注入:
在没有 istio-injection 标记的命名空间中,在部署前可以使用istioctl kube-inject命令将 Envoy 容器手动注入到应用的 pod 中:
istioctl kube-inject -f <your-app-spec>.yaml | kubectl apply -f -
附istio相关组件:
istio-egressgateway | 网关出流量流量 |
istio-galley | 负责配置管理的组件 |
istio-ingressgateway | 网关入流量管理 |
istio-pilot | 流量治理的实现主体,Pilot支持从Kubernetes、Consul等多种平台获取服务发现功能 |
istio-policy | 策略的执行 |
istio-sidecar-injector | 负责自动自动注入的组件 |
istio-telemetry | 处理遥测数据的收集 |
prometheus | 监控 |
kiali | 是一款 istio 服务网格可视化工具,提供了服务拓补图、全链路跟踪、指标遥测、配置校验、健康检查等功能。 |
tracing | Istio调用链 |
citadel | 提供了自动生成、分发、轮换与撤销秘钥和证书功能 |
zipkin | 服务监控 |
jaeger-agent | |
jaeger-collector | 收集器 |
jaeger-query |
.