istio官网地址
istio安装三步走:
- 搭建kubernets平台:已完成
- 下载istio
istio下载地址
[root@192 ~]# wget https://github.com/istio/istio/releases/download/1.6.3/istio-1.6.3-linux-amd64.tar.gz
- 安装istio->环境准备
- 解压
[root@192 ~]# tar -zvxf istio-1.6.3-linux-amd64.tar.gz
- 切换到 Istio 包所在目录下。例如:Istio 包名为 istio-1.6.3,则:
[root@192 ~]# cd istio-1.6.3
[root@192 istio-1.6.3]# pwd
/root/istio-1.6.3
[root@192 istio-1.6.3]#
- 安装目录包含如下内容:
nstall/kubernetes
目录下,有 Kubernetes 相关的 YAML 安装文件
samples/
目录下,有示例应用程序
bin/
目录下,包含istioctl
的客户端文件。istioctl
工具用于手动注入 Envoy sidecar 代理。
[root@192 istio-1.6.3]# ls
bin LICENSE manifests manifest.yaml README.md samples tools
[root@192 istio-1.6.3]#
- 将 istioctl 客户端路径增加到 path 环境变量中,macOS 或 Linux 系统的增加方式如下:
[root@192 istio-1.6.3]# export PATH=$PWD/bin:$PATH
[root@192 istio-1.6.3]#
安装istio:
安装须知:
下表中标记为 X 的组件就是包含在配置文件里的内容:
为了进一步自定义 Istio 和安装插件,您可以在安装 Istio 时所使用的
istioctl manifest
命令中添加一个或多个 --set <key>=<value>
选项。 安装选项中列出了完整的当前所支持的安装键值对集合
- 安装 demo 配置:中间可能会出错,反复运行几遍
[root@192 istio-1.6.3]# istioctl manifest apply --set profile=demo
- 为了验证是否安装成功,需要先确保以下 Kubernetes 服务正确 :
[root@192 istio-1.6.3]# kubectl get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
grafana ClusterIP 10.104.219.172 <none> 3000/TCP 16h
istio-egressgateway ClusterIP 10.109.152.218 <none> 80/TCP,443/TCP,15443/TCP 16h
istio-ingressgateway LoadBalancer 10.104.232.15 <pending> 15020:31400/TCP,80:32650/TCP,443:30151/TCP,31400:32330/TCP,15443:32481/TCP 16h
istiod ClusterIP 10.96.73.45 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP,53/UDP,853/TCP 16h
jaeger-agent ClusterIP None <none> 5775/UDP,6831/UDP,6832/UDP 16h
jaeger-collector ClusterIP 10.108.17.66 <none> 14267/TCP,14268/TCP,14250/TCP 16h
jaeger-collector-headless ClusterIP None <none> 14250/TCP 16h
jaeger-query ClusterIP 10.100.47.16 <none> 16686/TCP 16h
kiali ClusterIP 10.104.219.35 <none> 20001/TCP 16h
prometheus ClusterIP 10.101.160.56 <none> 9090/TCP 16h
tracing ClusterIP 10.110.74.146 <none> 80/TCP 16h
zipkin ClusterIP 10.109.61.247 <none> 9411/TCP 16h
[root@192 istio-1.6.3]#
- 如果集群运行在一个不支持外部负载均衡器的环境中(例如:minikube),istio-ingressgateway 的 EXTERNAL-IP 将显示为 <pending> 状态。请使用服务的 NodePort 或 端口转发来访问网关
请确保关联的 Kubernetes pod 已经部署,并且 STATUS 为 Running
[root@192 istio-1.6.3]# kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
grafana-b54bb57b9-tlgl8 1/1 Running 1 16h
istio-egressgateway-77c7d594c5-8szp5 1/1 Running 1 16h
istio-ingressgateway-766c84dfdc-d6tdp 1/1 Running 1 16h
istio-tracing-9dd6c4f7c-8n2zr 1/1 Running 2 16h
istiod-7b69ff6f8c-lwth5 1/1 Running 1 16h
kiali-d45468dc4-2d7p9 1/1 Running 1 16h
prometheus-5fdfc44fb7-9vxh9 2/2 Running 2 16h
[root@192 istio-1.6.3]#
- 安装 Istio 后,就可以部署您自己的服务,或部署安装程序中系统的任意一个示例应用
当使用 kubectl apply
来部署应用时,如果 pod 启动在标有 istio-injection=enabled
的命名空间中,那么,Istio sidecar 注入器将自动注入 Envoy 容器到应用的 pod 中:
[root@192 istio-1.6.3]# kubectl label namespace default istio-injection=enabled
namespace/default labeled
[root@192 istio-1.6.3]#
- 在没有
istio-injection
标记的命名空间中,在部署前可以使用istioctl kube-inject
命令将 Envoy 容器手动注入到应用的 pod 中
istioctl kube-inject -f <your-app-spec>.yaml | kubectl apply -f -
卸载
- 卸载程序将删除 RBAC 权限、istio-system 命名空间和所有相关资源。可以忽略那些不存在的资源的报错,因为它们可能已经被删除掉了。
istioctl manifest generate --set profile=demo | kubectl delete -f -