自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

讓我們一起聊聊 Linkerd Smi 擴(kuò)展入門

開發(fā) 前端
Linkerd 支持 SMI 的 TrafficSplit 規(guī)范, 該規(guī)范可用于在本地執(zhí)行跨服務(wù)的流量拆分。這意味著您可以在沒有任何額外組件/配置的情況下應(yīng)用 SMI 資源, 但這顯然有一些缺點(diǎn),因?yàn)?Linkerd 可能無法添加特定于它的額外特定配置, 因?yàn)?SMI 更像是服務(wù)網(wǎng)格功能的最小公分母。

[[434224]]

文末本文轉(zhuǎn)載自微信公眾號(hào)「黑客下午茶」,作者為少  。轉(zhuǎn)載本文請(qǐng)聯(lián)系黑客下午茶公眾號(hào)。

Service Mesh Interface 是 Kubernetes 上服務(wù)網(wǎng)格的標(biāo)準(zhǔn)接口。它定義了一組資源,可用于實(shí)現(xiàn)該資源的服務(wù)網(wǎng)格。您可以在規(guī)范中閱讀有關(guān)它的更多信息。

  • https://smi-spec.io/
  • https://github.com/servicemeshinterface/smi-spec

目前,Linkerd 支持 SMI 的 TrafficSplit 規(guī)范, 該規(guī)范可用于在本地執(zhí)行跨服務(wù)的流量拆分。這意味著您可以在沒有任何額外組件/配置的情況下應(yīng)用 SMI 資源, 但這顯然有一些缺點(diǎn),因?yàn)?Linkerd 可能無法添加特定于它的額外特定配置, 因?yàn)?SMI 更像是服務(wù)網(wǎng)格功能的最小公分母。

為了解決這些問題,Linkerd 可以使用一個(gè)適配器, 將 SMI 規(guī)范轉(zhuǎn)換為它可以理解和執(zhí)行操作的原生 Linkerd 配置。這也消除了與 SMI 資源與控制平面的額外原生耦合, 并且適配器可以獨(dú)立移動(dòng)并擁有自己的發(fā)布周期。Linkerd SMI 是一個(gè)可以做到這一點(diǎn)的擴(kuò)展。

  • https://www.github.com/linkerd/linkerd-smi

本指南將引導(dǎo)您安裝 SMI 擴(kuò)展并配置 TrafficSplit 規(guī)范,以跨服務(wù)執(zhí)行流量拆分(Traffic Splitting)。

前提條件

要使用本指南,您需要在集群上安裝 Linkerd。

安裝 Linkerd-SMI 擴(kuò)展

CLI

通過運(yùn)行以下命令安裝 SMI 擴(kuò)展 CLI 二進(jìn)制文件:

  1. curl -sL https://linkerd.github.io/linkerd-smi/install | sh 

或者,您可以直接通過發(fā)布頁(yè)面下載 CLI。

  • https://github.com/linkerd/linkerd-smi/releases

第一步是將 Linkerd-SMI 擴(kuò)展安裝到您的集群上。此擴(kuò)展包含一個(gè) SMI-Adaptor,可將 SMI 資源轉(zhuǎn)換為原生 Linkerd 資源。

要安裝 Linkerd-SMI 擴(kuò)展,請(qǐng)運(yùn)行以下命令:

  1. linkerd smi install | kubectl apply -f - 

您可以通過運(yùn)行以下命令來驗(yàn)證 Linkerd-SMI 擴(kuò)展是否已正確安裝:

  1. linkerd smi check 

Helm

要安裝 linkerd-smi Helm chart,請(qǐng)運(yùn)行:

  1. helm repo add l5d-smi https://linkerd.github.io/linkerd-smi 
  2. helm install l5d-smi/linkerd-smi --generate-name 

安裝示例應(yīng)用程序

首先,讓我們安裝示例應(yīng)用程序。

  1. create a namespace for the sample application 
  2. kubectl create namespace trafficsplit-sample 
  3.  
  4. # install the sample application 
  5. linkerd inject https://raw.githubusercontent.com/linkerd/linkerd2/main/test/integration/trafficsplit/testdata/application.yaml | kubectl -n trafficsplit-sample apply -f - 

