当前位置:科技动态 > Isito入门(二):Istio的部署

Isito入门(二):Istio的部署

  • 发布:2023-10-05 16:30

本教程已添加至Istio系列:https://www.sychzs.cn

目录
  • 2,部署Istio
      • 安装Helm
      • 部署istio-base
      • 部署istiod
      • 部署istio-ingressgateway
      • clear

2,部署 Istio

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

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

Istio官网有很多关于这两类部署方式的小细节。读者可以根据实际需要从官网获取部署信息。

https://www.sychzs.cn/latest/en/docs/setup/platform-setup/

https://www.sychzs.cn/latest/zh/docs/setup/install/

安装头盔

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

curl https://www.sychzs.cn/helm/signing.asc | sudo apt-key 添加 -
echo "deb https://www.sychzs.cn/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list

然后更新包索引。

apt-get 更新

通过 apt 命令安装 Helm。

apt-get 安装 helm

验证安装是否完成。

头盔版

部署istio-base

Google关于istio-base的描述信息太少了,只好向ChatGPT兄求助。

也就是说,你只能先安装istio-base,然后才能安装其他Istio组件。

本教程中安装的Istio与官方使用istiocli的部署方式不同。在本教程中,所需的组件将逐步安装,不会一次性安装所有组件。这使得读者更容易逐步了解不同 Istio 组件的作用以及如何安装它们。

在 Helm 中添加 Istio 存储库。

helm 存储库添加 istio https://www.sychzs.cn/charts舵回购更新

然后提前为Istio组件创建命名空间istio-system

kubectl 创建命名空间 istio-system

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

首先安装 Istio CRD:

helm 安装 istio-base istio/base -n istio-system
root@k8smain:~# helm install istio-base istio/base -n istio-system
名称:istio-base
最后部署:2023 年 5 月 2 日星期二 07:19:15
命名空间:istio-system
状态:已部署
修订:1
测试套件:无
笔记:
Istio 基础安装成功!

要了解有关该版本的更多信息,请尝试:
  $ helm 状态 istio-base
  $ helm 获取所有 istio-base

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

root@k8smain:~# helm ls -n istio-system
名称 命名空间 修订版本 更新的状态图表 应用程序版本
istio-base istio-system 1 2023-05-02 07:19:15.792125237 +0000 UTC 部署 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 Proxy Injection:负责将 Envoy Proxy 注入到服务 Pod 中,进行流量拦截和路由。

简单看一下就可以了,不用记住。

新版本的 Istiod 合并了旧版本中分散的 Mixer、Pilot、Citadel、Galley 等组件。,所以在看书、上网查找资料时,要小心避开旧内容。

在 Helm 中添加 Istiod 存储库。

helm 安装 istiod istio/istiod -n istio-system --wait

验证 Istiod 安装:

root@k8smain:~# helm ls -n istio-system
名称 命名空间 修订版本 更新的状态图表 应用程序版本
istio-base istio-system 1 2023-05-02 07:19:15.792125237 +0000 UTC 部署 base-1.17.2 1.17.2
istiod istio-system 1 2023-05-02 07:21:07.791242626 +0000 UTC 失败 istiod-1.17.2 1.17.2

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

root@k8smain:~# kubectl 获取部署 -n istio-system -o Wide
名称已准备好最新可用年龄容器图像选择器
istiod 1/1 1 1 10m 发现 www.sychzs.cn/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 安装 istio-ingressgateway istio/gateway -n istio-system

实际上,istio-ingressgateway 作为 Kubernetes Service 来提供外部访问服务。

由于 Istio-ingressgateway 默认使用 LoadBalancer,因此需要公有云平台的支持,否则会一直处于,所以我们需要修改 Service,从 LoadBalancer 更改 istio-ingressway 的网络类型到NodePort,这样就可以直接通过服务器IP访问。

 kubectl 编辑 svc istio-ingressgateway -n istio-system

找到类型:LoadBalancer并修改为类型:NodePort

因为LoadBalancer包含NodePort,所以不修改也没关系。

istio-ingressgateway 本身包含 Kubernetes Service 和 Pod。通过暴露节点端口,外部流量可以通过节点端口驱动到 istio-ingressgateway 的 Pod 中。

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

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

经过上述步骤,我们已经安装并了解了istio-base、istiod、istio-ingressgateway这三个Istio基本组件。在接下来的章节中,我们将开始实际练习使用 Istio 来解决微服务中的一些问题。

清晰

如果有一天您不再需要 Istio,您可以通过当前命令清除已部署的 Istio 应用程序。

helm 删除 istio-ingressgateway -n istio-system
helm 删除 istiod -n istio-system
helm 删除 istio-base -n istio-system

kubectl 删除命名空间 istio-system

相关文章

最新资讯

热门推荐