Isito 入门(二):Istio 的部署

本教程已加入 Istio 系列:https://istio.whuanle.cn

目录

  • 2,部署 Istio

    • 安装 Helm

    • 部署 istio-base

    • 部署 istiod

    • 部署 istio-ingressgateway

    • 清除

2,部署 Istio

在本章中,将会介绍如何在 Kubernetes 中使用 Helm 部署 Istio。

Istio 的安装方式主要有两类,第一类是基于 Kubernetes 原生集群或虚拟机的安装。另一种是基于 Azure、KubeSphere 等公私有云或 Kubernetes 管理平台上的安装。而在本章中介绍的是基于 Kubernetes 的 Helm 安装。

Istio 官网关于这两类部署方式还有很多小细节,读者可根据实际需要从官方中获取部署资料。

https://istio.io/latest/zh/docs/setup/platform-setup/

https://istio.io/latest/zh/docs/setup/install/

46a73ae4dcecbed365209d7c35185e82.png

e852c51a181a8a982b0b3ba0b50c9a64.png

安装 Helm

首先添加 Helm 官方仓库地址到 apt 源中。

curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -  
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list

然后更新包索引。

apt-get update

通过 apt 命令安装 Helm。

apt-get install helm

验证是否安装完成。

helm version

c99f36f9024e24aeae25747dbe1c7bce.png

部署 istio-base

Google 对 istio-base 的描述信息太少了,只得请教一下 ChatGPT 哥。

55ffe2189410064bf4a866718aa46c55.png

也就是说,只有先安装 istio-base,才能接着安装其它 Istio 组件。

在本文教程中,安装的 Istio 与官方使用 istiocli 部署的方式不同,本教程中是逐渐安装需要的组件,不会一次性安装完成所有组件。这样便于读者逐步了解不同的 Istio 组件的作用,了解其安装方式。

在 Helm 中 添加 Istio 的仓库。

helm repo add istio https://istio-release.storage.googleapis.com/charts
helm repo update

接着提前为 Istio 组件创建命名空间 istio-system

kubectl create namespace istio-system

接下来将使用 Helm 将 Istio 组件安装到 istio-system 命名空间中。

首先安装 Istio CRD:

helm install istio-base istio/base -n istio-system
root@k8smain:~# helm install istio-base istio/base -n istio-system
NAME: istio-base
LAST DEPLOYED: Tue May  2 07:19:15 2023
NAMESPACE: istio-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Istio base successfully installed!

To learn more about the release, try:
  $ helm status istio-base
  $ helm get all istio-base

使用 helm ls 命令验证 Istio CRD 的安装情况:

root@k8smain:~# helm ls -n istio-system
NAME      	NAMESPACE   	REVISION	UPDATED                                	STATUS  	CHART      	APP VERSION
istio-base	istio-system	1       	2023-05-02 07:19:15.792125237 +0000 UTC	deployed	base-1.17.2	1.17.2

如果 STATUS 的内容是 deployed ,说明已经正常,接下来我们进行下一步操作。

部署 istiod

Istiod( Istio Discovery) 是 Istio 服务网格的核心组件,负责控制平面功能

istiod 具备了五大功能:

  • 配置管理:负责分发和同步 Istio 配置到数据平面(Envoy 代理)。

  • 服务发现:基于 Kubernetes 的 Service 和 Endpoint 信息生成服务发现数据,这些数据用于 Envoy Proxy 的负载均衡。

  • 证书管理:为 Envoy Proxy 提供证书签发,以支持双向 TLS 身份验证。

  • 验证和转换:验证 Istio 配置资源的正确性,并将它们转换为 Envoy Proxy 可以理解的格式。

  • Envoy 代理注入:负责将 Envoy Proxy 注入到服务 Pod 中,以便进行流量拦截和路由。

简单看一下就好了,不用记。

新版本的 Istiod 将旧版本中零散的组件如 Mixer、Pilot、Citadel、Galley 等合并起来了,所以在网上看书查找资料的时候,要注意规避过旧的内容。

在 Helm 中添加 Istiod 仓库。

helm install istiod istio/istiod -n istio-system --wait

2f752391dfa83b417598c16bf41a8b51.png

验证 Istiod 的安装情况:

root@k8smain:~# helm ls -n istio-system
NAME      	NAMESPACE   	REVISION	UPDATED                                	STATUS  	CHART        	APP VERSION
istio-base	istio-system	1       	2023-05-02 07:19:15.792125237 +0000 UTC	deployed	base-1.17.2  	1.17.2     
istiod    	istio-system	1       	2023-05-02 07:21:07.791242626 +0000 UTC	failed  	istiod-1.17.2	1.17.2

检查 istiod 服务是否安装成功,其 Pod 是否正在运行:

root@k8smain:~# kubectl get deployments -n istio-system -o wide
NAME     READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES                         SELECTOR
istiod   1/1     1            1           10m   discovery    docker.io/istio/pilot:1.16.1   istio=pilot

部署 istio-ingressgateway

