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