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、reviews
和productpage
。 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的主要内容,如果未能解决你的问题,请参考以下文章
在KubeSphere启动服务网格Istio并解决解决ContainerCreating问题
在KubeSphere启动服务网格Istio并解决解决ContainerCreating问题
在KubeSphere启动服务网格Istio并解决解决ContainerCreating问题