istio-ingressgateway (Istio Ingress Gateway )类似 Kubernetes 的 Ingress ,是 Istio 控制外部流量进入 Kubernetes 的入口组件,istio-ingressgateway 作为一个入口点,允许从服务网格外部访问服务网格内部的服务,起到了类似 nginx、apisix 等入口网关的作用。

Istio Ingress Gateway 的主要包括以下作用:

  • 接收集群外部的流量,并根据 Istio 的配置将请求路由到适当的内部服务(起到网关的作用)。

  • 提供负载均衡和流量控制功能,包括请求路由、重试、超时、熔断等(流量治理)。

  • 支持 TLS 配置,以便在流量进入服务网格之前进行加密(给域名配置证书)。

  • 支持双向 TLS 身份验证,以提高服务网格的安全性(服务间通讯)。

  • 提供 Metrics、Tracing 和 Logging 收集,以便更好地观察和监控流量(需要自己安装对应的组件)。

随便看看就好,不用记这些。

安装 istio-ingressgateway。

helm install istio-ingressgateway istio/gateway -n istio-system

da2fc235c554864bf92670b7902bda4b.png

实际上 istio-ingressgateway 是作为一个 Kubernetes Service 对外提供访问服务。

443775a471b89c3084ae5783c2f5c476.png

由于 Istio-ingressgateway 默认使用的是 LoadBalancer ,需要公有云平台支撑,不然会一直处于 <pending>,因此我们需要修改 Service ,将 istio-ingressway 的网络类型从 LoadBalancer 改成 NodePort,以便直接通过服务器的 IP 访问。

kubectl edit svc istio-ingressgateway -n istio-system

找到 type: LoadBalancer ,修改为 type: NodePort

cf3fde816755a2eca4987910e25dd4e1.png

因为 LoadBalancer 包含了 NodePort,其实不修改也行。

istio-ingressgateway 本身包含 Kubernetes Service 、Pod,通过暴露节点端口,外部可以通过节点端口将流量打入 istio-ingressgateway 的 Pod。

60bbcadb9069161605b669df6bc5cfb2.png

流量经过 Istio 分析后,流量通过负载均衡转发到其中一个 Pod。

73acbe63bb016d8eea789ff68ddbd123.png

流量进入 Istio 之后,不需要将流量转发到 Service,但是依然需要依赖 Service。Istio 会从 Service 中获取到所有的 Pod,然后 Istio 直接将流量转发到 Pod,实现熔断、故障处理等一系列任务。

经过以上步骤,我们已经安装和了解 istio-base、istiod、istio-ingressgateway 三个 Istio 基础组件,在后面的章节中,我们将开始真正实践使用 Istio ,去解决微服务中的一些问题。

清除

如果有一天不需要 Istio 了,你可以通过当前命令清空部署的 Istio 应用。

helm delete istio-ingressgateway -n istio-system
helm delete istiod -n istio-system
helm delete istio-base -n istio-system

kubectl delete namespace istio-system
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为什么使用istio:云平台令使用它们的公司受益匪浅。但不可否认的是,上云会给 DevOps 团队带来压力。为了可移植性,开发人员必须使用微服务来构建应用,同时运维人员也正在管理着极端庞大的混合云和多云的部署环境。 Istio 允许您连接、保护、控制和观察服务。从较高的层面来说,Istio 有助于降低这些部署的复杂性,并减轻开发团队的压力。它是一个完全开源的服务网格,作为透明的一层接入到现有的分布式应用程序里。它也是一个平台,拥有可以集成任何日志、遥测和策略系统的 API 接口。Istio 多样化的特性使您能够成功且高效地运行分布式微服务架构,并提供保护、连接和监控微服务的统一方法。教学内容:istio原理,envoy原理,envoy案例,envoy配置,istio crd配置,istio流量管理,istio安全配置,istio可观察性,istio策略控制,istio升级,istio常见问题,istio wasm,istio多控制面板,gateway-api,slime教学特色:a.1000多个istio实战案例,20多个envoy案例。800多个envoyfilter案例,全程已实战为主,理论相对较少,案例90%可试验b.涵盖98%以上crd字段配置c.不仅讲解yaml配置,同时结合envoy配置讲解d.不回避难点内容,深入讲解envoyfilter配置e深入讲解envoyf详细讲解额外内容,比如gateway-api,wasm,升降级,发布,灰度发布,蓝绿发布,istioctl命令,slime,多控制面板,多集群,常见问题g以一个完整案例串联所有内容h以markdown文件提供课件,内容详细,方便大家练习I有学员指出我的istio课程不够突出重点,安装80/20原则,20%内容是常用的,那我是否就讲这20%就可以了呢,其他课程确实是这么干的,他们只讲擅长的20%,我的目的不是这样的,我希望istio课程买我的一个就够了,让你全面学习istio,甚至遇到偏的问题不需要百度,课程里就有讲过,但是难免会出现一个问题,就是不够突出重点,我尽量兼顾全面的时候突出重点,讲到重点,核心功能时我会提示下。 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值