筆記。 翻譯。:原文作者是 Théo Chamley,Google 雲解決方案架構師。 在 Google Cloud 博客的這篇文章中,他提供了其公司更詳細指南的摘要,稱為“
在本文中,我們將列出在 Kubernetes 上有效運行容器所需了解和執行的一系列事項。 那些希望深入了解細節的人應該閱讀材料
1.使用原生容器日誌機制
如果應用程序運行在 Kubernetes 集群上,則不需要太多日誌。 您正在使用的集群中可能已經內置了集中式日誌記錄系統。 在使用 Kubernetes Engine 的情況下,這是負責的
如果需要,您還可以將日誌寫入
2. 確保容器是無狀態且不可變的
為了使容器在 Kubernetes 集群中正常運行,它們必須是無狀態且不可變的。 一旦滿足這些條件,Kubernetes 就可以完成其工作,在需要的時間和地點創建和銷毀應用程序實體。
無狀態 意味著任何狀態(任何類型的持久數據)都存儲在容器外部。 為此,根據需要,可以使用不同類型的外部存儲:
不可變 意味著容器在其生命週期內不會被修改:沒有更新、補丁、配置更改。 如果您需要更新應用程序代碼或應用補丁,請創建新映像並部署它。 建議將容器配置(監聽端口、運行時環境選項等)移至外部
使用掛載在 pod 中的 ConfigMap 作為配置來更新 Kubernetes 中的 Deployment 配置的示例
3.避免特權容器
您不會在服務器上以 root 身份運行應用程序,對嗎? 如果攻擊者進入該應用程序,他將獲得 root 訪問權限。 同樣的注意事項也適用於不運行特權容器。 如果需要更改主機上的設置,可以為容器指定特定的設置 能力 使用選項 securityContext
如果您管理集群,則可以使用
4.避免以 root 身份運行
特權容器已經討論過,但除此之外,如果您不在容器內以 root 身份運行應用程序,那就更好了。 如果攻擊者在具有 root 權限的應用程序中發現允許執行代碼的遠程漏洞,之後他能夠通過未知的漏洞離開容器,他將獲得主機上的 root 權限。
避免這種情況的最好方法是首先不要以 root 身份運行任何東西。 為此,您可以使用指令 USER
в Dockerfile
或 runAsUser
在 Kubernetes 中。 集群管理員還可以使用以下命令配置強制行為
5. 使應用程序易於監控
與日誌記錄一樣,監控是應用程序管理的一個組成部分。 Kubernetes 社區中流行的監控解決方案是
Stackdriver 上的 Kubernetes 儀表板
Prometheus 希望應用程序將指標轉發到 HTTP 端點。 可用於此
6. 提供應用程序的健康狀態
生產中的應用程序管理得益於其將其狀態傳達給整個系統的能力。 應用程序正在運行嗎? 可以嗎? 您準備好接收流量了嗎? 他表現如何? 解決這個問題最常見的方法就是實施健康檢查 (健康檢查)。 Kubernetes 有兩種類型:
用於活性探針 (活力檢查) 應用程序必須有一個 HTTP 端點,如果它可以正常工作並且滿足其基本依賴性,則該端點會返回“200 OK”響應。 用於就緒探針 (服務準備情況檢查) 如果應用程序處於健康狀態、初始化步驟已完成並且任何有效請求都不會導致錯誤,則應用程序必須有另一個返回“200 OK”響應的 HTTP 端點。 僅當應用程序根據這些檢查準備就緒時,Kubernetes 才會將流量路由到容器。 如果活躍狀態和就緒狀態之間沒有差異,則可以合併兩個端點。
您可以在 Google 開發者倡導者 Sandeep Dinesh 的相關文章中閱讀更多相關內容:“
7. 仔細選擇您的鏡像版本
大多數公共和私人圖像使用類似於中描述的標記系統 latest
可以頻繁地從一個圖像移動到另一個圖像 - 如果您需要可預測和可重複的構建和安裝,則不能依賴。
您可以使用標籤 X.Y.Z
(它們幾乎總是不變),但在這種情況下,請跟踪圖像的所有補丁和更新。 如果您使用的圖像有標籤 X.Y
,這是一個中庸之道的好選擇。 通過選擇它,您將自動接收補丁,同時依賴應用程序的穩定版本。
譯者PS
另請閱讀我們的博客:
- «
CNCF 關於容器、雲原生和 Kubernetes 的新統計數據 “; - «
設計基於容器的應用程序的 7 個原則 “; - «
在 Kubernetes 中避免被黑客攻擊的 11 種方法 “; - «
我們在小型項目中使用 Kubernetes 的經驗 » (評論和視頻報導); - «
監控和 Kubernetes » (評論和視頻報導); - «
我們使用 dapp 快速方便地構建 CI/CD 的 Docker 鏡像 » (評論和視頻報導); - «
使用 Docker 進行持續交付實踐 » (評論和視頻報導); - «
2018 年微服務瘋狂之死 “。
來源: www.habr.com