安装istioctl工具
下载地址 https://github.com/istio/istio/releases
找到对应的版本下载
#解压
tar -zxvf istio-1.16.7-linux-amd64.tar.gz
#放到环境变量目录里
cp bin/istioctl /usr/local/bin/
安装时需要查看启动失败pod,手动下载镜像并重新安装 istio所需镜像都需要手动下载
#安装istio
istioctl install --set profile=default -y
#删除从新安装
kubectl delete namespace istio-system
#查看是否删除成功
kubectl get all -n istio-system
#卸载istio
istioctl x uninstall --purge
安装插件
在目录里带有常见插件的安装方式 查看README.md 按照步骤安装即可
samples/addons/
#示例安装prometheus
kubectl apply -f samples/addons/prometheus.yaml
开启入口网关 让外部访问 配置
#定义入口网关
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: weather-gateway
namespace: istio-system
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: frontend-dr
namespace: weather
spec:
host: frontend #表示规则使用对象
subsets: #定义服务的子集 配合VirtualService使用
- name: v1 # VirtualService引用的名称
labels:
version: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: frontend-route
namespace: weather
spec:
hosts: #流量发送的目标
- "*" #全部流量转发给入口网关
gateways: #表示应用这些流量规则的getway 如果是内部访问 无需定义此字段
- istio-system/weather-gateway
http:
- match:
- port: 80 #请求的服务端口
route:
- destination: #匹配上边的请求被送到这个目标
host: frontend #服务名
port:
number: 3000 #服务端口
subset: v1 #子集 在DestinationRule里定义
查看访问地址
#网关所在命名空间 istio-ingressgateway 就是入口网关 32647端口就是开启的对外访问端口 直接使用nodeIp:32647 访问即可
kubectl get svc -n istio-system
istio-ingressgateway LoadBalancer 10.98.14.204 <pending> 15021:32158/TCP,80:32647/TCP,443:32092/TCP 3d20h