官网:istio.io
下载isitoctl客户端:
cd /usr/local/src
# 下载
curl -L https://istio.io/downloadIstio | sh -
# 命令软链接
ln -s /usr/local/istio-1.17.2 /usr/local/istio
#export PATH="$PATH:/usr/local/istio/bin"
istio 目录是 Istio 控制面(Control Plane)的安装目录,其中包含了 Istio 的所有核心组件及配置文件。
具体来说
bin 包含 Istio 控制平面组件(例如 istioctl 工具)的可执行文件。目录中包含了一些 Istio 工具的二进制文件,例如 istioctl 和 pilot-agent。
manifests 目录中包含了 Istio 的 Kubernetes manifest 文件,这些文件定义了 Istio 控制面所需的各个 Kubernetes 资源对象,例如 Service、Deployment、ConfigMap 等等。这些文件可以用于在 Kubernetes 集群上部署 Istio 控制面。
samples 目录中包含了一些使用 Istio 实现常见应用程序模式的示例文件,例如 Bookinfo 应用程序示例。
tools 目录中包含了一些辅助 Istio 安装、配置和部署的脚本和工具。
LICENSE:Istio 软件的许可证。
manifest.yaml:Istio 所有 Kubernetes manifeset 的主文件。
README.md:提供 Istio 安装指南、版本说明、升级和其他重要信息
因此,可以认为 istio 目录是 Istio 控制面的数据目录,其中包含了 Istio 控制面所需的所有数据和文件。
列出可用的 Istio 配置文件(profile)
istioctl profile list
Istio configuration profiles:
ambient
default
demo
empty
external
minimal
openshift
preview
remote
ambient:适用于轻量级应用程序,该配置文件启用了最小量的 Istio 功能,并将剩余的功能留给 Kubernetes 和 Envoy 自己来处理。
default:这是 Istio 的默认配置文件,它旨在提供一组通用的配置选项,以便在不需要进行大量自定义的情况下使用 Istio。
demo:适用于演示和快速测试,该配置文件启用了所有功能并设置了较强的安全性和可观察性。
empty:该配置文件仅启用 Istio 的基本功能,并禁用所有其他功能。
external:适用于在 Istio 网格之外运行的服务。该配置文件启用了仅与 Istio Service Mesh 集成必需的功能。
minimal:这是一个非常精简的配置文件,适用于只需要少量 Istio 功能的环境。
openshift:专门针对 OpenShift 平台进行了优化的配置文件,包括特定于平台的插件和适当的默认值。
preview:提供一组实验性质的功能,以便用户尝试新功能并提供反馈。
remote:适用于远程 Istio 控制平面的配置文件,用于在 Kubernetes 集群之间进行多集群部署。
列出某一个配置档案的内容
istioctl profile dump default
istioctl profile dump default > /root/default.yml
部署isito控制平台
istioctl apply --set profile=default -y # 等default可以不用写
#istioctl apply -f default.yml -y
查看pods
这两个 Pod 分别是 Istio 中的核心组件:
istiod Pod:负责 Istio 的控制平面,包括服务发现、路由规则配置等。它还托管了 Istio 的 Web 控制台。
istio-ingressgateway Pod:Istio 入口网关,用于将外部流量引入到 Kubernetes 集群中,并为它们提供 Istio 服务网格中的功
能,比如流量管理、安全、追踪和可观察性等。
[root@k8s-master01 manifests]# kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
istio-ingressgateway-5555ccdc98-7dcnl 1/1 Running 0 8m46s
istiod-7fd9d6dd48-bfvtn 1/1 Running 0 10m
数据平面配置自动注入sidecar
数据平面会在对应命名空间的pod都会被自动注入sidcar
kubectl label namespace default istio-injection=enabled
kubectl get namespace default --show-labels
验证部署
istioctl verify-install -f /root/default.yml
部署istio集成的第三方组件
addons 目录是 Istio 服务网格的扩展组件目录,它包含了一些与 Istio 集成的第三方组件。其中:
extras: 包含额外的示例配置文件。
grafana.yaml: Istio 的监控组件 Grafana 的配置文件。
jaeger.yaml: 分布式跟踪系统 Jaeger 的配置文件。
kiali.yaml: Istio 的可观察性控制台 Kiali 的配置文件。
prometheus.yaml: Istio 的监控组件 Prometheus 的配置文件。
README.md: 对这个目录及其内容的简单描述文档。
这些组件可以帮助用户更好地管理和监控 Istio 中的服务,优化其性能并提高可靠性
cd /usr/local/istio/samples/addons
kubectl apply -f ./
kubectl get pods -n istio-system
kubectl get crds
kubectl api-resources --api-group=gateways.networking.istio.io
御载
istioctl x uninstall --purge# 卸载控制平面组件
调整网格级别控制平面的配置:支持基于已经部署调整配置
istioctl apply/install
部署档案对应存在Kubernetes原生格式的资源配置
istioctl manifest generate --set profile=demo | kubectl apply -f -
如果您看到一个业务容器旁边有一个Sidecar代理,那么这个代理很可能就是istio-proxy。
Istio系统组件:
控制平面:
istiod:
pilot, galley, citedal
部署方法:istioctl, istio operator, helm
数据平面:
Gateway:
istio-ingressgateway
istio-egressgateway
istio-eastwestgateway
Sidecar:
istio-proxy:二次开发的envoy
手工注入:istioctl kube-inject
自动注入:在目标namespace上设定label
istio-injection=enabled
部署:随微服务部署启用Sidecar自动注入
部署方法:
istioctl:手动
istio operator:部署Operator
IstioOperator CRD
helm
Charts