日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
在生產(chǎn)環(huán)境中,你可以遵循的那些Kubernetes優(yōu)秀實(shí)踐

在生產(chǎn)環(huán)境中,你可以遵循的那些Kubernetes優(yōu)秀實(shí)踐

譯文
作者:陳峻編譯 2020-12-25 09:00:00

開發(fā)

前端

云計(jì)算 本文從可用性、可擴(kuò)展性、安全性、負(fù)載平衡、資源管理、以及監(jiān)控等方面,深入討論了在生產(chǎn)環(huán)境中,可以遵循的Kubernetes各種優(yōu)秀實(shí)踐。

為紅旗等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及紅旗網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、紅旗網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

【51CTO.com快譯】根據(jù)Gartner的一項(xiàng)預(yù)測(cè):到2022年,全球?qū)⒂谐^75%的組織,會(huì)在生產(chǎn)環(huán)境中運(yùn)行容器化的應(yīng)用(如今該比例不到30%)。而到2025年,該比例將會(huì)超過85%。由于云原生應(yīng)用需要基礎(chǔ)架構(gòu)的高度自動(dòng)化,目前以Docker和Kubernetes為代表的DevOps實(shí)現(xiàn)平臺(tái),正在以容器編排工具的形式,讓更多的公司能夠以更快的速度,構(gòu)建、發(fā)布和交付其軟件產(chǎn)品。

總的說來,Kubernetes具有支持自動(dòng)擴(kuò)展、零停機(jī)時(shí)間部署、服務(wù)發(fā)現(xiàn)、自動(dòng)部署、以及回滾等出色且豐富的功能,非常適合于大規(guī)模的容器部署與管理。雖然Kubernetes能夠靈活地分配資源和工作負(fù)載,但是具有復(fù)雜而陡峭的學(xué)習(xí)曲線。為了省時(shí)省力,您當(dāng)然可以將其外包給KaaS提供商。不過,如果您需要對(duì)生產(chǎn)環(huán)境中的Kubernetes具有全面的掌控能力,那么就需要花費(fèi)一些時(shí)間,來掌握Kubernetes的可觀察性、日志記錄、集群監(jiān)控、以及安全性配置等方面。

與此同時(shí),由于在生產(chǎn)環(huán)境中運(yùn)行容器往往需要大量的計(jì)算資源與能力,因此人們紛紛選用各種基于云的編排平臺(tái)。不過,這其中也潛在著一些安全問題。例如:Kubernetes Pod雖然可以在所有基礎(chǔ)架構(gòu)中快速啟動(dòng),但是隨著其Pod之間內(nèi)部流量的增加,Kubernetes的攻擊面會(huì)逐漸增大,安全隱患隨之增多。此外,Kubernetes固有的高度動(dòng)態(tài)、且短暫的運(yùn)行環(huán)境,往往無法與傳統(tǒng)的安全工具完美融合。我們亟待開發(fā)出一種能夠滿足存儲(chǔ)安全性、網(wǎng)絡(luò)監(jiān)控與治理、容器生命周期管理、以及平臺(tái)選擇等需求的Kubernetes配置策略。

下面,我將和您討論在生產(chǎn)環(huán)境中,可遵循的Kubernetes各種優(yōu)秀實(shí)踐與探索。

使用就緒且存活的探針(Probes)進(jìn)行健康檢查

對(duì)于線上業(yè)務(wù)而言,保證服務(wù)的正常穩(wěn)定是重中之重。而對(duì)于故障服務(wù)的及時(shí)處理,避免影響業(yè)務(wù),以及快速恢復(fù)一直是DevOps的難點(diǎn)。在管理大型且分布式的系統(tǒng)時(shí),為了確保應(yīng)用實(shí)例的正常運(yùn)行,我們需要提前設(shè)置好Kubernetes的運(yùn)行狀況檢查。

您可以根據(jù)目標(biāo)環(huán)境與需求,來創(chuàng)建并定制各種運(yùn)行狀況檢查項(xiàng)。例如,我們可以用到WeaveWorks。它能夠創(chuàng)建一個(gè)虛擬的網(wǎng)絡(luò),以網(wǎng)絡(luò)交換機(jī)的方式,連接到部署在多臺(tái)主機(jī)上的Docker容器,便于應(yīng)用無需逐個(gè)配置端口映射和鏈接等信息。具體內(nèi)容請(qǐng)參見--https://www.weave.works/blog/resilient-apps-with-liveness-and-readiness-probes-in-kubernetes。

值得注意的是,那些就緒(Readiness)的探針可以讓Kubernetes知曉應(yīng)用是否已準(zhǔn)備好了為流量提供對(duì)應(yīng)的服務(wù)。也就是說,在分配服務(wù)并將流量發(fā)送給Pod之前,Kubernetes需要始終確保擁有正常的就緒探針。

那么,我們又該如何獲悉應(yīng)用的有效性呢?在此,我們需要通過存活(Liveliness)探針,以確保應(yīng)用一旦失效,Kubernetes會(huì)立即刪除舊的Pod,并將其替換為新的Pod。

