
📅 2021-07-20
上节内容学习了istio流量管理API的两个资源对象虚拟服务VirtualService
和DestinationRule目标规则
。这里先复习一下:
- 虚拟服务是客户端请求服务的地址,通过在虚拟服务上配置路由(route),路由的目标(destination)指向k8s中的Service,即虚拟服务用来配置如何将流量路由到目标地址(如k8s的Service)。
虚拟服务的路由规则可以在流量端口、header 字段、URI 等内容上设置匹配条件,将流量路由到适当的目标;同时还可以在流量上执行一些操作,例如添加删除header、重写URL、为调用这一目标地址的请求设置重试策略等。
- 目标规则可以为目标地址(如k8s的Service)指定命名的服务子集(例如按版本为给定服务的实例分组,然后可以在虚拟服务的路由规则中使用这些服务子集来控制到不同服务实例的流量);
还可以在调用这个目标服务或特定子集时定制Envoy的流量策略(例如负载均衡策略、TLS安全模式或熔断器设置)。

...📅 2021-07-19
通过前面2节完成了calico node集群的二进制部署,并在集群各个节点上部署calico cni插件,测试了calico cni插件与containerd的集成。
本节将学习Calico网络的一些基本概念。
Calico Node的核心组件
#
Calico是一个纯三层的虚拟网络,Calico为每个容器分配一个ip,每个宿主机(Calico Node)都是一个虚拟路由器,将不同宿主机的容器连接起来,实现容器间跨主机通信。
...📅 2021-07-09
Istio通过流量管理API进行流量配置。流量管理API使用Kubernetes的CRDs(自定义资源定义)来声明。
本节学习在前面2节配置请求路由中用过的两个API资源:虚拟服务VirtualService和目标路由DestinationRule。
...📅 2021-07-08
前面一节完成了calico node集群的部署,本节将在各个节点上部署calico cni插件,
并在两个主机节点上各启动一个连接到calico网络的containerd容器,测试两个容器网络是否是打通的。
部署容器运行时Containerd和CNI
#
在各个服务器节点上安装容器运行时Containerd。
...📅 2021-07-07
前面几节内容学习了容器网络接口CNI及CNI规范的一些基础知识,从本节开始学习开源虚拟网络方案Calico。
Calico是一个可用于容器、虚拟机和本机主机工作负载的开源网络和网络安全解决方案。
Calico支持广泛的平台,包括Kubernetes, OpenShift, Docker EE, OpenStack和裸金属服务。
Calico同时实现并提供了calico网络CNI插件,因此可以将Calico用作容器网络插件。
本文将回到原始时代,从零开始纯手工以二进制形式部署Calico,这样能先从整体上理解Calico的各个组件。
...📅 2021-07-06
故障注入是指将故障注入系统,便于检查系统在存在故障时的行为,以检查系统在可用性方面是否按我们期望的方式运行,测试应用系统的弹性。
本节将基于istio官方文档https://istio.io/latest/zh/docs/tasks/traffic-management/fault-injection/体验istio在流量管理方面的故障注入功能。
基于使用前面已经部署好的bookinfo应用,执行下面的命令初始化bookinfo应用的路由:
...📅 2021-07-05
本节开始学习istio对微服务的流量管理功能,先来看如何配置请求路由,使用istio的流量路由规则可以很容易的控制服务之间的流量和调用。
本节先基于官方文档https://istio.io/latest/zh/docs/tasks/traffic-management/request-routing/完成配置请求路由
的实操演练,后续再理解一些概念性的东西。
bookinfo应用简介
#
前面我们部署的bookinfo应用由4个独立的微服务组成:
...📅 2021-07-04
Istio由Google、IBM和Lyft开源,是第二代服务网格产品。在Istio中使用了Lyft公司的Envoy作为Sidecar。Istio的功能十分丰富,包含以下4个方面:
- 流量管理: 流量管理是istio的基本功能,使用istio的流量路由规则可以轻松控制服务之间的流量和API调用
- 策略控制: 应用策略以确保其得到执行,并且资源在消费者之间公平分配
- 可观测性: 通过自动链路追踪、监控和服务的日志可以全面了解服务如何与其它服务以及istio组件本身进行交互
- 安全认证: 通过托管的身份认证、授权和服务之间通信的加密自动保护服务的安全。Istio Security提供了全面的安全方案来解决这些问题
Istio从2017年5月发布0.1,到现在已经发展到1.10,早期的版本曾提供对非Kubernetes环境的支持,发展到现在基本只支持在Kubernetes上使用。
...📅 2021-07-03
本文基于istio官方文档https://istio.io/latest/zh/docs/setup/getting-started/。
试验环境是一个3节点的k8s集群,k8s版本是1.21。
1.下载istio
#
到istio的发布页面https://github.com/istio/istio/releases/下载安装包,此时版本为1.10.2,下载并解压缩:
1wget https://github.com/istio/istio/releases/download/1.10.2/istio-1.10.2-linux-amd64.tar.gz
2tar -zxvf istio-1.10.2-linux-amd64.tar.gz
进入解压缩后的安装包目录:
1cd istio-1.10.2
2
3tree -L 1
4.
5├── bin 该目录下包含客户端二进制文件istioctl
6├── LICENSE
7├── manifests
8├── manifest.yaml
9├── README.md
10├── samples 该目录下包含示例的应用程序
11└── tools
将istioctl添加到系统PATH环境变量:
...📅 2021-07-01
前面学习了CNI为容器网络创建定义的配置格式及基本的操作执行流程。
本节将从源码加深对CNI接口的理解。
CNI项目https://github.com/containernetworking/cni
的libcni
下包含CNI接口,供容器运行时调用,转发调用具体的CNI插件。
libcni.CNI
就是具体的go语言的接口,源码如下:
...