当前位置:首页>Linux>Linux Istio 安装部署指南

Linux Istio 安装部署指南

  • 2026-10-21 13:28:36
Linux Istio 安装部署指南
在Linux上部署Istio服务网格,主要包括安装核心控制平面、注入Sidecar代理和配置网络入口几个关键步骤。整个过程通常只需15-30分钟,具体时长取决于你的网络和集群环境。
下面为你整理了基于官方推荐流程的部署步骤和要点。
Istio 是一个开源的服务网格(Service Mesh)平台,用于连接、保护、控制和观测微服务。在 Linux 环境下部署 Istio 通常是在 Kubernetes 集群中进行的。以下是详细的部署步骤与关键要点:

一、前置条件

Linux
操作系统(如 Ubuntu 20.04/22.04、CentOS 7/8 等)
已安装并配置好 Kubernetes 集群(推荐 v1.23+)
kubectl
已配置并可访问集群
Helm
(可选,用于 Helm 安装方式)
注意:Istio 要求集群支持 MutatingAdmissionWebhook 和 ValidatingAdmissionWebhook,默认在大多数发行版中已启用。

二、下载 Istio

bash
编辑
#下载最新稳定版(以1.23.x为例)
curl -L https://istio.io/downloadIstio | sh -
#进入目录
cd istio-1.23.x
#将istioctl加入PATH
export PATH=$PWD/bin:$PATH

三、安装 Istio

方法 1:使用istioctl(推荐)

1. 查看可用配置文件(Profiles)

bash
编辑
istioctl profile list
常见 Profile:
default
:标准功能(含遥测、安全、网关等)
demo
:适合演示,开启所有功能(包括 Kiali、Prometheus、Grafana、Jaeger)
minimal
:仅控制平面
remote
:用于多集群

2. 安装(以 demo 为例)

bash
编辑
istioctl install --set profile=demo -y
此命令会自动创建 istio-system 命名空间,并部署控制平面组件(Istiod、Ingress/Egress Gateway 等)。

3. 验证安装

bash
编辑
kubectl get pods -n istio-system
应看到如下组件(demo 模式):
istiod-*
istio-ingressgateway-*
istio-egressgateway-*
(若启用插件)grafana-*, kiali-*, prometheus-*, jaeger-*

方法 2:使用 Helm(高级用户)

bash
编辑
helm repo add istio https://istio-release.storage.googleapis.com/charts
helm repo update
kubectl create namespace istio-system
helm install istio-base istio/base -n istio-system
helm install istiod istio/istiod -n istio-system --wait
helm install istio-ingressgateway istio/gateway -n istio-system
插件需单独安装(如 Kiali、Prometheus)。

📝版本选择与生产建议

部署时还需注意版本差异和生产环境要求:

事项

说明

版本差异

旧版本(如1.8)使用 istioctl  manifest apply 命令,新版本(1.21)使用 istioctl install,请根据版本调整命令。

生产配置

demo配置档仅用于评估。生产环境请使用default或minimal档,并仔细调整资源限制、启用双向TLS等。

镜像仓库

在生产中,你可能需要修改配置文件(如manifests/profiles/default.yaml),将镜像地址指向私有仓库。

四、启用 Sidecar 自动注入

为命名空间打标签,启用自动注入:
bash
编辑
kubectl create namespace my-app
kubectl label namespace my-app istio-injection=enabled
此后,在该命名空间中部署的 Pod 会自动注入 Envoy sidecar。

五、部署示例应用(Bookinfo)

bash
编辑
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml -n my-app
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml -n my-app
获取 Ingress Gateway 地址:
bash
编辑
kubectl get svc istio-ingressgateway -n istio-system
通过 http:///productpage 访问。

六、可观测性组件(demo profile 中已包含)

Kiali
(服务拓扑):
bash
编辑
kubectl port-forward svc/kiali -n istio-system 20001:20001
#浏览器访问http://localhost:20001
Prometheus
:指标采集
Grafana
:仪表盘
Jaeger
:分布式追踪

七、卸载 Istio

bash
编辑
istioctl uninstall --purge
kubectl delete namespace istio-system
注意:卸载不会删除已注入 sidecar 的应用,需手动清理。

八、生产环境建议

使用 default 或自定义 profile
启用 mTLS(STRICT 或 PERMISSIVE)
配置资源限制(CPU/Memory)
使用外部证书管理(如 cert-manager)
监控 Istiod 和 Gateway 的性能
多集群/多网络场景需规划东西向流量

九、常见问题排查

Sidecar
未注入:检查命名空间标签、MutatingWebhook 是否正常
503/504
错误:检查 DestinationRule、VirtualService 配置
Istiod CrashLoopBackOff
:检查证书、DNS 解析、资源不足
Ingress
无法访问:确认 LoadBalancer IP 或 NodePort 配置
#linux系统运维
#lstio
#系统运维

最新文章

随机文章