日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
為什么Kubernetes這么受歡迎?

為什么Kubernetes這么受歡迎?

作者:馮旭松編譯 2020-06-16 14:13:50

云計(jì)算 在本文發(fā)表時(shí),Kubernetes大約已經(jīng)有6年的歷史,在過(guò)去的兩年里,它的受歡迎程度不斷上升,成為最受歡迎的平臺(tái)之一。今年,它成為第三大最受歡迎平臺(tái)。如果你還沒(méi)聽(tīng)說(shuō)過(guò)Kubernetes,它是一個(gè)允許你運(yùn)行和協(xié)調(diào)容器工作負(fù)載的平臺(tái)。

企業(yè)官網(wǎng)是企業(yè)形象的一張重要名片。創(chuàng)新互聯(lián)建站的成都官網(wǎng)定制服務(wù),能夠?qū)⒊啥季W(wǎng)頁(yè)設(shè)計(jì)與企業(yè)的實(shí)力&公信力、產(chǎn)品服務(wù)優(yōu)勢(shì)、文化價(jià)值觀等有機(jī)結(jié)合,把握企業(yè)的獨(dú)特之處,突出重點(diǎn)核心內(nèi)容,并以恰如其分的設(shè)計(jì)風(fēng)格,抓住目標(biāo)用戶的關(guān)注點(diǎn)和興趣點(diǎn),幫助企業(yè)塑造好第一印象,營(yíng)銷型網(wǎng)站建設(shè)展現(xiàn)公司實(shí)力。成都官網(wǎng)定制,為你解決成都創(chuàng)新互聯(lián)網(wǎng)營(yíng)銷解決方案。

在本文發(fā)表時(shí),Kubernetes大約已經(jīng)有6年的歷史,在過(guò)去的兩年里,它的受歡迎程度不斷上升,成為最受歡迎的平臺(tái)之一。今年,它成為第三大最受歡迎平臺(tái)。如果你還沒(méi)聽(tīng)說(shuō)過(guò)Kubernetes,它是一個(gè)允許你運(yùn)行和協(xié)調(diào)容器工作負(fù)載的平臺(tái)。

容器最開(kāi)始是一種linux內(nèi)核進(jìn)程隔離構(gòu)造,包含2007年的cgroups和2002年的namespaces。自LXC在2008年面世后,容器變得更為重要,谷歌也開(kāi)發(fā)了自己內(nèi)部的“在容器中運(yùn)行一切”的機(jī)制,名為Borg??爝M(jìn)到2013年,Docker發(fā)布,徹底普及了容器。當(dāng)時(shí)Mesos是編排容器的主要工具,然而它并沒(méi)有被廣泛采用。Kubernetes在2015年發(fā)布,并迅速成為容器編排的事實(shí)標(biāo)準(zhǔn)。

為了了解Kubernetes的流行度,我們來(lái)思考一些問(wèn)題。開(kāi)發(fā)人員最后一次就部署生產(chǎn)應(yīng)用程序的方式達(dá)成一致是什么時(shí)候?你知道有多少開(kāi)發(fā)者是按開(kāi)箱即用的方式運(yùn)行工具的?如今有多少云操作工程師不了解應(yīng)用程序的工作原理?我們將在本文中探討答案。

基礎(chǔ)設(shè)施即YAML

從Puppet和Chef的世界來(lái)看,Kubernetes的一大轉(zhuǎn)變就是從基礎(chǔ)設(shè)施即代碼轉(zhuǎn)向?yàn)榛A(chǔ)架構(gòu)即YAML。Kubernetes中所有的資源,包括Pod、配置、部署、數(shù)據(jù)卷等,都可以簡(jiǎn)單地用YAML文件來(lái)表示。例如:

  
 
 
 
  1. apiVersion: v1 
  2. kind: Pod 
  3. metadata: 
  4. name: site 
  5. labels: 
  6. app: web 
  7. spec: 
  8. containers: 
  9. - name: front-end 
  10.   image: nginx 
  11.   ports: 
  12.     - containerPort: 80 

通過(guò)這種表示形式,DevOps或SRE無(wú)需使用Python、Ruby或JavaScript等編程語(yǔ)言編寫(xiě)代碼,即可更輕松且充分表達(dá)其工作負(fù)載。

