Linkerd 2.10(Step by Step)—1. 将您的服务添加到 Linkerd
2021-06-13 10:50
821 查看
为了让您的服务利用
Linkerd,它们还需要通过将
Linkerd的数据平面代理
(data plane proxy)注入到它们服务的
pod中,从而进行网格化。
Linkerd 2.10 中文手册持续修正更新中:
Linkerd 2.10 系列
- 快速上手 Linkerd v2 Service Mesh(服务网格)
- 腾讯云 K8S 集群实战 Service Mesh—Linkerd2 & Traefik2 部署 emojivoto 应用
- 详细了解 Linkerd 2.10 基础功能,一起步入 Service Mesh 微服务架构时代
将
Linkerd的控制平面添加到您的集群不会改变您的应用程序的任何内容。为了让您的服务利用
Linkerd,它们需要通过将
Linkerd的数据平面代理注入到它们的
pod中来进行网格化(meshed)。
对于大多数应用程序,网格化服务就像添加
Kubernetes annotation一样简单。但是,在启动时立即进行网络调用的服务可能需要处理启动竞争条件,而使用
MySQL、
SMTP、
Memcache和类似协议的服务可能需要处理
server-speaks-first协议。
继续阅读以了解更多信息!
使用注解(annotations)对服务进行网格化
对
Kubernetes resource进行网格划分通常是通过使用
linkerd.io/inject: enabled的
Kubernetes annotation来注解资源或其命名空间来完成的。当资源被创建或更新时,这个注解会触发自动代理注入。
为方便起见,
Linkerd提供了一个
linkerd inject文本转换命令,可以将此
annotation添加到给定的
Kubernetes清单中。 当然,这些注解可以通过任何其他机制进行设置。
简单地添加注释不会自动对现有
pod进行网格划分。设置注解后,您需要重新创建或更新任何资源(例如使用
kubectl rollout restart)以触发代理注入。 (通常,可以执行rolling update 以将代理注入实时服务而不会中断。)
示例
要将 Linkerd 的数据平面代理添加到 Kubernetes 清单中定义的服务, 您可以在将清单应用到 Kubernetes 之前 使用
linkerd inject添加注解(annotations):
cat deployment.yml | linkerd inject - | kubectl apply -f -
此示例转换
deployment.yml文件以在正确的位置 添加注入注解(injection annotations),然后将其应用于集群。
验证数据平面 Pod 是否已注入
要验证您的服务是否已添加到网格中, 您可以查询 Kubernetes 以获取 pod 中的容器列表,并确保列出了代理:
kubectl -n MYNAMESPACE get po -o jsonpath='{.items[0].spec.containers[*].name}'
这里我们看一下
emojivoto这个应用相关的信息:
kubectl -n emojivoto get po -o jsonpath='{.items[0].spec.containers[*].name}'
# 如果一切顺利,您将在输出中看到 `linkerd-proxy`,例如: linkerd-proxy emoji-svc
关于启动竞争条件(startup race conditions)的说明
虽然代理启动非常快,但 Kubernetes 不提供任何关于容器启动顺序的保证, 因此应用程序容器可能会在代理准备好之前启动。 这意味着在应用程序启动时立即建立的任何连接都可能会失败,直到代理处于活动状态。
在很多情况下,这可以被忽略:理想情况下,应用程序将重试连接, 或者 Kubernetes 将在失败后重新启动容器,最终代理将准备就绪。 或者,您可以使用 linkerd-await 延迟应用程序容器直到代理准备好, 或者设置一个
skip-outbound-ports来绕过这些连接的代理。
关于 server-speaks-first 协议的说明
Linkerd的协议检测通过查看客户端数据的 前几个字节来确定连接的协议。 某些协议(例如
MySQL、
SMTP和其他服务器优先协议)不发送这些字节。 在某些情况下,这可能需要额外的配置以避免在 建立第一个连接时出现 10 秒的延迟。
相关文章推荐
- [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的分层结构示例Step by Step —— 03 服务层
- WPF MVVM 架构 Step By Step(4)(添加bindings - 完全去掉后台代码)
- Create ActiveX in .NET Step by Step(包括添加事件)
- 2014/08/24——升级stepbystep修复tc不刷新问题并添加杭电bc
- Step By Step实现分布式服务访问框架
- 2014/08/24——升级stepbystep修复tc不刷新问题并添加杭电bc
- 【Azure Services Platform Step by Step-第7篇】别把Windows Azure当虚拟主机使——理解Windows Azure服务架构
- Archie OSG Step By Step④ MFC+OSG添加事件
- [WCF Step by Step 读书笔记] Chapter02 寄宿一个WCF服务
- [WCF Step by Step 读书笔记] Chapter03 构造更强健的应用和服务
- Step by step 活动目录中添加一个子域
- Archie OSG Step By Step⑦MFC修改鼠标,制作半透明窗口,视口全屏以及添加背景音乐。
- Step by step 活动目录中添加一个子域
- WPF MVVM 架构 Step By Step(5)(添加actions和INotifyPropertyChanged接口)
- Step by Step 配置dubbo服务
- 配置NFS服务step by step
- Step by Step - Turning Ruby Files into Java Classes(中英文对照版)
- Microsoft SQL Server 2008 MDX Step by Step 学习笔记连载目录
- Introduction to Microsoft Visual Studio(for beginners)step by step
- Spark SQL中防止数据倾斜sqlContext.sql中添加distribute by rand()