如果將服務(wù)器應(yīng)用程序通過容器移動到云平臺中,則需要進行一些容器編排,Kubernetes在此將發(fā)揮重要作用。
人們可能已經(jīng)注意到,香港免備案主機,很多企業(yè)現(xiàn)在都在采用Kubernetes,例如AWS、IBM/Red Hat、Microsoft、VMware等。甚至擁有自己的容器編排程序Docker Swarm的Docker現(xiàn)在也支持Kubernetes。那么為什么每個人都這么做?
隨著越來越多的企業(yè)繼續(xù)將應(yīng)用程序從服務(wù)器和虛擬機遷移到容器,通常都會采用Kubernetes。
在以往,企業(yè)在服務(wù)器硬件上運行服務(wù)器程序。隨后出現(xiàn)了虛擬機(VM),可以在一個平臺上運行多個操作系統(tǒng)和應(yīng)用程序。這使企業(yè)能夠在一臺服務(wù)器上運行十次或更多的服務(wù)器實例。這反過來又使企業(yè)能夠在這些虛擬機之上按需運行,這既節(jié)省了成本,又帶來了很大的靈活性。
企業(yè)可以在單個服務(wù)器上運行更多服務(wù)器程序,這將帶來更多的成本節(jié)省和靈活性。這正是容器所提供的優(yōu)勢。
人們將會看到虛擬機管理程序(例如Hyper-V、KVM和Xen)通過仿真虛擬硬件而起作用。這使得它們在系統(tǒng)需求方面供過于求,但是,容器使用共享的操作系統(tǒng)。這意味著它們比管理程序效率更高。
容器并不是虛擬化硬件,而是位于單個Linux實例之上。這意味著企業(yè)可以在小容器中運行應(yīng)用程序。實際上,用戶可以運行的服務(wù)器應(yīng)用程序?qū)嵗龜?shù)是在相同硬件上的虛擬化的四到十倍。
容器還適合進行持續(xù)集成(CI)/持續(xù)部署/(CD)。這是一種Devops方法,旨在鼓勵開發(fā)人員盡早且經(jīng)常地將其代碼集成到共享存儲庫中,然后快速有效地部署代碼。
最后,容器使開發(fā)人員能夠輕松地打包、傳輸和運行任何應(yīng)用程序,這些應(yīng)用程序輕巧、可遷移、自給自足,幾乎可以在任何地方運行。
那么有一個問題,就是如何管理所有這些容器?使用容器,單個服務(wù)器可能有數(shù)十個工作負載開始、工作和結(jié)束。這就是Kubernetes發(fā)揮作用的地方。
Kubernetes的發(fā)展歷史
Kubernetes的起源始于谷歌公司的Borg。它是用于谷歌大規(guī)模工作管理的大型內(nèi)部集群管理系統(tǒng)。此后不久,谷歌公司在2014年發(fā)布了第一版Kubernetes。這個開源的容器編排程序可以將容器部署到一組機器中,提供運行狀況管理和復(fù)制功能,并使容器易于相互連接以及與其他程序連接。
因此,Kubernetes具有兩個主要優(yōu)勢。得益于其Borg血統(tǒng),它已經(jīng)通過了全球比較大的容器用戶谷歌公司的測試。而且,通過使其開源,Kubernetes擺脫了成為谷歌公司特定程序的負擔(dān)。尤其是在2018年8月,谷歌公司將Kubernetes項目的云計算資源移交給了新家,即獨立的云原生計算平臺(CNCF)時。
自從CNCF接管Kubernetes以來,它已經(jīng)從一個由谷歌公司和Red Hat公司主導(dǎo)的項目變成了一個擁有數(shù)千個貢獻者的項目。在此期間,幾乎消除了所有競爭。根據(jù)研究機構(gòu)Red Monk公司的說法,目前仍然存在競爭者,但即使到2017年,名列《財富》雜志100強的50%以上的公司使用Kubernetes作為其容器編排平臺。
Kubernetes可以做些什么
谷歌公司首席工程師兼Kubernetes首席架構(gòu)師Brian Grant表示,“Kubernetes是一個可遷移的、可擴展的開源平臺,用于管理容器化的工作負載和服務(wù),同時促進聲明性配置和自動化。”那么這意味著什么呢?
Kubernetes運行在Linux之上,可與Pod、一個或多個容器的組一起部署到單個節(jié)點,物理服務(wù)器或虛擬機。其命令通常通過Kubernetes的命令行配置工具kubectl發(fā)送,它定義了工作的元數(shù)據(jù)和規(guī)范。這些描述由以JavaScript對象表示法(JSON)或YAML編寫的聲明性語句組成。這些通過Kubernetes API描述了用戶需要運行的應(yīng)用程序,它們需要哪些容器映像以及創(chuàng)建集群所需狀態(tài)所需的網(wǎng)絡(luò)和存儲資源。
Kubernetes主站將接受命令,找出如何使用可用資源以優(yōu)秀的方式運行它們,并通過Pod生命周期事件生成器(PLEG)將用戶的行進命令中繼到Pod。用戶無需擔(dān)心確切的細節(jié)。
Kubernetes會找出最適合該任務(wù)的節(jié)點。Kubernetes分配資源并分配完成工作所需的Pod。因此,Kubernetes可以自動設(shè)置、監(jiān)視和管理容器。
具體來說,Kubernetes使用戶能夠完成以下任務(wù):
控制和自動化應(yīng)用程序部署和更新。使用它,可以描述已部署容器的所需狀態(tài)。然后,Kubernetes以受控的速率將容器化應(yīng)用程序的實際狀態(tài)更改為所需狀態(tài)。例如,用戶可以創(chuàng)建新容器、刪除現(xiàn)有容器或更新容器的軟件內(nèi)容。 自動化容器配置。用戶為Kubernetes提供了一個節(jié)點集群,可用于運行容器化任務(wù)。然后,告訴Kubernetes每個容器需要多少CPU和內(nèi)存(RAM)。然后,Kubernetes會自動將容器安裝到節(jié)點上,以充分利用可用資源。簡而言之,它可以動態(tài)擴展容器化應(yīng)用程序及其資源。 存儲編排。Kubernetes使用戶能夠自動掛載選擇的存儲系統(tǒng),包括本地存儲、公共云提供商或存儲區(qū)域網(wǎng)絡(luò)。 跨節(jié)點編排容器。容器通過使用其域名服務(wù)器(DNS)ID或IP地址公開。如果容器流量很高,Kubernetes還可以負載均衡并分配網(wǎng)絡(luò)流量以保持穩(wěn)定性。 自我修復(fù)。Kubernetes重新啟動失敗的容器,替換容器,關(guān)閉不響應(yīng)用戶定義的運行狀況檢查的容器,并且在容器準備好之前不將其通告給客戶端。 安全管理。Kubernetes允許用戶存儲和管理身份驗證數(shù)據(jù),例如密碼、OAuth令牌和SSH密鑰。
綜合所有這些,Kubernetes具有三大優(yōu)勢。
首先是穩(wěn)定性,Kubernetes管理用戶的容器。如果虛擬機、服務(wù)器甚至集群出現(xiàn)故障,directadmin安裝,Kubernetes將自動啟動更多容器來承載負載。