將基礎(chǔ)設(shè)施作為數(shù)據(jù)的其他好處包括:

GitOps或Git操作版本控制。通過(guò)這種方法,你可以將所有的Kubernetes YAML文件都保存在Git倉(cāng)庫(kù)下,這樣你就可以精確地知道什么時(shí)候進(jìn)行了更改,誰(shuí)進(jìn)行了更改,以及到底更改了什么。這使得整個(gè)組織更加透明,避免了成員需要到哪里去尋找所需內(nèi)容的歧義,提高了效率。同時(shí),只需合并一個(gè)拉取請(qǐng)求就可以更容易地自動(dòng)對(duì)Kubernetes資源進(jìn)行更改。

可伸縮性。將資源定義為YAML使群集操作員能夠非常輕松地更改Kubernetes資源中的一個(gè)或兩個(gè)數(shù)字來(lái)更改縮放行為。Kubernetes有Pod水平自動(dòng)縮放控制器來(lái)幫助你確定一個(gè)特定部署需要擁有的最小和最大的Pod數(shù)量,以便能夠處理低流量和高流量時(shí)間。例如,如果你正在運(yùn)行的部署可能因?yàn)榱髁客蝗辉黾佣枰嗟娜萘?,你可以將maxReplicas從10改為20:

  
 
 
 
  1. apiVersion: autoscaling/v2beta2 
  2. kind: HorizontalPodAutoscaler 
  3. metadata: 
  4. name: myapp 
  5. namespace: default 
  6. spec: 
  7. scaleTargetRef: 
  8. apiVersion: apps/v1 
  9. kind: Deployment 
  10. name: myapp-deployment 
  11. minReplicas: 1 
  12. maxReplicas: 20 
  13. metrics: 
  14. - type: Resource 
  15. resource: 
  16.   name: cpu 
  17.   target: 
  18.     type: Utilization 
  19.     averageUtilization: 50 

安全和控制。YAML是驗(yàn)證在Kubernetes中部署了什么以及如何部署的好方法。例如,在安全性方面,其中一個(gè)主要關(guān)注點(diǎn)是工作負(fù)載是否以非root用戶身份運(yùn)行。我們可以利用conftest這樣的工具,一個(gè)YAML/JSON驗(yàn)證器,加上Open Policy Agent這個(gè)策略驗(yàn)證器,來(lái)檢查你的工作負(fù)載的SecurityContext是否允許容器以root身份運(yùn)行。為此,用戶可以使用一個(gè)簡(jiǎn)單的OPA rego策略表示,例如:

  
 
 
 
  1. package main 
  2.  
  3. deny[msg] { 
  4. input.kind = "Deployment" 
  5. not input.spec.template.spec.securityContext.runAsNonRoot = true 
  6. msg = "Containers must not run as root" 
  7. }  

云提供商集成??萍夹袠I(yè)的主要趨勢(shì)之一是在公共云提供商中運(yùn)行工作負(fù)載。在云提供商組件的幫助下,Kubernetes允許每個(gè)集群與它所運(yùn)行的云提供商進(jìn)行集成。例如,如果用戶在AWS中的Kubernetes中運(yùn)行應(yīng)用程序,并希望該應(yīng)用程序可以通過(guò)Service訪問(wèn),云提供商可幫助自動(dòng)創(chuàng)建一個(gè)LoadBalancer服務(wù),該服務(wù)將自動(dòng)配置一個(gè)Amazon Elastic Load Balancer,以將流量轉(zhuǎn)發(fā)到應(yīng)用程序Pod中。

擴(kuò)展

