Istio 1.5 部署安装

前言

Istio 架构又换了,1.5 开始,该版本最大的变化是将控制平面的所有组件组合成一个单体结构叫 istiod,把控制平面的所有组件组合并成一个单体结构叫 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.0
tree -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.tar

1 directory, 8 files 

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

cp bin/sitioctl /usr/local/bin/

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

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

6、配置 istioctl 参数自动补全

vim ~/.bashrc
source /usr/local/src/istio-1.5.1/tools/istioctl.bash
source ~/.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 基础上开启 Grafanaistio-tracingkiali 附加组件

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

(3)全局禁用 TLS

(4)Grafanaistio-tracingkialiprometheus 通过 istio-ingressgateway 暴露

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

(6)Ingress Gatewaypilot 开启2个pod(默认1个pod)

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

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

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

(10)调整 PDB 配置

(11)安装前需要创建 grafanakiali 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 istio
istio-operator   istio-operator-566d575bb8-srtf6               1/1     Running   6          16d
istio-system     grafana-7474bc54df-5pfkx                      1/1     Running   6          15d
istio-system     istio-egressgateway-998849954-k7gzg           1/1     Running   5          15d
istio-system     istio-ingressgateway-6967594fff-2659x         1/1     Running   1          7d18h
istio-system     istio-tracing-58bdd77c47-wxkkc                1/1     Running   5          15d
istio-system     istiod-6d7bdbf797-xcwl6                       1/1     Running   5          15d
istio-system     kiali-6b45fb76c4-llwnm                        1/1     Running   4          15d
istio-system     prometheus-5dc45d847b-h57xf                   2/2     Running   8          15d
kube-system      istio-cni-node-79crb                          2/2     Running   11         15d
kube-system      istio-cni-node-dj5cl                          2/2     Running   9          15d
kube-system      istio-cni-node-gc5pr                          2/2     Running   9          15d
kube-system      istio-cni-node-s5msm                          2/2     Running   11         15d

9、暴露端口

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

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: prometheus
  namespace: istio-system
spec:
  rules:
  - host: prometheus.istio.io
    http:
      paths:
      - path: /
        backend:
          serviceName: prometheus
          servicePort: 9090
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: grafana
  namespace: istio-system
spec:
  rules:
  - host: grafana.istio.io
    http:
      paths:
      - path: /
        backend:
          serviceName: grafana
          servicePort: 3000
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: servicegraph
  namespace: istio-system
spec:
  rules:
  - host: servicegraph.istio.io
    http:
      paths:
      - path: /
        backend:
          serviceName: servicegraph
          servicePort: 8088
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tracing
  namespace: istio-system
spec:
  rules:
  - host: tracing.istio.io
    http:
      paths:
      - path: /
        backend:
          serviceName: tracing
          servicePort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kiali
  namespace: istio-system
spec:
  rules:
  - host: kiali.istio.io
    http:
      paths:
      - path: /
        backend:
          serviceName: kiali
          servicePort: 20001

 

 

 

 

 

posted @ 2020-06-15 10:48  老村长de  阅读(791)  评论(0编辑  收藏  举报