通過上述對(duì)于Kubernetes的健康檢查,我們可以及時(shí)對(duì)于檢測(cè)到的故障服務(wù),采取自動(dòng)下線,或重啟服務(wù)的方式,使其自行恢復(fù)。

資源管理

通常,我們需要為單個(gè)容器指定或限制資源的請(qǐng)求數(shù),將Kubernetes所處的環(huán)境分為不同的命名空間(namespace),以供不同的團(tuán)隊(duì)、部門、應(yīng)用、以及客戶來使用。具體請(qǐng)參見--http://blog.kubecost.com/blog/requests-and-limits/。

值得一提的是,此處的Kubernetes資源使用情況是指在生產(chǎn)環(huán)境中,容器與Kubernetes Pod的資源被使用的數(shù)量。據(jù)此,我們可以合理地控制好在轉(zhuǎn)化時(shí)所需的成本。此外,通常運(yùn)營團(tuán)隊(duì)還需要獲悉容器的CPU平均使用率,以及Pod所消耗的資源百分比,進(jìn)而判定目前的Kubernetes生產(chǎn)環(huán)境是否處于已被優(yōu)化的最佳狀態(tài)。

啟用RBAC

RBAC(基于角色的訪問控制)是一種許可或限制用戶和應(yīng)用,對(duì)于系統(tǒng)和網(wǎng)絡(luò)訪問的方法。Kubernetes從1.8版開始便引入了RBAC。我們可以通過rbac.authorization.k8s.io API組,來創(chuàng)建各種授權(quán)策略,限制能夠訪問目標(biāo)生產(chǎn)環(huán)境和群集的用戶與進(jìn)程。

可以說,RBAC為Kubernetes集群增加了一個(gè)額外的安全層。您可以在Kubernetes中對(duì)某些帳戶的權(quán)限進(jìn)行添加或刪除,以及設(shè)置具體的訪問規(guī)則。具體內(nèi)容請(qǐng)參見--https://medium.com/@danielckv/what-is-rbac-in-kubernetes-c54457eff2dc

群集配置和負(fù)載平衡

要滿足生產(chǎn)環(huán)境級(jí)別,Kubernetes架構(gòu)需要具備高可用性、multi-master、以及multi-etcd群集等特性。在實(shí)際應(yīng)用中,我們往往會(huì)使用諸如Terraform、Ansible之類的工具,來配置群集。

一旦我們?cè)O(shè)置好了所有的集群,并為正在運(yùn)行的應(yīng)用創(chuàng)建了Pod,那么我們就該考慮為這些Pod配備負(fù)載平衡器,以便將各種網(wǎng)絡(luò)流量路由到對(duì)應(yīng)的服務(wù)處。不過,開源的Kubernetes項(xiàng)目并不會(huì)默認(rèn)提供負(fù)載均衡器。因此,我們需要與諸如NGINX Ingress controller、HAProxy或ELB之類的工具,或是針對(duì)Kubernetes的插件,來實(shí)現(xiàn)負(fù)載平衡的功能。具體內(nèi)容請(qǐng)參見--https://medium.com/avmconsulting-blog/external-ip-service-type-for-kubernetes-ec2073ef5442。

將標(biāo)簽附加到Kubernetes對(duì)象

我們可以將諸如鍵/值對(duì)(key/value pairs)之類的標(biāo)簽,作為某種屬性附加到Pod等對(duì)象上。在生產(chǎn)環(huán)境中,我們可以通過標(biāo)簽,對(duì)Kubernetes對(duì)象進(jìn)行識(shí)別,分組,批量查詢,以及其他操作。例如:我們可以根據(jù)容器所屬的應(yīng)用,對(duì)容器進(jìn)行分組。當(dāng)然,團(tuán)隊(duì)可以事先建立好任意數(shù)量的標(biāo)簽約定。具體內(nèi)容請(qǐng)參見--https://theithollow.com/2019/01/31/kubernetes-services-and-labels/。

設(shè)置網(wǎng)絡(luò)策略

網(wǎng)絡(luò)策略能夠方便我們通過明確的聲明,來決定哪些流量適合通過,進(jìn)而讓Kubernetes能夠阻止所有不合格(non-conforming)或不需要的流量。例如,作為基本的安全措施,我們可以在群集中定義和限制某些網(wǎng)絡(luò)流量。

實(shí)際上,Kubernetes中的每個(gè)網(wǎng)絡(luò)策略都可以被定義為一個(gè)授權(quán)連接的列表。根據(jù)已創(chuàng)建的網(wǎng)絡(luò)策略,只有滿足條件的Pod才有資格接受既定的連接。簡(jiǎn)而言之,網(wǎng)絡(luò)策略會(huì)根據(jù)白名單,來授權(quán)和允許“從”或“向”Pod建立的連接。具體內(nèi)容請(qǐng)參見--https://theithollow.com/2019/10/21/kubernetes-network-policies/。

集群監(jiān)控和日志記錄