Kubernetes的可擴(kuò)展性很強(qiáng),開(kāi)發(fā)者很喜歡這一點(diǎn)?,F(xiàn)有的資源有例如Pods、Deployments、StatefulSets、Secrets、ConfigMaps等。但是,用戶和開(kāi)發(fā)者可以通過(guò)自定義資源定義的形式添加更多的資源。例如如果我們想定義一個(gè)CronTab資源,我們可以用這樣的方式來(lái)實(shí)現(xiàn):

  
 
 
 
  1. apiVersion: apiextensions.k8s.io/v1 
  2. kind: CustomResourceDefinition 
  3. metadata: 
  4. name: crontabs.my.org 
  5. spec: 
  6. group: my.org 
  7. versions: 
  8. - name: v1 
  9.   served: true 
  10.   storage: true 
  11.   Schema: 
  12.     openAPIV3Schema: 
  13.       type: object 
  14.       properties: 
  15.         spec: 
  16.           type: object 
  17.           properties: 
  18.             cronSpec: 
  19.               type: string 
  20.               pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$' 
  21.             replicas: 
  22.               type: integer 
  23.               minimum: 1 
  24.               maximum: 10 
  25. scope: Namespaced 
  26. names: 
  27. plural: crontabs 
  28. singular: crontab 
  29. kind: CronTab 
  30. shortNames: 
  31. - ct 

之后我們可以用類似以下方式來(lái)創(chuàng)建一個(gè)CronTab資源:

  
 
 
 
  1. apiVersion: "my.org/v1" 
  2. kind: CronTab 
  3. metadata: 
  4. name: my-cron-object 
  5. spec: 
  6. cronSpec: "* * * * */5" 
  7. image: my-cron-image 
  8. replicas: 5 

Kubernetes可擴(kuò)展性的另一種形式是它能夠讓開(kāi)發(fā)人員編寫(xiě)自己的Operator,Operator是運(yùn)行在Kubernetes集群中的特定進(jìn)程,遵循控制循環(huán)模式。Operator允許用戶通過(guò)與Kubernetes API通信自動(dòng)管理CRD(自定義資源定義)。

社區(qū)有一些工具允許開(kāi)發(fā)者創(chuàng)建自己的Operator。其中一個(gè)工具是Operator Framework及其Operator SDK。SDK為開(kāi)發(fā)者提供了一個(gè)框架,以便快速開(kāi)始創(chuàng)建Operator。例如,你可以使用它的命令行用這樣的方法開(kāi)始入門:

  
 
 
 
  1. $ operator-sdk new my-operator --repo github.com/myuser/my-operator 

這將為你的Operator創(chuàng)建整個(gè)模版,包括YAML文件和Golang代碼:

  
 
 
 
  1. |____cmd 
  2. | |____manager 
  3. | | |____main.go 
  4. |____go.mod 
  5. |____deploy 
  6. | |____role.yaml 
  7. | |____role_binding.yaml 
  8. | |____service_account.yaml 
  9. | |____operator.yaml 
  10. |____tools.go 
  11. |____go.sum 
  12. |____.gitignore 
  13. |____version 
  14. | |____version.go 
  15. |____build 
  16. | |____bin 
  17. | | |____user_setup 
  18. | | |____entrypoint 
  19. | |____Dockerfile 
  20. |____pkg 
  21. | |____apis 
  22. | | |____apis.go 
  23. | |____controller 
  24. | | |____controller.go 

然后你可以這樣添加APIs和控制器:

  
 
 
 
  1. $ operator-sdk add api --api-version=myapp.com/v1alpha1 --kind=MyAppService  
  2. $ operator-sdk add controller --api-version=myapp.com/v1alpha1 --kind=MyAppService 

最后構(gòu)建并將Operator鏡像推送到你的容器注冊(cè)表。

  
 
 
 
  1. $ operator-sdk build your.container.registry/youruser/myapp-operator 

如果開(kāi)發(fā)者需要有更多的控制權(quán),他們可以修改Golang文件中的模板代碼。例如,要修改控制器的具體細(xì)節(jié),他們可以對(duì)controller.go文件進(jìn)行修改。

另一個(gè)項(xiàng)目,KUDO,允許你只使用聲明性的YAML文件來(lái)創(chuàng)建Operator。例如,一個(gè)Apache Kafka的Operator將像這樣定義,它允許用戶通過(guò)幾個(gè)命令在Kubernetes之上安裝一個(gè)Kafka集群。

  
 
 
 
  1. $ kubectl kudo install zookeeper 
  2. $ kubectl kudo install kafka 

