news 2026/8/5 8:15:20

第三篇:《在 Kubernetes 中部署 Istio:安装、配置与 Sidecar 注入》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第三篇:《在 Kubernetes 中部署 Istio:安装、配置与 Sidecar 注入》

理解了 Istio 的架构之后,是时候亲手搭建一个 Istio 环境了。在 Kubernetes 集群中安装 Istio 有多种方式,最常用的是 istioctl 命令行工具和 Helm。本文将详细介绍使用 istioctl 安装 Istio 的完整流程,涵盖环境准备、安装配置文件的选型、命名空间 Sidecar 自动注入的配置,以及通过 Bookinfo 示例应用验证 Istio 的核心功能。跟着操作,你将拥有一个可用的 Istio 服务网格环境。

一、环境准备
在安装 Istio 之前,需要确保以下条件已满足:

Kubernetes 集群:一个可用的 Kubernetes 集群(版本 1.19+),且 kubectl 已配置好与集群的通信。

资源充足:Istio 控制平面和 Sidecar 代理需要一定的计算资源。建议集群至少分配 4GB 内存和 2 个 CPU 核心。

💡 本地开发建议:如果你没有现成的 Kubernetes 集群,可以使用 Minikube 或 Kind 在本地快速搭建一个测试环境。Minikube 启动命令:minikube start --cpus=4 --memory=8192。

二、使用 istioctl 安装 Istio
istioctl 是 Istio 官方提供的命令行工具,用于安装、配置和调试 Istio 服务网格。

2.1 下载 istioctl

# 下载最新版本的 Istiocurl-Lhttps://istio.io/downloadIstio|sh-# 进入 Istio 包目录cdistio-1.23.0# 将 istioctl 添加到 PATHexportPATH=$PWD/bin:$PATH

💡 版本选择:建议使用最新的稳定版本。你可以访问 Istio 官方发布页面查看当前最新版本号,并替换上述命令中的版本号。

2.2 验证 istioctl

istioctl version

如果安装成功,会显示客户端版本信息。

2.3 安装 Istio
Istio 提供了多种安装配置文件(Profile),每个 Profile 针对不同的使用场景进行了预配置:

Profile 说明 适用场景
demo 功能齐全,资源消耗适中,包含 Jaeger、Grafana、Kiali 等附加组件 学习与测试(推荐)
default 核心功能,不含附加组件 生产环境的最小化部署
minimal 仅包含控制平面,不含 Ingress/Egress Gateway 自定义部署的基础
remote 用于多集群架构中的远程集群 多集群部署
对于学习和测试,推荐使用 demo Profile:

istioctlinstall--setprofile=demo-y

该命令会在 Kubernetes 集群的 istio-system 命名空间中部署 Istio 控制平面(istiod)和 Ingress Gateway。

⚠️ 生产环境建议:生产环境不建议直接使用 demo Profile。建议从 default Profile 开始,根据实际需求逐步开启功能,并通过 IstioOperator CRD 进行声明式配置管理。

2.4 验证安装

# 检查 Istio 控制平面 Pod 是否正常运行kubectl get pods-nistio-system# 检查 Istio 服务kubectl get svc-nistio-system

预期输出应包含 istiod-xxx Pod(Running)和 istio-ingressgateway Service。

三、配置 Sidecar 自动注入
要让 Istio 接管服务的流量,需要为每个 Pod 注入 Envoy Sidecar 容器。Istio 提供了自动注入机制,大大简化了这一过程。

3.1 为命名空间启用自动注入
为需要启用服务网格的命名空间添加 istio-injection=enabled 标签:

# 为 default 命名空间启用自动注入kubectl label namespace default istio-injection=enabled

💡 命名空间隔离:建议将启用服务网格的服务放在独立的命名空间中,例如 prod、staging 等。通过命名空间标签,可以精细控制哪些服务加入网格。

3.2 验证自动注入是否生效
当命名空间被正确标记后,新创建的 Pod 将自动注入 Envoy Sidecar 容器。

# 创建一个测试 Podkubectl run nginx--image=nginx:alpine--restart=Never# 查看 Pod 中的容器kubectl get pod nginx-ojsonpath='{.spec.containers[*].name}'

预期输出应包含 nginx 和 istio-proxy 两个容器。如果没有 istio-proxy,可能是 Pod 创建时命名空间尚未启用注入,需要重启 Pod。

3.3 手动注入(备选方案)
如果不想为整个命名空间启用自动注入,也可以使用 istioctl kube-inject 手动为 Deployment YAML 注入 Sidecar:

istioctl kube-inject-fdeployment.yaml|kubectl apply-f-

💡 生产建议:生产环境推荐使用自动注入,因为它与 GitOps 工作流更契合,且不需要修改原始的 Deployment YAML。

四、部署 Bookinfo 示例应用
Bookinfo 是 Istio 官方提供的示例应用,用于演示服务网格的各项功能。它是一个简单的图书信息展示系统,由四个微服务组成。

4.1 部署 Bookinfo 应用
确保 default 命名空间已启用自动注入后,部署 Bookinfo 应用:

