istio 部署案例应用
1.部署 Bookinfo
示例应用
cd /home/istio-1.17.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
注:如果istio的安装目录已经移除,可以在这个链接下载bookinfo.yaml资源文件。https://raw.githubusercontent.com/istio/istio/release-1.17/samples/bookinfo/platform/kube/bookinfo.yaml
2.当每个 Pod 准备就绪时,Istio 边车将伴随应用一起部署
kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE details ClusterIP 10.0.0.63 <none> 9080/TCP 20h kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 9d nginx NodePort 10.0.0.172 <none> 80:41194/TCP 7d20h productpage ClusterIP 10.0.0.190 <none> 9080/TCP 20h ratings ClusterIP 10.0.0.214 <none> 9080/TCP 20h reviews ClusterIP 10.0.0.76 <none> 9080/TCP 20h kubectl get pods NAME READY STATUS RESTARTS AGE details-v1-6997d94bb9-tqwxs 2/2 Running 0 13m nginx-748c667d99-klqpt 1/1 Running 3 (20h ago) 2d1h productpage-v1-d4f8dfd97-mwmwz 2/2 Running 2 (20h ago) 20h ratings-v1-b8f8fcf49-kj5w7 2/2 Running 2 (20h ago) 20h reviews-v1-5896f547f5-5dn8w 2/2 Running 0 13m reviews-v2-5d99885bc9-pkwmp 2/2 Running 2 (20h ago) 20h reviews-v3-589cb4d56c-l4mvz 2/2 Running 0 13m
3.确认上面的操作都正确之后,运行下面命令,通过检查返回的页面标题来验证应用是否已在集群中运行,并已提供网页服务:
kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>" <title>Simple Bookstore App</title>
4.此时,BookInfo 应用已经部署,但还不能被外界访问。 要开放访问,您需要创建 Istio 入站网关(Ingress Gateway), 它会在网格边缘把一个路径映射到路由。
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
5.确定入站 IP 和端口
kubectl get svc istio-ingressgateway -n istio-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.0.0.34 192.168.64.245 15021:32980/TCP,80:48892/TCP,443:45956/TCP,31400:30658/TCP,15443:33111/TCP 2d18h
设置入站 IP 地址和端口:
export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}') export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}') export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].port}')
设置环境变量 GATEWAY_URL
:
export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
确保 IP 地址和端口均成功地赋值给了环境变量:
echo "$GATEWAY_URL" 192.168.64.245:80
6.验证外部访问
运行下面命令,获取 Bookinfo 应用的外部访问地址。
echo "http://$GATEWAY_URL/productpage" http://192.168.64.245:80/productpage
将输出地址复制粘贴到浏览器并访问,确认 Bookinfo 应用的产品页面是否可以打开。
7.安装仪表板
Istio 和几个遥测应用做了集成。 遥测能帮您了解服务网格的结构、展示网络的拓扑结构、分析网格的健康状态。
使用下面说明部署 Kiali 仪表板、 以及 Prometheus、 Grafana、 还有 Jaeger。
安装 Kiali 和其他插件,等待部署完成。
kubectl apply -f samples/addons kubectl rollout status deployment/kiali -n istio-system deployment "kiali" successfully rolled out
访问 Kiali 仪表板。
istioctl dashboard kiali
修改暴露方式
kubectl edit svc kiali -n istio-system
将 type: ClusterIP 修改为 type: LoadBalancer,然后保存退出
作者:奇
出处:https://www.cnblogs.com/fanqisoft/p/17167700.html
版权:本作品采用「本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2019-03-01 Linux RPM、YUM、APT包管理工具
2019-03-01 Linux服务管理
2019-03-01 Linux进程管理
2019-03-01 Linux网络配置