Service Mesh Istio 从入门到放弃 (一) istio部署安装 && demo服务应用展示

tech2024-05-09  94

文章目录

安装&部署istio 1.5.1 安装 demo 展示demo应用安装demo 应用介绍demo应用 访问

安装&部署

首先部署istio之前你需要有一套kubernetes集群,如果没有可以参照我之前写的文章进行操作ubuntu 18.04 基于kubeadm 搭建kubernetes 1.15.0 部署好之后就可以继续后面的istio的安装部署

istio 1.5.1 安装

首先要下载istio的安装包,默认会下载最新的版本,当前是1.7,由于我的k8s集群是1.5的版本它支持的istio是1.5.1,所以只能指定版本下载 //下载安装包 默认下载最新版本 curl -L https://istio.io/downloadIstio | sh - // 下载指定版本 curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.5.1 sh - //进入安装目录 cd istio-1.5.0 //配置istio 命令工具 export PATH=$PWD/bin:$PATH //执行安装命令安装demo版本用于测试以及后续的功能特性练习,这个版本包括了istio的几乎所有功能特性 istioctl manifest apply --set profile=demo // 安装之后可以看到生成了istio-system 的ns root@kube1:~/istio/istio-1.5.1# kubectl get ns NAME STATUS AGE default Active 436d ingress-nginx Active 26d istio-system Active 15m kube-node-lease Active 436d kube-public Active 436d kube-system Active 436d monitoring Active 26d test Active 36d //查看istio需要的crd root@kube1:~/istio/istio-1.5.1# kubectl get crd | grep istio adapters.config.istio.io 2020-09-03T08:31:55Z attributemanifests.config.istio.io 2020-09-03T08:31:55Z authorizationpolicies.security.istio.io 2020-09-03T08:31:56Z clusterrbacconfigs.rbac.istio.io 2020-09-03T08:31:56Z destinationrules.networking.istio.io 2020-09-03T08:31:56Z envoyfilters.networking.istio.io 2020-09-03T08:31:56Z gateways.networking.istio.io 2020-09-03T08:31:56Z handlers.config.istio.io 2020-09-03T08:31:56Z httpapispecbindings.config.istio.io 2020-09-03T08:31:56Z httpapispecs.config.istio.io 2020-09-03T08:31:56Z instances.config.istio.io 2020-09-03T08:31:56Z meshpolicies.authentication.istio.io 2020-09-03T08:31:56Z peerauthentications.security.istio.io 2020-09-03T08:31:56Z policies.authentication.istio.io 2020-09-03T08:31:56Z quotaspecbindings.config.istio.io 2020-09-03T08:31:57Z quotaspecs.config.istio.io 2020-09-03T08:31:57Z rbacconfigs.rbac.istio.io 2020-09-03T08:31:57Z requestauthentications.security.istio.io 2020-09-03T08:31:57Z rules.config.istio.io 2020-09-03T08:31:57Z serviceentries.networking.istio.io 2020-09-03T08:31:57Z servicerolebindings.rbac.istio.io 2020-09-03T08:31:57Z serviceroles.rbac.istio.io 2020-09-03T08:31:57Z sidecars.networking.istio.io 2020-09-03T08:31:57Z templates.config.istio.io 2020-09-03T08:31:57Z virtualservices.networking.istio.io 2020-09-03T08:31:57Z

到这里istio集群就算安装好了

demo 展示

demo应用安装

安装这个应用主要是为了后续用来展示istio的各种功能特性 //安装应用服务 root@kube1:~/istio/istio-1.5.1# kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml service/details created serviceaccount/bookinfo-details created deployment.apps/details-v1 created service/ratings created serviceaccount/bookinfo-ratings created deployment.apps/ratings-v1 created service/reviews created serviceaccount/bookinfo-reviews created deployment.apps/reviews-v1 created deployment.apps/reviews-v2 created deployment.apps/reviews-v3 created service/productpage created serviceaccount/bookinfo-productpage created deployment.apps/productpage-v1 created //查看安装好的services root@kube1:~/istio/istio-1.5.1# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE details ClusterIP 10.110.144.165 <none> 9080/TCP 58s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 436d productpage ClusterIP 10.105.192.136 <none> 9080/TCP 57s ratings ClusterIP 10.107.217.152 <none> 9080/TCP 58s reviews ClusterIP 10.106.162.155 <none> 9080/TCP 57s //pod是running状态表示服务可以正常运行 root@kube1:~/istio/istio-1.5.1# kubectl get pod NAME READY STATUS RESTARTS AGE details-v1-74f858558f-t9jbp 1/1 Running 0 9m39s productpage-v1-76589d9fdc-lvqlj 1/1 Running 0 9m37s ratings-v1-7855f5bcb9-5mnl8 1/1 Running 0 9m38s reviews-v1-64bc5454b9-jhtnd 1/1 Running 0 9m38s reviews-v2-76c64d4bdf-lnwc2 1/1 Running 0 9m38s reviews-v3-5545c7c78f-7xw9s 1/1 Running 0 9m38s

demo 应用介绍

这个应用是一个在线书店,可以展示各种书的信息包括书的介绍、详细信息、以及各种评论这个书店应用被分为4个微服务:productpage、details、reviews、ratingsproductpage 微服务调用details、reviews来去展示网页信息details 包含书的信息reviews 包含评论信息 也会调用ratings 服务ratings 包含书的排名信息reviews 包含三个版本的实例 Version v1 不会调用ratings serviceVersion v2 会调用 ratings service,同时会展示排名1-5黑星的排名Version v3 会调用ratings service,同时会展示排名1-5红星的排名 整个应用的架构如下

demo应用 访问

服务安装好后还不能对外提供访问,还需要安装网关 root@kube1:~/istio/istio-1.5.1# kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created

其中gateway 能让外界访问

virtualservice提供一些基本的路由配置

配置好之后需要获取访问应用的host和port 首先执行

root@kube1:~# kubectl get svc istio-ingressgateway -n istio-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.105.92.210 <pending> 15020:30871/TCP,80:30890/TCP,443:31967/TCP,15029:31505/TCP,15030:30426/TCP,15031:32381/TCP,15032:32421/TCP,31400:31148/TCP,15443:30942/TCP 68m

如果EXTERNAL-IP 有对应的ip,那么它就是对外暴露的ip,如果这一项是none或者pending,说明集群没有外部的负载均衡来支持ingress gateway,那我们只能通过访问service的node port来访问服务

执行如下命令分别得到node ip和port

//port 30890 kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}' //ip 192.168.188.130 kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}'

最后访问host:ip即可访问应用的页面了

curl 192.168.188.130:30890/productpage

如果在浏览器访问这个地址,并且不断刷新你就可以看到在productpage页面展现不同了不同reviews服务的内容,这是因为还没有用Istio的控制平面去控制请求的路由

参看:

https://istio.io/latest/docs/setup/getting-started/#downloadhttps://istio.io/latest/docs/examples/bookinfo/
最新回复(0)