這將安裝一個(gè)簡(jiǎn)單的客戶端和兩個(gè)服務(wù)器部署。服務(wù)器部署之一,即 faling-svc 總是返回 500 錯(cuò)誤, 而另一個(gè),即 backend-svc 總是返回 200。

  1. kubectl get deployments -n trafficsplit-sample 
  2. NAME          READY   UP-TO-DATE   AVAILABLE   AGE 
  3. backend       1/1     1            1           2m29s 
  4. failing       1/1     1            1           2m29s 
  5. slow-cooker   1/1     1            1           2m29s 

默認(rèn)情況下,客戶端將訪問 backend-svc 服務(wù)。這在 edges 子命令中很明顯。

  1. linkerd viz edges deploy -n trafficsplit-sample 
  2. SRC           DST           SRC_NS                DST_NS                SECURED 
  3. prometheus    backend       linkerd-viz           trafficsplit-sample   √ 
  4. prometheus    failing       linkerd-viz           trafficsplit-sample   √ 
  5. prometheus    slow-cooker   linkerd-viz           trafficsplit-sample   √ 
  6. slow-cooker   backend       trafficsplit-sample   trafficsplit-sample   √ 

配置流量拆分

現(xiàn)在,讓我們應(yīng)用一個(gè) TrafficSplit 資源在 backend-svc 上執(zhí)行流量拆分, 以在它和 failing-svc 之間分配負(fù)載。

  1. cat <<EOF | kubectl apply -f - 
  2. apiVersion: split.smi-spec.io/v1alpha2 
  3. kind: TrafficSplit 
  4. metadata: 
  5.   name: backend-split 
  6.   namespace: trafficsplit-sample 
  7. spec: 
  8.   service: backend-svc 
  9.   backends: 
  10.   - service: backend-svc 
  11.     weight: 500 
  12.   - service: failing-svc 
  13.     weight: 500 
  14. EOF 

因?yàn)?smi-adaptor 監(jiān)視 TrafficSplit 資源, 它會(huì)自動(dòng)創(chuàng)建相應(yīng)的 ServiceProfile 資源來執(zhí)行相同的操作。這可以通過檢索 ServiceProfile 資源來驗(yàn)證。

  1. kubectl describe serviceprofile -n trafficsplit-sample 
  2. Name:         backend-svc.trafficsplit-sample.svc.cluster.local 
  3. Namespace:    trafficsplit-sample 
  4. Labels:       <none> 
  5. Annotations:  <none> 
  6. API Version:  linkerd.io/v1alpha2 
  7. Kind:         ServiceProfile 
  8. Metadata: 
  9.   Creation Timestamp:  2021-08-02T12:42:52Z 
  10.   Generation:          1 
  11.   Managed Fields: 
  12.     API Version:  linkerd.io/v1alpha2 
  13.     Fields Type:  FieldsV1 
  14.     fieldsV1: 
  15.       f:spec: 
  16.         .: 
  17.         f:dstOverrides: 
  18.     Manager:         smi-adaptor 
  19.     Operation:       Update 
  20.     Time:            2021-08-02T12:42:52Z 
  21.   Resource Version:  3542 
  22.   UID:               cbcdb74f-07e0-42f0-a7a8-9bbcf5e0e54e 
  23. Spec: 
  24.   Dst Overrides: 
  25.     Authority:  backend-svc.trafficsplit-sample.svc.cluster.local 
  26.     Weight:     500 
  27.     Authority:  failing-svc.trafficsplit-sample.svc.cluster.local 
  28.     Weight:     500 
  29. Events:         <none> 

正如我們所見,已經(jīng)創(chuàng)建了一個(gè)帶有 DstOverrides 的相關(guān) ServiceProfile 來執(zhí)行 TrafficSplit。

