技术交流28群

服务热线

135-6963-3175

微信服务号

istio的搭建部署 更新时间 2022-2-26 浏览1493次

安装步骤:

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 服务网格可视化工具,提供了服务拓补图、全链路跟踪、指标遥测、配置校验、健康检查等功能。
tracingIstio调用链
citadel提供了自动生成、分发、轮换与撤销秘钥和证书功能
zipkin服务监控
jaeger-agent
jaeger-collector收集器
jaeger-query

.