日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Istio架构剖析

發布時間:2023/12/31 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Istio架构剖析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Istio 主要作用

從官網首頁可以看到,Istio主要的四大作用就是連接、安全、控制和觀察:

  • 連接(Connect)
    流量管理、負載均衡、灰度發布
  • 安全(Secure)
    認證、鑒權
  • 控制(Control)
    限流、ACL
  • 觀察(Observe)
    監控、調用鏈
  • Istio是一個開源的服務網格,可為分布式微服務架構提供所需的基礎運行和管理要素。

    隨著各組織越來越多地采用云平臺,開發者必須使用微服務設計架構以實現可移植性,而運維人員必須管理包含混合云部署和多云部署的大型分布式應用。

    Istio采用一種一致的方式來保護、連接和監控微服務,降低了管理微服務部署的復雜性。

    Istio概念

    在Service Mesh中,我們需要了解Data Plane和Control Plane兩個概念:

    • Data Plane:作用是處理網格內服務間的通信,并完成服務發現、負載均衡、流量管理、健康檢查等功能;
    • Control Plane:作用是管理和配置智能代理用于路由流量,同時配置Mixers來應用策略、收集指標。

    Istio核心組件

  • Envoy:Istio 使用 Envoy調解服務網格中所有服務的入站和出站流量。屬于數據平面。
  • Mixer:負責在服務網格上執行訪問控制和使用策略,以及收集從Envoy和其他服務自動監控到的數據。
  • Pilot:為 Envoy sidecar 提供服務發現功能,為智能路由(例如 A/B 測試、金絲雀部署等)和彈性(超時、重試、熔斷器等)提供流量管理功能。屬于控制平面。
  • Citadel:提供訪問控制和用戶身份認證功能。
  • Istio可視化管理組件

  • Vistio:用于近乎實時地監控應用程序和集群之間的網絡流量。
  • Kiali:提供可視化服務網格拓撲、斷路器和請求率等功能。Kiali還包括 Jaeger Tracing,可以提供開箱即用的分布式跟蹤功能。
  • jaeger:用于展示istio微服務調用鏈關系,以及微服務工作狀態監測。注意,在生產環境中,應使用Elasticsearch或cassandra持久化存儲jaeger數據。
  • 架構圖:
    從架構設計上來看,Istio服務網格在邏輯上分為控制平面和數據平面兩部分。

    Istio的控制平面主要負責:

    • 接收用戶配置
    • 生成路由規則
    • 分發路由規則到代理
    • 分發策略
    • 遙測數據收集

    Istio的數據平面主要負責:

    • 流量轉發
    • 策略實施
    • 遙測數據上報

    用戶通過控制平面提供的API提交路由配置規則、策略配置規則與遙測數據收集的配置規則。
    Pilot把用戶提交的配置規則轉換成智能代理需要的配置形式,推送給智能代理。
    智能代理根據用戶的配置來執行服務路由、遙測數據收集與服務訪問策略。
    智能代理攔截服務所有流量,并與其他智能代理通信。

    控制平面

    控制平面中主要包括Mixer、Pilot、Citadel部件。

    1.1:Mixer

    Mixer是一個與平臺無關的組件。
    Mixer負責在服務網絡中實施訪問控制和策略,并負責從Envoy代理和其他服務上收集遙測數據。
    代理提取請求級別的屬性并發送到Mixer用于評估,評估請求是否能放行。

    Mixer有一個靈活的插件模型。這個模型使得Istio可以與多種主機環境和后端基礎設施對接。因此,Istio從這些細節中抽象了Envoy代理和Istio管理的服務。

    1.2: Mixer架構圖

    在每一個請求過程中,Envoy代理會在請求之前調用Mixer組件進行前置條件檢查,在請求結束之后上報遙測數據給Mixer組件。

    為了提高性能,每個Envoy代理都會提前緩存大量前置條件檢查規則,當需要進行前置條件檢查時,直接在緩存中檢查規則。

    如果本地緩存中沒有需要的規則,再去調用Mixer組件獲取規則。
    Mixer組件也有自己的緩存,以加速前置條件檢查。需要上報的遙測數據也會被Envoy代理暫時緩存起來,等待時機上報Mixer組件,從而減少上報數據的調用次數。

    2.1: Pilot

    Pilot為Envoy代理提供:

    • 服務發現功能
    • 智能路由功能(例如:A/B測試、金絲雀發布等)
    • 彈性功能(例如:超時、重試、熔斷器等)。

    Pilot將高級別的控制流量行為的路由策略轉換為Envoy格式的配置形式,并在運行時分發給Envoy代理。
    Pilot抽象了平臺相關的服務發現機制,并轉換成Envoy數據平面支持的標準格式。
    這種松耦合設計使得Istio能運行在多平臺環境,并保持一致的流量管理接口。

    2.2: Pilot架構圖

    Pilot抽象不同平臺的服務發現機制,只需要為不同的平臺實現統一的抽象模型接口,即可實現對接不同平臺的服務發現機制。

    用戶通過規則配置API來提交配置規則,Pilot把用戶配置的規則和服務發現收集到的服務轉換成Envoy代理需要的配置格式,推送給每個Envoy代理。

    3. Citadel

    Citadel內置有身份和憑證管理,提供了強大的服務間和終端用戶的認證。

    Citadel可以把不加密的通信升級為加密的通信。

    運維人員可以使用Citadel實施基于服務身份的策略而不用在網絡層控制。

    Istio還支持基于角色的訪問控制,用于控制誰能夠訪問服務。

    數據平面

    Istio在數據平面中使用一個Envoy代理的擴展版本。

    Envoy是使用C++語言開發的高性能代理,它能攔截服務網絡中所有服務的入口和出口流量。

    Istio利用了眾多Envoy內置的功能特性,例如:

    • 動態服務發現
    • 負載均衡
    • TLS終止
    • HTTP/2和gRPC代理
    • 熔斷器
    • 健康檢查
    • 基于百分比流量分隔的灰度發布
    • 故障注入
    • 豐富的度量指標

    Envoy作為一個邊車與對應的服務部署在同一個Kubernetes Pod中。

    這種部署方式使得Istio能提取豐富的流量行為信號作為屬性。

    Istio又可以反過來使用這些數據在Mixer中進行策略決策,并發送這些數據到監控系統中,提供整個網絡中的行為信息。

    采用邊車部署方式,可以把Istio的功能添加到一個已經存在的部署中,并且不需要重新構建或者重新編寫代碼。

    Istio部署

    官方中文文檔:
    https://preliminary.istio.io/zh/docs/setup/getting-started

    下載 Istio

    下載 Istio,下載內容將包含:安裝文件、示例和 istioctl 命令行工具。

    訪問 Istio release 頁面下載與您操作系統對應的安裝文件。在 macOS 或 Linux 系統中,也可以通過以下命令下載最新版本的 Istio:

    curl -L https://istio.io/downloadIstio | sh -

    切換到 Istio 包所在目錄下。例如:Istio 包名為 istio-1.6.7,則:
    安裝目錄包含如下內容:

    • install/kubernetes 目錄下,有 Kubernetes 相關的 YAML 安裝文件
    • samples/ 目錄下,有示例應用程序
    • bin/ 目錄下,包含 istioctl 的客戶端文件。istioctl 工具用于手動注入 Envoy sidecar 代理。

    將 istioctl 客戶端命令復制到/usr/local/bin目錄下:

    cp istioctl /usr/local/bin/

    查看istio可選的幾種部署模式

    [root@k8s-master profiles]# istioctl profile list Istio configuration profiles:defaultdemoemptyminimalpreviewremote

    profile開啟的組件、插件的表格如下:
    查看具體的profile開啟了哪些組件可用如下命令:

    istioctl profile dump [default|demo|minimal|remote|empty|preview]

    安裝 demo 配置

    [root@k8s-master istio-1.6.7]# istioctl manifest apply --set profile=demo Detected that your cluster does not support third party JWT authentication. Falling back to less secure first party JWT. See https://istio.io/docs/ops/best-practices/security/#configure-third-party-service-account-tokens for details. ? Istio core installed ? Istiod installed ? Egress gateways installed ? Ingress gateways installed ? Addons installed ? Installation complete

    查看istio的pod

    [root@k8s-master istio-1.6.7]# kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE grafana-5dc4b4676c-whdlw 1/1 Running 0 15m istio-egressgateway-65d5579779-252kt 1/1 Running 0 16m istio-ingressgateway-7895c9764d-6t2jt 1/1 Running 0 16m istio-tracing-8584b4d7f9-494rb 1/1 Running 0 15m istiod-7988b4d788-nzd9f 1/1 Running 0 17m kiali-6f457f5964-65pl9 1/1 Running 0 15m prometheus-67988db74f-zblbq 2/2 Running 0 15m

    這里說一下,在之前1.5之后的版本,istio已經封裝了pilot、citadel和Galley等組件為istiod,所以查看pod的時候會發現有一個istiod

    sidecar注入

    sidecar注入分為手動注入和自動注入,以httpbin為例:

    [root@k8s-master httpbin]# pwd /usr/local/src/istio-1.6.7/samples/httpbin [root@k8s-master httpbin]# ls httpbin-gateway.yaml httpbin-nodeport.yaml httpbin-vault.yaml httpbin.yaml policy README.md sample-client

    手動注入

    # 方法一 kubectl apply -f <(istioctl kube-inject -f httpbin-nodeport.yaml)# 方法二 istioctl kube-inject -f httpbin-nodeport.yaml | kubectl apply -f -

    自動注入

    # 方法一:這種方法是指以后一旦在default名稱空間中創建的pods會自動注入sidecar kubectl label namesapce default istio-injection=enabled

    部署httpbin-nodeport

    [root@k8s-master httpbin]# kubectl apply -f httpbin-gateway.yaml gateway.networking.istio.io/httpbin-gateway created virtualservice.networking.istio.io/httpbin created [root@k8s-master httpbin]# kubectl apply -f httpbin-nodeport.yaml service/httpbin created deployment.apps/httpbin created [root@k8s-master httpbin]# kubectl get pods -n default NAME READY STATUS RESTARTS AGE httpbin-768b999cb5-rgs8l 1/1 Running 0 2m8s[root@k8s-master httpbin]# kubectl get svc -n default NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE httpbin NodePort 10.1.252.74 <none> 8000:31521/TCP 3m

    瀏覽器測試訪問

    httpbin注入sidecar

    [root@k8s-master httpbin]# kubectl apply -f <(istioctl kube-inject -f httpbin-nodeport.yaml) service/httpbin unchanged deployment.apps/httpbin configured

    稍等幾分鐘后會發現pod數量多了一個,sidecar已經注入成功
    istio有自帶的ingressgateway,所以我們可以使用istio的ingress來訪問有sidecar的應用,默認情況下的一個流程如下:
    有關服務網關的流量去向圖
    根據上圖可以看出,IngressGateway可以接收外部訪問,并將流量轉發到網格內的服務;

    EgressGateway可以將網格內服務訪問外部應用,二者分別實現服務網格中流量的進出。

    Gateway為網格內服務提供負載均衡器(Envoy),可以實現四層~七層的負載均衡,且支持雙向TLS認證,而我們K8s集群上普通的Ingress網關只能單獨實現4層或者七層的負載均衡,相比之下優勢就顯露出來。

    參考:
    https://blog.csdn.net/lswzw/article/details/104745617/
    https://blog.csdn.net/Mr_rsq/article/details/107834698

    總結

    以上是生活随笔為你收集整理的Istio架构剖析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 美女黄站 | 9色视频 | 欧美黄色一级大片 | 国产精久 | 一区二区三区在线免费视频 | 毛片aaaaaa| 嫩草影院黄| 亚洲欧美一区二区三区四区五区 | 肉嫁高柳家在线看 | 91麻豆成人精品国产 | 亚洲一区二区在线免费观看 | 美女主播福利视频 | 九一精品视频 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 国产蜜臀在线 | 国产成人综合欧美精品久久 | 人人爱人人看 | 无码一区二区三区在线 | 国产在线视频第一页 | 久久国产精品久久久久久 | 国产乱free国语对白 | 国产一级片免费在线观看 | 国产原创在线播放 | 日本人妻一区二区三区 | 免费成人高清 | 国产乱淫a∨片免费视频 | 黄色片网站免费在线观看 | 欧美日韩亚洲在线观看 | c逼| 国精产品一区 | 成人精品免费视频 | 久久黄色影院 | 成人在线观看免费爱爱 | 国产精品一区二区在线免费观看 | 日韩国产区 | 2019亚洲男人天堂 | 亚洲大尺度在线观看 | 夜夜草导航 | 亚洲成av人片一区二区 | 香蕉视频网站在线观看 | 国产精品国产三级国产三级人妇 | 大桥未久视频在线观看 | 国产美女免费视频 | 久久中文免费视频 | 91插插插插插插插 | 大肉大捧一进一出好爽视频 | 成人玩具h视频 | 2019年中文字幕 | 国产黄色自拍视频 | 美女精品在线观看 | 国产精品毛片一区视频播 | 三级在线国产 | 久久久成人av| 伊人春色在线视频 | 国产91大片 | 成年人黄色免费网站 | 99在线精品视频 | 国产色秀| 国产综合精品一区二区三区 | 国产精品香蕉在线 | 欧美黑人一区二区三区 | 四虎影院一区 | 亚洲精品乱码久久久久久麻豆不卡 | 国产综合久久久 | 人人妻一区二区三区 | 体内精69xxxxx | 91超碰在线免费观看 | 天天干天天天天 | 91视频免费网址 | 男女黄色片 | 亚洲天堂视频一区 | 欧美成人精品一区 | 在线免费日本 | 日韩欧美综合久久 | 一级特黄特色的免费大片视频 | 日韩美女国产精品 | japan粗暴video蹂躏| 国产男女猛烈无遮挡a片漫画 | 青娱乐在线免费观看 | 污视频网站免费在线观看 | 精品黑人一区二区三区久久 | 探花国产在线 | 99热这里只有精品7 青青草社区 | 德国经典free性复古xxxx | 国产欧美精品久久久 | 亚洲激情一区二区 | 久久久7777 | 精品综合久久久 | 全黄一级男人和女人 | 黑人欧美一区二区三区 | 1级性生活片 | 91jk制服白丝超短裙大长腿 | 国产草逼视频 | 亚洲午夜一区二区 | 做a爰小视频 | 九一国产在线观看 | 日本三级欧美三级 | 妺妺窝人体色www在线下载 | 综合网视频 |