K8s:渐进式入门服务网格 Istio

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s:渐进式入门服务网格 Istio相关的知识,希望对你有一定的参考价值。

写在前面


  • 分享一些 Istio 的学习笔记
  • 博文内容涉及:
    • istio 下载安装
    • 一个 Demo 运行
    • 什么是 istio,服务网格等概念介绍
    • istio 架构组成,应用场景等
  • 理解不足小伙伴帮忙指正

对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》


关于 服务网格是什么,istio 是什么,这里先不讲理论,安装下实体会下, istio 提供一些很不错的 Demo 给我们学习,个人感觉 istio 的部分功能是和 Spring Cloud Gateway 有重合的地方。只不过解决方式考虑的角度不通,Spring Cloud Gateway 是面向 Java 微服务治理的解决方案, istio 是非侵入式的,与语言无关,更多的是从部署角度考虑,属于基础设施的角度来解决微服务的服务治理问题。

这是一种发展趋势:服务治理业务逻辑,编写语言 逐步解耦,服务治理能力下沉到 基础设施,服务网格以基础设施的方式提供无侵入的连接控制、安全、可监测性、灰度发布等治理能力,如华为 ASM、谷歌 GCP。

下载安装

下载

https://istio.io/latest/docs/setup/getting-started/#download

这里如果需要加代理可以加一下代理(需要有科学上网之类的工具) -x 192.168.26.1:49757

┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio]
└─$curl  -L https://istio.io/downloadIstio | sh -

或者其他机器下载上传下

PS W:\\Downloads> scp .\\istio-1.16.2-linux-amd64.tar.gz  root@192.168.26.100:~/ansible/istio/
root@192.168.26.100s password:
istio-1.16.2-linux-amd64.tar.gz                                                                                                                                                100%   24MB 109.2MB/s   00:00
PS W:\\Downloads>

解压安装包

┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio]
└─$ls
istio-1.16.2-linux-amd64.tar.gz
┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio]
└─$tar -zxvf istio-1.16.2-linux-amd64.tar.gz
┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio/istio-1.16.2]
└─$ls
bin  LICENSE  manifests  manifest.yaml  README.md  samples  tools
┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio/istio-1.16.2]
└─$

安装中常用的目录有两个:

  • 示例应用程序 samples/
  • 客户端二进制 文件 bin/

配置 istio 为可执行,测试

┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio/istio-1.16.2/bin]
└─$ls
istioctl
┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio/istio-1.16.2/bin]
└─$cd ..
┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio/istio-1.16.2]
└─$mv bin/istioctl /usr/local/bin/
┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio/istio-1.16.2]
└─$istioctl  version
no running Istio pods in "istio-system"
1.16.2

安装

使用 istioctl 工具安装 istio,可用通过 --help 查看相关的参数

┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio]
└─$istioctl install --help
┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio]
└─$istioctl install --set profile=demo --skip-confirmation

在安装的时候我们可以选择安装配置文件,profile=demo这里我们选择 Demo

┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio]
└─$istioctl install --set profile=demo --skip-confirmation
✔ Istio core installed
✔ Istiod installed
✔ Ingress gateways installed
✔ Egress gateways installed
✔ Installation complete
Making this installation the default for injection and validation.

Thank you for installing Istio 1.16.  Please take a few minutes to tell us about your install/upgrade experience!  https://forms.gle/99uiMML96AmsXY5d6
┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio]
└─$

使用 Demo 配置文件安装 Istio,它为我们提供了大多数用于评估和培训的功能,其他配置文件

  • Default : 建议用于生产部署并配置 IstioOperatorAPI 的默认设置。默认情况下执行大多数规则,您可以根据您的要求自定义配置。
  • Demo — 您可以使用它来尝试 Istio 和学习,尤其是当您使用 Minikube 或资源有限的设置时。对于运行示例应用程序,这是最合适的配置文件,我们将在演示中使用它。
  • Minimal —它包含最少量的功能,仅用于支持流量管理。
  • Remote — 如果你正在运行多个 Kubernetes 集群并且想使用 Istio 来管理多集群环境,那么这是最合适的配置文件。它为您提供了一个共享的控制平面,可以从一个地方管理您的所有集群
  • Empty — 这个配置文件没有部署任何东西,如果你想自定义 Istio 并从一个基本配置文件开始,你可以使用它
  • Separate — 这已被弃用且不推荐,它仅用于支持遗留功能。

添加命名空间标签,指示 Istio 自动注入 Envoy

┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio]
└─$kubectl label namespace default istio-injection=enabled
namespace/default labeled

测试配置

现在已经安装了 Istio 并将其配置为自动将 sidecar 容器(或者说 proxy 容器)注入到您的默认命名空间,安装示例 Book Info 应用程序并查看 Istio 是否正常工作

有四个微服务:details、ratings、reviewsproductpage。 reviews 微服务包含三个版本的 pod,每个版本都标记为 v1、v2 和 v3。其余微服务只有一个版本 (v1)

查看 YAML 文件信息,这里为了方便我们找了一个之前的插件来看下

┌──[root@vms100.liruilongs.github.io]-[~/ansible/istio]
└─$kubectl-score istio-1.16.2/samples/bookinfo/platform/kube/bookinfo.yaml | grep v1
apps/v1/Deployment details-v1                                                 

以上是关于K8s:渐进式入门服务网格 Istio的主要内容,如果未能解决你的问题,请参考以下文章

K8S + ISTIO 金丝雀部署的例子

在KubeSphere启动服务网格Istio并解决解决ContainerCreating问题

在KubeSphere启动服务网格Istio并解决解决ContainerCreating问题

在KubeSphere启动服务网格Istio并解决解决ContainerCreating问题

使用 Flux+Flagger+Istio+Kubernetes 实战 GitOps 云原生渐进式(金丝雀)交付

如何利用Kubernetes和Istio实现蓝绿部署?