Linkerd 2.10(Step by Step)—1. 将您的服务添加到 Linkerd

为了让您的服务利用 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 秒的延迟。
Linkerd 2.10(Step by Step)—1. 将您的服务添加到 Linkerd的更多相关文章
- Linkerd 2.10(Step by Step)—2. 自动化的金丝雀发布
通过结合 Linkerd 和 Flagger 来根据服务指标自动金丝雀(canary)发布,从而降低部署风险. Linkerd 2.10 中文手册持续修正更新中: https://linkerd.ha ...
- Linkerd 2.10(Step by Step)—4. 如何配置外部 Prometheus 实例
Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...
- Linkerd 2.10(Step by Step)—使用 Kustomize 自定义 Linkerd 的配置
Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...
- Linkerd 2.10(Step by Step)—多集群通信
Linkerd 2.10 系列 快速上手 Linkerd v2.10 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traef ...
- Linkerd 2.10(Step by Step)—将 GitOps 与 Linkerd 和 Argo CD 结合使用
Linkerd 2.10 系列 快速上手 Linkerd v2.10 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traef ...
- Linkerd 2.10(Step by Step)—控制平面调试端点
Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...
- Linkerd 2.10(Step by Step)—配置超时
Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...
- Linkerd 2.10(Step by Step)—配置重试
Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...
- Linkerd 2.10(Step by Step)—配置代理并发
Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...
随机推荐
- IDEA只有Commit没有Push按钮
问题描述 idea的右上角只有commit按钮,而没有push按钮 问题解决 打开File->Settings->Menus and Toolbars->Navigation Bar ...
- 【转】python SQLAlchemy
数据库表是一个二维表,包含多行多列. 把一个表的内容用Python的数据结构表示出来的话,可以用一个list表示多行,list的每一个元素是tuple,表示一行记录,比如,包含id和name的user ...
- vmware vpshere 安装完的必备工作
1:例如:vCenter计算机地址为:192.168.0.200, 访问地址:https://192.168.0.200,安装证书: 参考教程:https://blog.csdn.net/cooljs ...
- LINQ之查询语法
新开一节LINQ的入门讲解. LINQ(Language Integrated Query)语言集成查询,是C#语言的扩展,它的主要功能是从数据集中查询数据,就像通过sql语句从数据库查询数据一样(本 ...
- 上手 WebRTC DTLS 遇到很多 BUG?浅谈 DTLS Fragment
上一篇<详解 WebRTC 传输安全机制:一文读懂 DTLS 协议>详细阐述了 DTLS.本文将结合 DTLS 开发中遇到的问题,详细解读 DTLS 的一些基础概念以及 Fragment ...
- Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)
1.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...
- 使用Optional处理null
一.聊聊NullPointerException 相比做Java开发的,见到NullPointerException肯定不陌生吧,可以说见到它深恶痛绝.在开发时认为不会出现NullPointerE ...
- [刷题] PTA 6-11 求自定类型元素序列的中位数 (25分)
采用希尔排序 1 #include <stdio.h> 2 3 #define MAXN 10 4 typedef float ElementType; 5 6 ElementType M ...
- [刷题] 20 Valid Parentheses
要求 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效 左括号必须用相同类型的右括号闭合 左括号必须以正确的顺序闭合 空字符串可被认为是有效字符串 思路 遇 ...
- QT 资源链家暂存
1.Qt右击菜单栏中文化 链接:https://blog.csdn.net/yangxiao_0203/article/details/7488967