https://istio.io/latest/zh/docs/setup/install/istioctl/ (官方文档)
https://istio.io/latest/zh/docs/setup/getting-started/#dashboard (入门教程—bookinfo)
安装
检查 Istio 状态
kubectl get pods -n istio-system
开启边车
默认 Istio 不会开启 Sidecar 注入,这个需要我们手动开启。
我们可以通过给命名空间 default 打上 label,让我们部署的 Pod 自动打开 Sidecar。
kubectl label ns default istio-injection=enabled
部署测试样例bookinfo应用
https://istio.io/latest/zh/docs/examples/bookinfo/
Bookinfo 应用中的几个微服务是由不同的语言编写的。 这些服务对 Istio 并无依赖,但是构成了一个有代表性的服务网格的例子:它由多个服务、多个语言构成,并且 reviews 服务具有多个版本。
部署
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
查看资源
开启istio网关—让外部可以访问
https://istio.io/latest/zh/docs/tasks/traffic-management/ingress/ingress-control/
kubectl delete -f samples/bookinfo/networking/bookinfo-gateway.yaml
网关需要配置vitrueService才能使用
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo
spec:
hosts:
- "*"
gateways:
- bookinfo-gateway
http:
- match:
- uri:
exact: /productpage
- uri:
prefix: /static
- uri:
exact: /login
- uri:
exact: /logout
- uri:
prefix: /api/v1/products
route:
- destination:
host: productpage
port:
number: 9080
访问异常—503
解决
暂时没搞明白具体原因,跟着issuse走,解决了问题
https://github.com/istio/istio/issues/14942
kubectl -n istio-system delete pod $(kubectl -n istio-system get pod -lapp=istio-ingressgateway -ojsonpath=’{.items[0].metadata.name}’)
访问bookinfo正常
开启Istio 的控制面板服务 kiali
https://istio.io/latest/zh/docs/ops/integrations/kiali/
Istio 提供了一个基础的安装示例用于快速使用和运行 Kiali:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.12/samples/addons/kiali.yaml
解决国内镜像问题
https://www.imlc.me/zai-guo-nei-ru-he-la-qu-quay.io-de-jing-xiang
重新部署
开启kali web UI
istioctl dashboard kiali
如果zsh找不到istioctl,则
~/istio-1.12.2/bin/istioctl dashboard kiali
网络可视化—通过kiali观测
https://istio.io/latest/zh/docs/tasks/observability/kiali/
通过浏览器访问服务,可以实时在kiali看到网络流量拓扑图
下图可以看到流量通过istio-gateway —> vitrue service —> sidecar —> 实际的应用服务容器