可以通過運(yùn)行 edges 命令來驗(yàn)證流量拆分。

  1. linkerd viz edges deploy -n trafficsplit-sample 
  2. SRC           DST           SRC_NS                DST_NS                SECURED 
  3. prometheus    backend       linkerd-viz           trafficsplit-sample   √ 
  4. prometheus    failing       linkerd-viz           trafficsplit-sample   √ 
  5. prometheus    slow-cooker   linkerd-viz           trafficsplit-sample   √ 
  6. slow-cooker   backend       trafficsplit-sample   trafficsplit-sample   √ 
  7. slow-cooker   failing       trafficsplit-sample   trafficsplit-sample   √ 

這也可以通過在 TrafficSplit 資源上運(yùn)行 stat 子命令來驗(yàn)證。

  1. linkerd viz stat ts/backend-split -n traffic-sample 
  2. NAME            APEX          LEAF          WEIGHT   SUCCESS      RPS   LATENCY_P50   LATENCY_P95   LATENCY_P99 
  3. backend-split   backend-svc   backend-svc      500   100.00%   0.5rps           1ms           1ms           1ms 
  4. backend-split   backend-svc   failing-svc      500     0.00%   0.5rps           1ms           1ms           1ms 

這也可以通過檢查 smi-adaptor 日志來驗(yàn)證。

  1. kubectl -n linkerd-smi logs deploy/smi-adaptor smi-adaptor 
  2. time="2021-08-04T11:04:35Z" level=info msg="Using cluster domain: cluster.local" 
  3. time="2021-08-04T11:04:35Z" level=info msg="Starting SMI Controller" 
  4. time="2021-08-04T11:04:35Z" level=info msg="Waiting for informer caches to sync" 
  5. time="2021-08-04T11:04:35Z" level=info msg="starting admin server on :9995" 
  6. time="2021-08-04T11:04:35Z" level=info msg="Starting workers" 
  7. time="2021-08-04T11:04:35Z" level=info msg="Started workers" 
  8. time="2021-08-04T11:05:17Z" level=info msg="created serviceprofile/backend-svc.trafficsplit-sample.svc.cluster.local for trafficsplit/backend-split" 
  9. time="2021-08-04T11:05:17Z" level=info msg="Successfully synced 'trafficsplit-sample/backend-split'" 

清理

通過運(yùn)行以下命令刪除 trafficsplit-sample 資源

  1. kubectl delete namespace/trafficsplit-sample 

結(jié)論

 

不過,Linkerd 目前支持直接讀取 TrafficSplit 資源,ServiceProfiles 總是優(yōu)先于 TrafficSplit 資源。將在進(jìn)一步的版本中刪除對(duì) TrafficSplit 資源的支持,在該版本中,需要 linkerd-smi 擴(kuò)展以將 SMI 資源與 Linkerd 一起使用。

 

責(zé)任編輯:武曉燕 來源: 黑客下午茶
相關(guān)推薦

2021-08-27 07:06:10

IOJava抽象

2022-06-26 09:40:55

Django框架服務(wù)

2022-02-14 07:03:31

網(wǎng)站安全MFA

2022-08-01 07:57:03

數(shù)組操作內(nèi)存

2023-08-02 08:35:54

文件操作數(shù)據(jù)源

2021-07-31 11:40:55

Openresty開源

2022-12-05 09:10:21

2021-11-04 06:58:31

CSS性能設(shè)備

2022-08-30 13:48:16

LinuxMySQL內(nèi)存

2022-03-15 20:18:35

單元測(cè)試工具

2021-10-26 09:55:52

CAP理論分布式

2022-03-31 18:59:43

數(shù)據(jù)庫(kù)InnoDBMySQL

2021-12-29 08:27:05

ByteBuffer磁盤服務(wù)器

2022-03-08 17:52:58

TCP格式IP

2022-11-14 08:32:51

CSS組件Box

2021-07-15 07:23:28

Singlefligh設(shè)計(jì)

2021-11-26 07:00:05

反轉(zhuǎn)整數(shù)數(shù)字

2024-05-29 12:53:30

2023-04-26 00:19:18

AICSI-RSChatGPT

2016-09-06 10:39:30

Dell Techno
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)