日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

为什么要使用 Kubernetes 准入控制器

發布時間:2024/8/23 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么要使用 Kubernetes 准入控制器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Kubernetes 準入控制器是什么?為什么要使用準入控制器?如何使用?本文對 Kubernetes 準入控制器進行了詳細解釋。

來源 | K8sMeetup

作者 |?Arun Prasad

頭圖?|?下載于視覺中國

Kubernetes 控制平面由幾個組件組成。其中一個組件是 kube-apiserver,簡單的 API server。它公開了一個 REST 端點,用戶、集群組件以及客戶端應用程序可以通過該端點與集群進行通信。總的來說,它會進行以下操作:

  • 從客戶端應用程序(如 kubectl)接收標準 HTTP 請求。

  • 驗證傳入請求并應用授權策略。

  • 在成功的身份驗證中,它能根據端點對象(Pod、Deployments、Namespace 等)和 http 動作(Create、Put、Get、Delete 等)執行操作。

  • 對 etcd 數據存儲進行更改以保存數據。

  • 操作完成,它就向客戶端發送響應。

  • 請求流程

    現在讓我們考慮這樣一種情況:在請求經過身份驗證后,但在對 etcd 數據存儲進行任何更改之前,我們需要攔截該請求。例如:

  • 攔截客戶端發送的請求。

  • 解析請求并執行操作。

  • 根據請求的結果,決定對 etcd 進行更改還是拒絕對 etcd 進行更改。

  • Kubernetes 準入控制器就是用于這種情況的插件。在代碼層面,準入控制器邏輯與 API server 邏輯解耦,這樣用戶就可以開發自定義攔截器(custom interceptor),無論何時對象被創建、更新或從 etcd 中刪除,都可以調用該攔截器。

    有了準入控制器,從任意來源到 API server 的請求流將如下所示:

    準入控制器階段(來自官方文檔)

    官方文檔地址:https://kubernetes.io/blog/2019/03/21/a-guide-to-kubernetes-admission-controllers/

    根據準入控制器執行的操作類型,它可以分為 3 種類型:

    • Mutating(變更)

    • Validating(驗證)

    • Both(兩者都有)

    Mutating:這種控制器可以解析請求,并在請求向下發送之前對請求進行更改(變更請求)。

    示例:AlwaysPullImages

    Validating:這種控制器可以解析請求并根據特定數據進行驗證。

    示例:NamespaceExists

    Both:這種控制器可以執行變更和驗證兩種操作。

    示例:CertificateSigning

    有關這些控制器更多信息,查看官方文檔:https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#what-does-each-admission-controller-do

    準入控制器過程包括按順序執行的2個階段:

  • Mutating(變更)階段(先執行)

  • Validation (驗證)階段(變更階段后執行)

  • Kubernetes 集群已經在使用準入控制器來執行許多任務。

    Kubernetes 附帶的準入控制器列表:https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#what-does-each-admission-controller-do

    通過該列表,我們可以發現大多數操作,如 AlwaysPullImages、DefaultStorageClass、PodSecurityPolicy 等,實際上都是由不同的準入控制器執行的。

    如何啟用或禁用準入控制器?

    要啟用準入控制器,我們必須在啟動 kube-apiserver 時,將以逗號分隔的準入控制器插件名稱列表傳遞給?--enable-ading-plugins。對于默認插件,命令如下所示:

    要禁用準入控制器插件,可以將插件名稱列表傳遞給?--disable-admission-plugins。它將覆蓋默認啟用的插件列表。

    默認準入控制器

    • NamespaceLifecycle

    • LimitRanger

    • ServiceAccount

    • TaintNodesByCondition

    • Priority

    • DefaultTolerationSeconds

    • DefaultStorageClass

    • StorageObjectInUseProtection

    • PersistentVolumeClaimResize

    • RuntimeClass

    • CertificateApproval

    • CertificateSigning

    • CertificateSubjectRestriction

    • DefaultIngressClass

    • MutatingAdmissionWebhook

    • ValidatingAdmissionWebhook

    • ResourceQuota

    為什么要使用準入控制器?

    準入控制器能提供額外的安全和治理層,以幫助 Kubernetes 集群的用戶使用。

    執行策略:通過使用自定義準入控制器,我們可以驗證請求并檢查它是否包含特定的所需信息。例如,我們可以檢查 Pod 是否設置了正確的標簽。如果沒有,那可以一起拒絕該請求。某些情況下,如果請求中缺少一些字段,我們也可以更改這些字段。例如,如果 Pod 沒有設置資源限制,我們可以為 Pod 添加特定的資源限制。通過這樣的方式,除非明確指定,集群中的所有 Pod 都將根據我們的要求設置資源限制。Limit Range 就是這種實現。

    安全性:我們可以拒絕不遵循特定規范的請求。例如,沒有一個 Pod 請求可以將安全網關設置為以 root 用戶身份運行。

    統一工作負載:通過更改請求并為用戶未設置的規范設置默認值,我們可以確保集群上運行的工作負載是統一的,并遵循集群管理員定義的特定標準。這些就是我們開始使用 Kubernetes 準入控制器需要知道的所有理論。

    原文鏈接:https://medium.com/cloudlego/kubernetes-admission-controllers-request-interceptors-47a9b12c5303


    更多閱讀推薦

    • 都在說云原生,它的技術圖譜你真的了解嗎?

    • SRE 是如何保障穩定性的

    • 如何寫出讓 CPU 跑得更快的代碼?

    • Serverless 在 SaaS 領域的最佳實踐

    • 云原生人物志|Pulsar翟佳:社區的信任最重要

    • 阿里的 RocketMQ 如何讓雙十一峰值之下0故障

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的为什么要使用 Kubernetes 准入控制器的全部內容,希望文章能夠幫你解決所遇到的問題。

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