introduce.md 2.1 KB
Newer Older
F
feilong 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
# 服务网格(ServiceMesh)

客户端请求网页常常会经过代理,代理请求后面的服务,后台服务返回给代理,代理再返回给客户端。这是一个典型的代理服务的情景。大概是这样:

```bash
Client <-> Proxy <-> Server
```

现代后端开发,将服务拆分成多个微服务是常见的做法。

```bash
Client <-> Interface <-> [ProxyA->ServerA] <-> [ProxyB->ServerB]
Client <-> Interface <-> [ProxyB->ServerB] <-> [ProxyA->ServerA]
```

微服务之间的互相访问,公共的代理部分可以做很多公共的控制逻辑。这部分的的代码标准化,下层到云原生的基础设施里,就形成了服务网格(ServiceMesh)。服务网格通常管理微服务之间这三个方面的功能:

1. 流量管理(Traffic management):动态服务发现、路由、流量灰度和流量分离等。
2. 安全(Security):加密传输、基于正式验证的授权、基于访问控制和网络分区的授权等。
3. 可观察性(Observability): 例如链路跟踪、日志等。

服务网格和 k8s 之间是什么关系呢?一图胜千言,在k8s的基础上,为每个pod增加一个proxy(或者叫边车,sidecar),有两个变化:

1. 原来k8s的node里的pod通过node的kube-proxy和 API Server 通信;在ServiceMesh下,每个pod直接通过装在pod上的proxy和API Server通信。
2. 原来k8s的node里的pod通过node的kube-proxy桥接通信;在ServiceMesh下,每个 pod 之间直接通过装在 pod上的proxy直接通信。

F
feilong 已提交
27
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/5.服务网格(istio)/1.ServiceMesh介绍/img/k8s_native_vs_service_mesh.png)
F
fix bug  
feilong 已提交
28
<br/>
F
feilong 已提交
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

以下说法错误的是?

## 答案

服务网格之间的通信都要通过 API Server 转发。

## 选项

### A

服务网格通常解决流量管理、服务安全、服务可观察性问题。

### B

在k8s原生组件的基础上,给每个pod安装服务网格的proxy,对这些proxy的编排调度,构成里服务网格层。

### C

服务网格的特点是,将微服务管理功能内置到基础架构层,无需在应用层写相关代码。