摘要:到現在為止,部署有狀態應用比如分布式數據庫已經是一個棘手的問題,但是其實也不是做不到。我們也會展示如何在本地更加輕松地部署分布式數據庫在我們與客戶目前正在積極處理的區域內。
伴隨著5000多次的提交,以及大約350位貢獻者在社區以及該行業的貢獻,Kubernetes現在已經到1.3版本了,已于上周發布!網址:點這里。
Kubernetes的首次發布要追溯到兩年前。這個項目的社區參與度和創新度都達到了驚人的地步,有個人參與合作,也有行業領導者(谷歌,紅帽等等)來推進,并且給所有人帶來生產級容器集群管理。這篇博客就是來探究Kubernetes1.3中的一些隱藏功能的。
Kubernetes1.3中的新功能Kubernetes1.3已經把重點放到了跨集群、跨區域和跨云邊界上的部署和擴容服務,運行稍大范圍的工作(包括有狀態服務,比如說數據庫),增加規模和自動化,并且支持rkt,OCI&CNI容器標準。
PetSet
到現在為止,部署有狀態應用(比如分布式數據庫)已經是一個棘手的問題,但是其實也不是做不到。Jetstack在倫敦的KubeCon上演講描述了這些挑戰,同樣也描述了解決方案的普通模式。網址:鏈接。
社區引進的alpha版本中的“PetSet”對象來描述這樣的系統。kubernetes現在有一個功能,可以用來部署Pods,這些Pods的功能是保障網絡和存儲身份。它甚至還可以動態規定云端的按需存儲(目前只能用在AWS EBS和GCE PD上)。
集群聯盟(“Ubernetes”)
Kubernetes1.3令運行在多個集群上的服務發現成為可能,可能會讓跨區域,或者跨云提供商來供容器或者外部客戶使用。這個“Ubernetes”聯盟可以被用來增加HA,地理分配和混合云/多云端,是令人興奮的第一階段,并會在1.4及之后的版本中繼續開發和完善。
Rktnetes 1.0
Kubernetes創建之初就沒有與特定容器運行環境綁定。Kubernetes1.3版本是第一個整合rkt運行環境的穩定版本,可以用來替換Docker(目前為止的默認運行環境)。是的,這就是rktnetes。
rkt是Core OS一個快速成熟的項目,現在已經是1.10.0版本了。它實現了應用程序容器規范,還擁有很多可以完美取代Docker的功能。比如,兼容初始化系統(如systemd,nspawn),確保有更大的隔離(使用LKVM stage1)。
在最近的博客中從CoreOS團隊那里了解更多關于rktnetes的信息。網址:鏈接。
可擴展性
Kubernetes現在支持2000個節點的集群,同時還減少了端對端Pod啟動時間。在這樣的情況下,最后造成了可擴展性的改進的挑戰就是使用基于Protocol Buffer(網址:鏈接)系列化的API,而不是JSON,最后對可擴展性的做了改進。
最近的博客帖子描述了一些改進的細節,以及項目使用的Kubemark性能測試工具。網址:鏈接。
在幾周或幾個月后,Jetstack將會在博客中更加細致地講述這些新的用戶面對的功能,重點是,他們還會解釋如何開啟,如何將他們用到實踐中去。比如,我會展示如何處理使用Kubernetes多區/多云。我們也會展示如何在本地更加輕松地部署分布式數據庫——在我們與客戶目前正在積極處理的區域內。
Kubernetes1.3隱藏的新功能這篇帖子中除了主要的部分,我們還想要引出一些我們十分喜歡的,但是知道的人還很少的功能,但是這些功能也同樣有用,同樣十分重要。要注意的是,一些功能和增強功能都還是alpha版本。
Kubectl Deployment
Deployment是一個提供聲明式,服務端更新Pod和ReplicaSets的API。雖然它還是個測試版功能,但是它現在已經被廣泛接受和使用了,并處于活躍開發期,包括計劃和進行中的新功能(具體請參閱路線部署圖)。在Kubernetes1.3中,新的命令已經被添加到kubectl使管理和監控部署更新更加便利。
更新Deployment的容器鏡像
以前,如果你想要在ReplicaSet中為Pods更新容器鏡像,通過Deployment管理,你可以使用kubectl并且直接編輯Deployment的YAML。
新的命令kubectl設置現在允許容器鏡像在單行命令行上設置。
監控deployment rollout
為了監控更新的rollout,并且驗證它是否成功,這里有個新的很方便的命令:rolloutstatus。比如,nginx/nginx:1.7.9中查看nginx/nginx:1.9.1 的rollout。
垃圾回收(測試版)
Kubernetes資源常常互相依賴。比如,ReplicaSets根據指定的模板創建Pods。如果你想要刪除這個ReplicaSet,你就必須要找出跟選擇器匹配的Pod,串聯刪除匹配的Pods。
以后在1.4版本或者更高版本中,這樣的串聯清理會由KCM(kube controller manager)來處理。在準備階段,1.3為API對象引入了額外的元數據域ownerReferences。對于ReplicaSet/Pods的例子,Pods包含了到它們所有者的ReplicaSet的引用。一旦ReplicaSet被刪除,garbage collector也會刪除這個Pod。還有一個叫做orphanDependents的配置選項,可以禁用串聯刪除的功能。
垃圾回收在1.3中還是一個alpha功能,所以默認狀態下,它是禁用的。要打開這個功能,你需要打開kube-apiserver和KCM,還有flag——啟用garbage collector。
在用戶指南那里了解更多關于garbage collector的功能,要注意的是,使用的時候要自己承擔風險(畢竟是測試版)。
Shell補全整合到kubectl
作為資深kubectl用戶,你可能已經知道這個補全腳本,保存在/contrib/completions核心項目的文件夾中。這不僅提供了kubectl的子命令和參數,還提供了像Namespace和Pods資源的名字。
像往常一樣,對于Go語言二進制文件來說,kubectl的分布通常只包括單個文件。這就令保留兼容性的完整文件更加困難了。出于這個原因,這個腳本從1.3版本起就被整合到kubectl。現在加載補全性跟添加一行代碼一樣簡單:
Init containers(測試版)
測試版本功能init containers允許在長期運行的主要Pod容器發布之前運行某一命令。這些命令按順序執行,只有當這些命令成功運行,主容器才會開始運行。這就允許你能夠下載特定的文件到數據卷,生成應用程序的配置文件,在這個過程中不需要再重新打包到容器鏡像等等。
下面是Pod運行kubectl的特定版本的例子。在每次Pod發布的時候下載這個版本。為了演示,第二個init containers包括了一個執行kubectl二進制的命令。Pod說明書包括了必要的annotation,如下圖所示:
Pod一旦在狀態內運行,你就可以使用下載好的kubectl二版本-kubectl exec到Pod容器中來運行kubectl;):
在鏈接里了解更多init containers及其使用方法。
為pods/containers使用定制配置(測試版)
docker 從1.10版本開始支持配置Seccomp策略來初步限制容器執行特權。Seccomp通過攔截系統調用來實施這個沙箱機制。這個過濾器由BPF規則來定義。
要把特定配置文件綁定到Pod上,你可以使用以下alpha annotations:
為所有Pod的容器定義一個Seccomp:seccomp.security.alpha.kubernete.io/pod
為單個容器定義一個Seccomp文件:container.seccomp.security.alpha.kubernetes.io/${container_name}
對注釋的值,你可以使用以下內容:
如果你想要使用定制配置(前綴是localhost/),你必須把這些復制到你集群中的每一個工作節點。文件的默認文件夾是/var/lib/kubelet/seccomp.
例子:如何阻止chmod 系統調用
在這個例子中,我們創建了兩個Pods。都要嘗試在文件上修改權限。當Pod chmod-unconfined用Docker的默認文件運行成功,在Pod chmod-prevented中同樣的命令行運行失敗,因為這是它的Seccomp文件所不允許的。
要清楚的是你必須滿足以下要求才可以:
Docker版本必須1.10及以上
Kubernetes的版本要1.3.0-beta.2版本及以上
要復制prevent-chmod到所有的worker節點
Seccomp Profile/var/lib/kubelet/seccomp/prevent-chmod
Pod specification seccomp-pods.yaml
create pods
原文鏈接
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/32483.html
摘要:在容器之戰中,谷歌宣布了最新開源容器編排引擎版本。這個是谷歌對抗計劃將和核心引擎結合在一起的舉動。選擇托管環境來運行工作伴隨著版本的發布,谷歌宣布它的托管容器管理平臺,已經更新到最新的版本。 在容器之戰中,谷歌宣布了最新開源容器編排引擎Kubernetes1.3版本。此次的發布是在 Docker 公司發布 Docker 1.12 版本之后,該版本帶有內置的 Swarm 編排功能。 雖然...
摘要:執行該初始化任務的容器被成為初始化容器。目前,有等狀態。網絡身份的維護主要通過穩定的和來維護,他們通過的配置文件指定。若其操作導致最小可用數低于應用要求,則操作會被拒絕。 本文討論 K8S 1.3 的一些新功能,以及正在進行中的功能。讀者應該對 kubernetes 的基本結構已經有所了解。 支持更多類型的應用 1、Init container Init container 是1.3 ...
摘要:隨著發布,現在能支持個節點的集群即千萬請求秒,附帶對大多數操作尾部這段延遲降低。的千萬并發令人乍舌三個月后,將會再次帶來倍的提升。 隨著Kubernetes1.2v發布,K8S現在能支持1000個節點的集群(即1千萬請求/秒),附帶對大多數API操作(99%尾部這段)延遲降低80%。這意味著在最近的6個月內,K8S支持的容量增加了10倍同時還保證用戶使用感受——99%pod啟動時間少于...
摘要:正在加速以容器技術運行有狀態服務在生產環境中的采用,這時我們就更需要關心性能和易于部署。這些運行有狀態服務的容器需要特殊處理就帶來了新的需求,包括更長的生命周期,配置依賴,有狀態的故障轉移以及對性能的要求。 編者按:本文作者是 Diamanti 的產品 VP Mark Balch,他將更多的分享他們向 Kubernetes做出的一些貢獻。這篇文章是關于 Kubernetes 1.3 新...
摘要:正在加速以容器技術運行有狀態服務在生產環境中的采用,這時我們就更需要關心性能和易于部署。這些運行有狀態服務的容器需要特殊處理就帶來了新的需求,包括更長的生命周期,配置依賴,有狀態的故障轉移以及對性能的要求。 編者按:本文作者是 Diamanti 的產品 VP Mark Balch,他將更多的分享他們向 Kubernetes做出的一些貢獻。這篇文章是關于 Kubernetes 1.3 新...
閱讀 2637·2023-04-26 02:17
閱讀 1610·2021-11-24 09:39
閱讀 1070·2021-11-18 13:13
閱讀 2598·2021-09-02 15:11
閱讀 2770·2019-08-30 15:48
閱讀 3406·2019-08-30 14:00
閱讀 2431·2019-08-29 13:43
閱讀 658·2019-08-29 13:07