天天看点

安装istio和部署bookinfo项目

一 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      
安装istio和部署bookinfo项目
安装istio和部署bookinfo项目

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

安装istio和部署bookinfo项目

1.3 设置loadbalancer的地址

这个地址一般是vip地址,

kubectl edit svc istio-ingressgateway -n istio-system
externalIPs:
- 172.31.7.100      

然后再次查看svc

安装istio和部署bookinfo项目

二 部署istio里各个插件

各插件主要包括 grafana jaeger kiali prometheus,

cd /usr/local/istio/
 kubectl apply -f samples/addons/      

然后查看各个pod

安装istio和部署bookinfo项目

三 部署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 #网络      

效果如下图所示:

安装istio和部署bookinfo项目
安装istio和部署bookinfo项目

访问url ip/productpage

安装istio和部署bookinfo项目

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

安装istio和部署bookinfo项目

3.3.3 测试v3版本流量

kubectl apply -f virtual-service-reviews-v3.yaml   #只访问v3版本
      
安装istio和部署bookinfo项目

当执行多个规则,后面的规则会覆盖前面的规则。

四 映射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      
安装istio和部署bookinfo项目

作者:渐行渐远

继续阅读