s5proxy()

本文章向大家介绍 Istio 1.5 部署安装 ,主要包括 Istio 1.5 部署安装 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

前言

Istio 架构又换了,1.5 开始,把控制平面的所有组件组合并成一个单体结构叫 istiod,对于运维部署来说省去很大麻烦。Mixer 组件被移除,新版本的 HTTP 遥测默认基于 in-proxy Stats filter,同时可使用 WebAssembly 开发 in-proxy 扩容


准备部署istio

1、kubernetes环境准备

kubernetes可以参考https://www.cnblogs.com/MinZhou/p/12579634.html

2、在GitHub下载istio安装文件

curl -L https://istio.io/downloadIstio | sh -

3、进入istio安装包

cd istio-1.5.0tree -L 1 ././├── all-in-one.tar├── grafana.tar├── ingress.yaml├── istio-1.5.0├── istio-1.5.0-linux.tar.gz├── kiali.tar├── pilot.tar├── prometheus.tar└── proxyv2.tar1 directory, 8 files

4、将istioctl拷贝到/usr/local/bin/中

cp bin/sitioctl /usr/local/bin/

5、将 istioctl 命令添加到环境变量中

vim ~/.bashrcPATH="$PATH:/usr/local/src/istio-1.5.1/bin"source ~/.bashrc

6、配置 istioctl 参数自动补全

vim ~/.bashrcsource /usr/local/src/istio-1.5.1/tools/istioctl.bashsource ~/.bashrc

7、istio部署

istio提供了多种的部署方法可以提供如下命令查看

ll ./istio-1.5.0/install/kubernetes/operator/profiles/-rw-r--r-- 1 root root 18091 Mar 4 07:40 default.yaml-rw-r--r-- 1 root root 3194 Mar 4 07:40 demo.yaml-rw-r--r-- 1 root root 964 Mar 4 07:40 empty.yaml-rw-r--r-- 1 root root 913 Mar 4 07:40 minimal.yaml-rw-r--r-- 1 root root 579 Mar 4 07:40 remote.yaml-rw-r--r-- 1 root root 554 Mar 4 07:40 separate.yaml

他们之间的全部如下表:


注意:

(1)default 基础上开启 Grafana、istio-tracing、kiali 附加组件

(2)cni 配置关闭,但相关参数已配置

(3)全局禁用 TLS

(4)Grafana、istio-tracing、kiali、prometheus 通过 istio-ingressgateway 暴露

(5)排除 192.168.16.0/20,192.168.32.0/20 k8s svc 和 k8s pod 两个网段

(6)Ingress Gateway 与 pilot 开启2个pod(默认1个pod)

(7)Pod 绑定节点标签 zone: sz

(8)Ingress Gateway 使用 HostNetwork 模式暴露

(9)overlays 字段用来修改对应组件的各个资源对象的 manifest

(10)调整 PDB 配置

(11)安装前需要创建 grafana 和 kiali secret,用于登陆

(12)Ingress Gateway 从安全的角度来考虑,不应该暴露那些不必要的端口,对于 Ingress Gateway 来说,只需要暴露 HTTP、HTTPS 和 metrics 端口就够了

8、开始安装istio

istioctl manifest apply --set profile=demo

我是通过demo的方式来安装istio的

查看部署情况

kubectl get pod --all-namespaces |grep istioistio-operator istio-operator-566d575bb8-srtf6 1/1 Running 6 16distio-system grafana-7474bc54df-5pfkx 1/1 Running 6 15distio-system istio-egressgateway-998849954-k7gzg 1/1 Running 5 15distio-system istio-ingressgateway-6967594fff-2659x 1/1 Running 1 7d18histio-system istio-tracing-58bdd77c47-wxkkc 1/1 Running 5 15distio-system istiod-6d7bdbf797-xcwl6 1/1 Running 5 15distio-system kiali-6b45fb76c4-llwnm 1/1 Running 4 15distio-system prometheus-5dc45d847b-h57xf 2/2 Running 8 15dkube-system istio-cni-node-79crb 2/2 Running 11 15dkube-system istio-cni-node-dj5cl 2/2 Running 9 15dkube-system istio-cni-node-gc5pr 2/2 Running 9 15dkube-system istio-cni-node-s5msm 2/2 Running 11 15d

9、暴露端口

我的环境是通过ingress来暴露端口,使用的是traefik-ingress,本教程不提供traefik-ingress的安装教程,后面会单独出ingress教程。

apiVersion: extensions/v1beta1kind: Ingressmetadata: name: prometheus namespace: istio-systemspec: rules: - host: prometheus.istio.io http: paths: - path: / backend: serviceName: prometheus servicePort: 9090---apiVersion: extensions/v1beta1kind: Ingressmetadata: name: grafana namespace: istio-systemspec: rules: - host: grafana.istio.io http: paths: - path: / backend: serviceName: grafana servicePort: 3000---apiVersion: extensions/v1beta1kind: Ingressmetadata: name: servicegraph namespace: istio-systemspec: rules: - host: servicegraph.istio.io http: paths: - path: / backend: serviceName: servicegraph servicePort: 8088---apiVersion: extensions/v1beta1kind: Ingressmetadata: name: tracing namespace: istio-systemspec: rules: - host: tracing.istio.io http: paths: - path: / backend: serviceName: tracing servicePort: 80---apiVersion: extensions/v1beta1kind: Ingressmetadata: name: kiali namespace: istio-systemspec: rules: - host: kiali.istio.io http: paths: - path: / backend: serviceName: kiali servicePort: 20001