K8s生產環境 設定容器的技巧

2022-09-22 03:27:11 字數 1350 閱讀 3040

執行構建良好的容器會極大的影響環境的整體效能和安全性。

關於容器安全的詳細資訊,也可以參考 rancher 的容器安全指南。以下是一些設定容器的技巧。

在可能的情況下,你應該盡量在乙個通用的容器基礎作業系統上進行標準化。

alpine 和 busybox 等較小的發行版減少了容器映象的大小,並且通常具有較小的漏洞。

流行的發行版如 ubuntu、fedora 和 centos 等都經過了大量的測試,並提供了許多的功能。

如果你的微服務是乙個獨立的靜態二進位制,你應該使用from scratch容器。

from scratch容器是乙個官方 docker 映象,它是空的,這樣你就可以用它來設計最小的映象。

這將具有最小的攻擊層和最小的映象。

在可能的情況下,在容器內執行程序時使用非特權使用者。雖然容器執行時提供了隔離,但仍然可能存在漏洞和攻擊。如果容器以 root 身份執行,無意中或意外的主機掛載也會受到影響。有關為 pod 或容器配置安全上下文的詳細資訊,請參考 kubernetes 文件。

將 cpu 和記憶體限制應用於你的 pod。這可以幫助管理工作節點上的資源,並避免發生故障的微服務影響其他微服務。

在標準 kubernetes 中,您可以在命名空間級別上設定資源限制。在 rancher 中,您可以在專案級別上設定資源限制,它們將繼承到專案內的所有命名空間。詳情請參考 rancher 文件。

在設定資源配額時,如果您在專案或命名空間上設定了任何與 cpu 或記憶體相關的內容(即限制或保留),所有容器都需要在建立期間設定各自的 cpu 或記憶體字段。為了避免在建立工作負載期間對每個容器設定這些限制,可以在命名空間上指定乙個預設的容器資源限制。

kubernetes 文件中有許多關於如何在容器級別和命名空間級別設定資源限制的資料。

你應該將 cpu 和記憶體需求應用到你的 pod 上。這對於通知排程器需要將你的 pod 放置在哪種型別的計算節點上,並確保它不會過度配置該節點資源至關重要。在 kubernetes 中,你可以通過在 pod 的容器規範的資源請求欄位中定義resources.requests來設定資源需求。詳情請參考kubernetes 文件。

注意: 如果您為 pod 所部署的命名空間設定了資源限制,而容器沒有特定的資源請求,則不允許啟動 pod。為了避免在建立工作負載時對每個容器設定這些字段,可以在命名空間上指定乙個預設的容器資源限制。

建議在容器級別上定義資源需求,否則,排程程式會做出一些假設,這些假設可能會在集群載入時對您的應用程式沒有幫助。

為你的容器配置存活探針和就緒探針。除非你的容器完全崩潰,否則 kubernetes 不會知道它是不健康的,除非你建立乙個可以報告容器狀態的端點或機制。或者,確保你的容器在不健康的情況下停止並崩潰。

kubernetes 文件展示了如何配置存活和就緒探測器。

K8s生產架構

kubernetes的生產架構,如圖所示 k8s平台 日誌管理 使用elasticsearch filebeat 和 kibana技術棧 監控告警管理 使用cadvisor prometheus和grafana技術棧 微服務架構 使用service mesh服務網格中的istio方案 devops ...

k8s 容器鉤子

有兩個鉤子暴露在容器中 poststart 這個鉤子在建立容器之後立即執行。但是,不能保證鉤子會在容器入口點之前執行。沒有引數傳遞給處理程式。kind deployment metadata name testlifecycle labels spec replicas 1 selector mat...

k8s的 容器映象

my registry.example.com 5000 example web example v1.0.1 2.綠色部分 registry 埠 3.紫色部分 repository 名字 4.紅色部分 image 名字 5.棕色部分 image 標籤 更新映象 如果您期望每次啟動 pod 時,都強...