也可以使用另一個(gè)命令調(diào)整它。

  
 
 
 
  1. $ kubectl kudo install kafka --instance=my-kafka-name \ 
  2.         -p ZOOKEEPER_URI=zk-zookeeper-0.zk-hs:2181 \ 
  3.         -p ZOOKEEPER_PATH=/my-path -p BROKER_CPUS=3000m \ 
  4.         -p BROKER_COUNT=5 -p BROKER_MEM=4096m \ 
  5.         -p DISK_SIZE=40Gi -p MIN_INSYNC_REPLICAS=3 \ 
  6.         -p NUM_NETWORK_THREADS=10 -p NUM_IO_THREADS=20 

創(chuàng)新

在過(guò)去的幾年里,Kubernetes每隔三四個(gè)月就會(huì)有一個(gè)重要的版本,也就是說(shuō)每年都會(huì)有三四個(gè)重要的版本。推出新功能的數(shù)量并沒(méi)有放緩,在上一個(gè)版本中,有超過(guò)30個(gè)不同的新增功能和變化就是證明。此外,正如Kubernetes項(xiàng)目GitHub活動(dòng)所顯示的那樣,即使在這些困難時(shí)期,貢獻(xiàn)也沒(méi)有放緩的跡象。

新功能讓集群操作人員在運(yùn)行各種不同的工作負(fù)載時(shí)更加靈活。軟件工程師也喜歡擁有更多的控制權(quán),可以直接將他們的應(yīng)用程序部署到生產(chǎn)環(huán)境中。

社區(qū)

Kubernetes受歡迎的另一大方面是其強(qiáng)大的社區(qū)。首先,Kubernetes在2015年打出1.0版本時(shí),就被捐給了一個(gè)廠商中立的機(jī)構(gòu):云原生計(jì)算基金會(huì)。

隨著項(xiàng)目的推進(jìn),還有大量針對(duì)Kubernetes的不同領(lǐng)域的社區(qū)SIG(特殊興趣小組),他們不斷增加新的功能,使其更加用戶友好。

云原生基金會(huì)還組織了CloudNativeCon/KubeCon,截至目前,該活動(dòng)是世界上有史以來(lái)最大的開(kāi)源活動(dòng)。該活動(dòng)通常每年最多舉辦三次,聚集了成千上萬(wàn)的技術(shù)專家和專業(yè)人士,他們希望改進(jìn)Kubernetes及其生態(tài)系統(tǒng),并利用每三個(gè)月發(fā)布的一些新功能。

此外,云原生基金會(huì)還有一個(gè)技術(shù)監(jiān)督委員會(huì),該委員會(huì)與其SIG一起研究基金會(huì)在云原生生態(tài)系統(tǒng)中的新項(xiàng)目和現(xiàn)有項(xiàng)目。大多數(shù)項(xiàng)目都有助于提升Kubernetes的價(jià)值主張。

最后,我相信,如果沒(méi)有社區(qū)有意識(shí)的努力,互相彼此并歡迎任何新來(lái)者,Kubernetes就不會(huì)取得現(xiàn)在這樣的成功。

未來(lái)

開(kāi)發(fā)者在未來(lái)面臨的主要挑戰(zhàn)之一是如何更加關(guān)注代碼的細(xì)節(jié),而非代碼運(yùn)行的基礎(chǔ)設(shè)施。為此,無(wú)服務(wù)器正在成為解決這一挑戰(zhàn)的領(lǐng)先架構(gòu)范例之一。目前已經(jīng)有一些非常先進(jìn)的框架,如Knative和OpenFaas,它們使用Kubernetes將基礎(chǔ)設(shè)施從開(kāi)發(fā)者中抽象出來(lái)。

在本文中,我們簡(jiǎn)單地介紹了Kubernetes,但這僅是冰山一角,用戶還可以利用更多的資源、功能和配置。我們將繼續(xù)看到新的開(kāi)源項(xiàng)目和技術(shù)來(lái)增強(qiáng)和發(fā)展Kubernetes,正如我們提到的,貢獻(xiàn)和社區(qū)占據(jù)了很大地位。


當(dāng)前名稱:為什么Kubernetes這么受歡迎?
標(biāo)題URL:http://m.5511xx.com/article/coigcpj.html