本文章向大家介绍 Istio 1.5 部署安装 ,主要包括 Istio 1.5 部署安装 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言Istio 架构又换了,1.5 开始,把控制平面的所有组件组合并成一个单体结构叫 istiod,对于运维部署来说省去很大麻烦。Mixer 组件被移除,新版本的 HTTP 遥测默认基于 in-proxy Stats filter,同时可使用 WebAssembly 开发 in-proxy 扩容
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