# 应用 Bookinfo 部署清单kubectl apply-fsamples/bookinfo/platform/kube/bookinfo.yaml

4.2 验证部署

# 查看所有 Pod,每个 Pod 应有 2 个容器(业务容器 + istio-proxy)kubectl get pods# 查看服务kubectl get services

预期输出应包含 details、productpage、ratings、reviews 四个服务,以及各自对应的 Pod。

4.3 配置 Ingress Gateway
为了让外部能够访问 Bookinfo 应用,需要配置 Istio Ingress Gateway:

# 应用 Ingress Gateway 配置kubectl apply-fsamples/bookinfo/networking/bookinfo-gateway.yaml

4.4 访问 Bookinfo 应用
方式一:端口转发(本地测试)

kubectl port-forward svc/istio-ingressgateway-nistio-system8080:80

然后访问 http://localhost:8080/productpage。

方式二:获取外部 IP

如果集群支持 LoadBalancer,可以直接获取 Ingress Gateway 的外部 IP:

# 获取 Ingress Gateway 的外部 IPkubectl get svc istio-ingressgateway-nistio-system

然后访问 http://<EXTERNAL_IP>/productpage。

4.5 验证流量管理
Bookinfo 应用的 reviews 服务有三个版本(v1、v2、v3),默认情况下请求会在这三个版本之间轮询。可以观察到每次刷新页面时,“Reviews”部分的显示会变化(v1 无星标、v2 有黑色星标、v3 有红色星标),这证明了 Istio 的负载均衡功能正在工作。

五、卸载 Istio
如果需要清理 Istio 环境:

# 卸载 Istioistioctl uninstall--purge-y# 删除 Istio 命名空间kubectl delete namespace istio-system# 删除 Bookinfo 应用kubectl delete-fsamples/bookinfo/platform/kube/bookinfo.yaml

六、小结
安装方式:istioctl install 是最快捷的安装方式,demo Profile 适合学习测试。

Sidecar 注入:为命名空间添加 istio-injection=enabled 标签即可启用自动注入。

Bookinfo 示例:官方示例应用是验证 Istio 功能的最佳起点。

验证要点:检查 Pod 中是否包含 istio-proxy 容器,以及 Ingress Gateway 是否正常工作。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/5 8:14:29

花书学习Day 7:Kaggle预测房价

因为需要使用Kaggle的房屋价格数据集&#xff0c;所以先写一个download函数将数据集下载到本地&#xff1a;import hashlib import os import tarfile import zipfile import requests DATA_HUB dict() #用于存放数据集名称映射到(数据集url,sha-1密钥) DATA_URL http://d2l-…

作者头像 李华
网站建设 2026/8/5 8:13:10

基于LangChain构建DeepSeek V4与Claude Code串联AI编程工作流

1. 项目概述&#xff1a;为什么要把DeepSeek V4和Claude Code连起来&#xff1f; 最近在AI编程这个圈子里&#xff0c;一个挺有意思的玩法开始流行起来&#xff1a;把不同的大模型“串”起来用&#xff0c;让它们各司其职&#xff0c;发挥各自的优势。我这次折腾的就是把DeepSe…

作者头像 李华
网站建设 2026/8/5 8:08:28

负反馈电路稳定性分析:从波特图到实战设计陷阱

1. 项目概述&#xff1a;重新审视负反馈的稳定性分析在电子电路设计&#xff0c;尤其是模拟电路和运算放大器应用领域&#xff0c;负反馈是一个既基础又核心的概念。它被用来改善增益精度、扩展带宽、降低非线性失真&#xff0c;并提高输入阻抗或降低输出阻抗。然而&#xff0c…

作者头像 李华
网站建设 2026/8/5 8:08:01

免费开源的QtScrcpy:跨平台Android投屏控制终极指南

免费开源的QtScrcpy&#xff1a;跨平台Android投屏控制终极指南 【免费下载链接】QtScrcpy Android real-time display control software 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy 你是否曾经需要在电脑上操作手机&#xff0c;却找不到合适的工具&am…

作者头像 李华
网站建设 2026/8/5 8:04:31

2026年7月北京市门头沟区二手房价格深度分析报告

一、报告背景与数据说明本报告基于2026年7月北京市门头沟区实际成交案例&#xff0c;结合链家、我爱我家等主流中介平台的公开成交记录&#xff0c;对门头沟区二手房市场进行深度分析。报告覆盖门头沟区主要板块&#xff0c;包括大峪、城子、永定、龙泉、军庄、潭柘寺等区域&am…

作者头像 李华
网站建设 2026/8/5 8:01:43

软考架构师软件工程(二):逆向工程、净室、需求与建模4大核心考点(附速记口诀+做题技巧)

本文为软件工程系列第2篇&#xff0c;整理了完整的软考高级备考资料包&#xff0c;文末免费获取 前言 软件工程在系统架构设计师考试中重要程度仅次于架构设计类章节&#xff0c;综合部分分值约十几分至近20分&#xff0c;案例分析及论文写作也可能涉及。本系列将软件工程14大…

作者头像 李华