Istio / Getting Started
一 istio安装
https://istio.io/latest/docs/setup/getting-started/
# 下载
cd /usr/local/
curl -L https://istio.io/downloadIstio | sh -
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.14.1 TARGET_ARCH=x86_64 sh -
cd istio-1.14.1
export PATH=$PWD/bin:$PATH
ln -sv istio-1.14.1 istio
ln -sv /usr/local/istio/bin/istioctl /usr/local/bin/istioctl
# 安装
istioctl profile list
default: 生产可用
demo:测试环境使用
istioctl install --set profile=demo -y
安装成功如下所示
然后查看istio Pod
root@k8s-master01:/usr/local# kubectl get pod -n istio-system
NAME READY STATUS RESTARTS AGE
istio-egressgateway-7fcb98978c-b885f 1/1 Running 0 11m
istio-ingressgateway-55b6cffcbc-6knqm 1/1 Running 0 11m
istiod-56d9c5557-stvdz 1/1 Running 0 16m
查看istio的svc
编辑istio-ingressgateway
可以通过浏览器直接访问
kubectl edit svc istio-ingressgateway -n istio-system
externalIPs:
- 172.31.7.100
然后再次查看svc
给指定命名空间打标签,凡是在这个命名空间内的Pod都会自动注入sidercar
kubectl label namespace default istio-injection=enabled
各插件主要包括 grafana jaeger kiali prometheus,其中kiali无法下载
docker pull quay.io/kiali/kiali:v1.50
ctr images pull quay.io/kiali/kiali:v1.50
下载完镜像后,部署各个插件,如下所示
cd /usr/local/istio/ kubectl apply -f samples/addons/
注意这里面有部分镜像也无法下载
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml #网络
访问url ip/productpage
http://192.168.24.236/productpage
默认一直刷新访问,会在三个版本直接不停的切换
登录用户名 jason 无密码
kubectl api-resources --api-group=networking.istio.io #查看资源
Istio / Request Routing
测试流量治理
首先 执行
Istio / Bookinfo Application
#必须先执行这个 kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
然后执行,把所有流量请求到了v1
kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml
无论浏览器怎么刷新,都是请求到v1
kubectl apply -f virtual-service-reviews-v3.yaml #只访问v3版本
执行多个规则,会覆盖前面的规则。
GitHub - iKubernetes/istio-in-practise
https://github.com/iKubernetes/istio-in-practise/tree/main/Traffic-Management-Basics/kiali-port-80
克隆上面的代码到本地仓库
映射kiali到外网:
cd /root/istio-in-practise/Traffic-Management-Basics kubectl apply -f kiali-port-80/
查看networking和virtualservices,然后在hosts文件里增加 kiali.magedu.com 这个域名解析即可访问
root@k8s-master1:~/istio-in-practise/Traffic-Management-Basics# kubectl get gateways.networking -n istio-system
NAME AGE
kiali-gateway 109s
root@k8s-master1:~/istio-in-practise/Traffic-Management-Basics# kubectl get virtualservices -n istio-system
NAME GATEWAYS HOSTS AGE
kiali-virtualservice ["kiali-gateway"] ["kiali.magedu.com"] 2m5s