istio学习笔记5:环境搭建和安装

发布时间:2023-06-02 16:30

所有步骤都是从官网例子整理出来的:
https://istio.io/latest/zh/docs/tasks/observability/logs/access-log/

安装istio

先下载istio
\"在这里插入图片描述\"
然后转到 Istio 包目录
\"在这里插入图片描述\"
\"在这里插入图片描述\"
将 istioctl 客户端加入搜索路径
\"在这里插入图片描述\"
使用istioctl进行安装(这里采用的是 demo 配置组合)

$ istioctl install --set profile=demo –y

\"istio学习笔记5:环境搭建和安装_第1张图片\"
给命名空间添加标签

$ kubectl label namespace default istio-injection=enabled

\"在这里插入图片描述\"

部署示例应用

部署官网bookinfo的例子

$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

yml文件
https://raw.githubusercontent.com/istio/istio/release-1.12/samples/bookinfo/platform/kube/bookinfo.yaml

查看pod和service,都有了
\"istio学习笔记5:环境搭建和安装_第2张图片\"

检查并返回页面标题

$ kubectl exec \"$(kubectl get pod -l app=ratings -o jsonpath=\'{.items[0].metadata.name}\')\"  -c ratings -- curl -s productpage:9080/productpage | grep -o “<title>.*</title>

这里bash脚本比较长,拆分来看:

$ kubectl exec (执行容器)
\"$(kubectl get pod -l app=ratings -o jsonpath=\'{.items[0].metadata.name}\')\"
-c ratings (容器名)
-- curl -s productpage:9080/productpage | grep -o “.*(bash)

执行结果如下
\"在这里插入图片描述\"

该脚本用于验证应用是否已在集群中运行,并已提供网页服务

对外开放应用程序

创建 Istio 入站网关(Ingress Gateway), 它会在网格边缘把一个路径映射到路由
1.把应用关联到 Istio 网关:

$ kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

yml文件:
https://raw.githubusercontent.com/istio/istio/release-1.12/samples/bookinfo/networking/bookinfo-gateway.yaml

\"在这里插入图片描述\"
2.确保配置文件没有问题:

$ istioctl analyze

\"在这里插入图片描述\"

确定入站 IP 和端口

判断你的 Kubernetes 集群环境是否支持外部负载均衡:

$ kubectl get svc istio-ingressgateway -n istio-system

\"在这里插入图片描述\"
如果 EXTERNAL-IP 的值为 (或者一直是 状态), 则你的环境则没有提供可作为入站流量网关的外部负载均衡。 在这个情况下,你还可以用服务(Service)的 节点端口( NodePort) 访问网关。

设置入站 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}\')

有些环境需要使用主机名访问

$ export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath=\'{.status.loadBalancer.ingress[0].hostname}\')

然后是其他平台的环境配置:
\"istio学习笔记5:环境搭建和安装_第3张图片\"

验证外部访问

1.设置环境变量 GATEWAY_URL:

$ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT

2.确保 IP 地址和端口均成功的赋值给了环境变量:

$ echo \"$GATEWAY_URL\" 

192.168.99.100:32194(这是例子返回的url,具体看本机)
3.获取该应用

$ echo \"http://$GATEWAY_URL/productpage\"

查看Kiali仪表板

Istio和几个遥测应用做了集成。 遥测能帮你了解服务网格的结构、展示网络的拓扑结构、分析网格的健康状态。
仪表板包括Kiali 、 Prometheus、 Grafana、 还有 Jaeger,例子里使用Kiali

1.安装 Kiali 和其他插件,等待部署完成。

$ kubectl apply -f samples/addons 
$ kubectl rollout status deployment/kiali -n istio-system

2.访问 Kiali 仪表板。

$ istioctl dashboard kiali

\"istio学习笔记5:环境搭建和安装_第4张图片\"

在左侧的导航菜单,选择 Graph ,然后在 Namespace 下拉列表中,选择 default 。
Kiali 仪表板展示了网格的概览、以及 Bookinfo 示例应用的各个服务之间的关系。 它还提供过滤器来可视化流量的流动。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号