一 istio安装
1.1 下载安装
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
1.2 查看pod和svc
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
1.3 设置loadbalancer的地址
这个地址一般是vip地址,
kubectl edit svc istio-ingressgateway -n istio-system
externalIPs:
- 172.31.7.100
然后再次查看svc
二 部署istio里各个插件
各插件主要包括 grafana jaeger kiali prometheus,
cd /usr/local/istio/
kubectl apply -f samples/addons/
然后查看各个pod
三 部署bookinfo项目进行测试
3.1 给指定命名空间打标签
凡是在这个命名空间内的Pod都会自动注入sidercar
kubectl label namespace default istio-injection=enabled
3.2 部署bookinfo
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml #网络
效果如下图所示:
访问url ip/productpage
3.3 验证流量治理
首先 执行,详情见https://istio.io/latest/docs/examples/bookinfo/#apply-default-destination-rules
#必须先执行这个
kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
3.3.1 测试v1版本流量
kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml
无论浏览器怎么刷新,都是请求到v1
3.3.3 测试v3版本流量
kubectl apply -f virtual-service-reviews-v3.yaml #只访问v3版本
当执行多个规则,后面的规则会覆盖前面的规则。
四 映射kiali,浏览器访问
https://github.com/iKubernetes/istio-in-practise.git 克隆代码到本地服务器
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
作者:渐行渐远