集群監(jiān)控,對(duì)于確保生產(chǎn)環(huán)境中Kubernetes的配置、性能和流量等方面的安全性,都是至關(guān)重要的。同時(shí),我們有必要在系統(tǒng)架構(gòu)的每一層上設(shè)置日志功能。這些生成的日志將有助于我們通過安全工具,來執(zhí)行分析和審計(jì)功能??梢哉f,沒有日志和監(jiān)控,我們就不可能診斷出發(fā)生的問題,也就無法確保合規(guī)性。具體內(nèi)容請(qǐng)參見--https://dzone.com/articles/logging-amp-monitoring-of-kubernetes-applications。

從無狀態(tài)的應(yīng)用開始

由于運(yùn)行無狀態(tài)應(yīng)用要比有狀態(tài)的應(yīng)用容易得多,因此對(duì)于剛上手K??ubernetes的團(tuán)隊(duì)而言,他們可以使用無狀態(tài)的后端,通過避免建立長(zhǎng)期運(yùn)行(long-running)的連接,輕松地根據(jù)業(yè)務(wù)的需求,按需進(jìn)行靈活的遷移和擴(kuò)展。此外,通過使用無狀態(tài),開發(fā)人員還可以在零停機(jī)時(shí)間狀態(tài)下,更有效地部署應(yīng)用程序。

啟用自動(dòng)擴(kuò)展插件(Auto Scaler)

Kubernetes提供三種用于部署的自動(dòng)擴(kuò)展功能,即:水平Pod自動(dòng)擴(kuò)展插件(HPA)、垂直Pod自動(dòng)擴(kuò)展插件(VPA)、以及群集自動(dòng)擴(kuò)展。其中:

  • 水平Pod自動(dòng)擴(kuò)展插件,會(huì)根據(jù)感知到的CPU利用率,自動(dòng)擴(kuò)展部署、復(fù)制控制器、副本(replica)集、以及狀態(tài)集的數(shù)量。
  • 垂直Pod自動(dòng)擴(kuò)展插件,會(huì)為CPU和內(nèi)存的請(qǐng)求數(shù)和限定數(shù)設(shè)置合適的值,并且可以自動(dòng)更新這些值。
  • 群集自動(dòng)擴(kuò)展,可以擴(kuò)展和收縮Worker節(jié)點(diǎn)池的大小,并能夠根據(jù)當(dāng)前的利用率,來調(diào)整Kubernetes集群的大小。

控制運(yùn)行時(shí)(run times)的各種源頭

如果您只允許Pod從公共資源中提取鏡像,那么您可能對(duì)運(yùn)行時(shí)一無所知。因此,我們需要對(duì)群集中的所有容器進(jìn)行源頭控制。通過在注冊(cè)表上應(yīng)用策略,我們就可以從受信任的注冊(cè)表中提取安全、且經(jīng)過認(rèn)證的鏡像。

持續(xù)評(píng)估

我們需要不斷評(píng)估目標(biāo)應(yīng)用的狀態(tài),以及設(shè)置的合理性。例如,我們可以通過查看某個(gè)容器的歷史內(nèi)存使用情況,從長(zhǎng)遠(yuǎn)的角度來分配更少、卻又更加合理的內(nèi)存數(shù)量,以節(jié)省成本。

保護(hù)那些重要的服務(wù)

通過使用Pod優(yōu)先級(jí),您可以對(duì)不同服務(wù)的重要程度進(jìn)行設(shè)置。例如,為了獲得更好的穩(wěn)定性,您可以將RabbitMQ Pod設(shè)置得比其他應(yīng)用Pod更為重要;或者通過把Ingress Controller Pod的重要性設(shè)置得優(yōu)先于數(shù)據(jù)處理Pod,進(jìn)而保持那些面對(duì)用戶的服務(wù)的可用性。

零停機(jī)時(shí)間

說到可用性,我們還可以通過設(shè)置群集和服務(wù)的HA(高可用性),來確保零宕機(jī)時(shí)間。例如,使用Pod的反親和性(Pod anti affinity),我們可以確保在不同節(jié)點(diǎn)上,分配一個(gè)Pod的多個(gè)副本,并通過計(jì)劃內(nèi)和計(jì)劃外的群集節(jié)點(diǎn)中斷,來確保服務(wù)的可用性。

此外,通過使用Pod的中斷預(yù)算(Pod disruption budgets),我們也能夠確保副本數(shù)量最少。

小結(jié)

綜上所述,為了交付出平穩(wěn)可靠的應(yīng)用服務(wù),我們從可用性、可擴(kuò)展性、安全性、負(fù)載平衡、資源管理、以及監(jiān)控等方面,深入討論了在生產(chǎn)環(huán)境中,可以遵循的Kubernetes各種優(yōu)秀實(shí)踐。


文章名稱:在生產(chǎn)環(huán)境中,你可以遵循的那些Kubernetes優(yōu)秀實(shí)踐
網(wǎng)頁鏈接:http://www.dlmjj.cn/article/djcjdgs.html