您好,登錄后才能下訂單哦!
本篇內容介紹了“Kubernetes生產環境的應用有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Kubernetes是一個復雜并且學習曲線陡峭的編排工具,但它具有豐富的功能。生產操作應盡可能小心謹慎處理。如果您面臨內部人才短缺的問題,您可以將其外包給PaaS供應商,為您提供所有最佳實踐。但假設您在生產中獨自管理Kubernetes。在這種情況下,關注最佳實踐是非常重要的,特別是關于可觀察性、日志記錄、集群監控和安全配置。
我們很多人都知道,在生產環境中運行容器不是一件容易的事情。它需要大量的工作和計算資源等等。市場上有許多編排平臺,但Kubernetes已經獲得了巨大的吸引力和大多數云提供商的支持。
總之——Kubernetes、集裝箱化和微服務都是美好的基礎設施,但同時帶來了安全挑戰。Kubernetes Pod可以在所有基礎設施類之間快速切換,從而導致Pod之間的內部流量增加,引發安全隱患。此外,Kubernetes的攻擊面通常更大。您必須考慮到Kubernetes的高度動態且全新的環境無法與舊版安全工具完美融合的問題。
Gartner預測,到2022年,超過75%的全球組織將在生產中運行集裝箱應用程序,而目前這一比例還不到30%。到2025年,超過85%的全球組織將在生產中推動集裝箱應用,較2019年的不到35%有顯著增長。本地云應用程序需要高度的基礎設施自動化、DevOps和專門的操作技能,這些在普通IT組織中很難找到這些技能。
所以必須使用Kubernetes的一些策略,在安全性、監控、網絡、治理、存儲、容器生命周期管理和平臺選擇方面應用最佳實踐。下面讓我們來看看Kubernetes的一些生產最佳實踐。
在生產中運行Kubernetes并不容易; 有以下幾個方面需要注意。
管理大型分布式系統可能會很復雜,特別是當出現問題時,我們無法及時得到通知。為了確保應用實例正常工作,設置Kubernetes健康檢查至關重要。
通過創建自定義運行健康檢查,可以有效避免分布式系統中僵尸服務運行,具體可以根據環境和需要對其進行調整。
Readiness-就緒探針
就緒探針的目的是讓Kubernetes知道該應用是否已經準備好為流量服務。Kubernetes將始終確保準備就緒探針通過之后開始分配服務,將流量發送到Pod。
你怎么知道你的應用程序是活的還是死的?存活探針可以讓你做到這一點。如果你的應用死了,Kubernetes會移除舊的Pod并用新Pod替換它。
為單個容器指定資源請求和限制是一個很好的實踐。
另一個好的實踐是將Kubernetes環境劃分為不同團隊、部門、應用程序和客戶機的獨立名稱空間。
Kubernetes資源使用指的是容器/pod在生產中所使用的資源數量。
因此,密切關注pods的資源使用情況是非常重要的。一個明顯的原因是成本,因為越高的資源利用證明越少的資源浪費。
Ops團隊通常希望優化和最大化pods消耗的資源百分比。資源使用情況是Kubernetes環境實際優化程度的指標之一。
您可以認為優化后的Kubernetes環境中運行的容器的平均CPU等資源利用率是最優的。
RBAC代表基于角色的訪問控制。它是一種用于限制系統/網絡上的用戶和應用程序的訪問和準入的方法。
他們從Kubernetes 1.8版本引入了RBAC。使用rbac.authorization.k8s RBAC用于創建授權策略。
在Kubernetes中,RBAC用于授權,使用RBAC,您將能夠授予用戶、帳戶、添加/刪除權限、設置規則等權限。因此,它基本上為Kubernetes集群添加了額外的安全層。RBAC限制誰可以訪問您的生產環境和集群。
生產級Kubernetes基礎設施通常需要考慮某些關鍵方面,例如高可用性、多主機、多etcd Kubernetes集群等。此類集群的配置通常涉及到Terraform或Ansible等工具。
一旦集群都設置好了,并且為運行應用程序創建了pods,這些pods就配備了負載平衡器;這些負載均衡器將流量路由到服務。開源的Kubernetes項目并不是默認的負載平衡器;因此,它需要與NGINX Ingress controller與HAProxy或ELB等工具集成,或任何其他工具,擴大Kubernetes的Ingress插件,以提供負載均衡能力。
標簽就像附加到對象上的鍵/值對,比如pods。標簽是用來標識對象的屬性的,這些屬性對用戶來說是重要的和有意義的。在生產中使用Kubernetes時,不能忽視的一個重要問題是標簽;標簽允許批量查詢和操作Kubernetes對象。標簽的特殊之處在于,它們還可以用于識別Kubernetes對象并將其組織成組。這樣做的最佳用例之一是根據pod所屬的應用程序對它們進行分組。在這里,團隊可以構建并擁有任意數量的標簽約定。
使用Kubernetes時,設置網絡策略至關重要。
網絡策略只不過是一個對象,它使你能夠明確地聲明和決定哪些流量是允許的,哪些是不允許的。這樣,Kubernetes將能夠阻止所有其他不想要的和不符合規則的流量。在我們的集群中定義和限制網絡流量是強烈推薦的基本且必要的安全措施之一。
Kubernetes中的每個網絡策略都定義了一個如上所述的授權連接列表。無論何時創建任何網絡策略,它所引用的所有pod都有資格建立或接受列出的連接。簡單地說,網絡策略基本上就是授權和允許連接的白名單——一個連接,無論它是到
還是從
pod,只有在應用于pod的至少一個網絡策略允許的情況下才被允許。
在使用Kubernetes時,監控部署是至關重要的。確保配置、性能和流量保持安全更是重要。如果不進行日志記錄和監控,就不可能診斷出發生的問題。為了確保合規性,監視和日志記錄變得非常重要。
在進行監視時,有必要在體系結構的每一層上設置日志記錄功能。生成的日志將幫助我們啟用安全工具、審計功能和分析性能。
運行無狀態應用要比運行有狀態應用簡單得多,但隨著Kubernetes運營商的不斷增長,這種想法正在改變。對于剛接觸Kubernetes的團隊來說,建議首先使用無狀態應用程序。
建議使用無狀態后端,這樣開發團隊就可以確保不存在長時間運行的連接,從而增加了擴展的難度。使用無狀態,開發人員還可以更有效地、零停機部署應用程序。
人們普遍認為,無狀態應用程序可以方便地根據業務需要進行遷移和擴展
Kubernetes有三種用于部署的自動伸縮功能:水平pod自動伸縮(HPA)、垂直pod自動伸縮(VPA)和集群自動伸縮。
水平pod autoscaler根據感知到的CPU利用率自動擴展deployment、replicationcontroller, replicaset, statefulset的數量。
Vertical pod autoscaling為CPU和內存請求和限制推薦合適的值,它可以自動更新這些值。
Cluster Autoscaler擴展和縮小工作節點池的大小。它根據當前的利用率調整Kubernetes集群的大小。
控制在集群中運行所有容器的鏡像源。如果您允許您的Pod從公共資源中拉取鏡像,您就不知道其中真正運行的是什么。
如果從受信任的注冊表中提取它們,則可以在注冊表上應用策略以提取安全和經過認證的鏡像。
不斷評估應用程序的狀態和設置,以學習和改進。例如,回顧容器的歷史內存使用情況可以得出這樣的結論:我們可以分配更少的內存,在長期內節省成本。
使用Pod優先級,您可以決定設置不同服務運行的重要性。例如,為了更好的穩定性,你需要確保RabbitMQ pod比你的應用pod更重要。或者你的入口控制器pods比數據處理pods更重要,以保持服務對用戶可用。
通過在HA中運行所有服務,支持集群和服務的零停機升級。這也將保證您的客戶獲得更高的可用性。
使用pod反親和性來確保在不同的節點上調度一個pod的多個副本,從而通過計劃中的和計劃外的集群節點停機來確保服務可用性。
使用pod Disruptions策略,不惜一切代價確保您有最低的Pod副本數量!
“Kubernetes生產環境的應用有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。