您好,登錄后才能下訂單哦!
本篇內容介紹了“Kubernetes1.3中的新功能有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Kubernetes1.3中的新功能
Kubernetes1.3已經把重點放到了跨集群、跨區域和跨云邊界上的部署和擴容服務,運行稍大范圍的工作(包括有狀態服務,比如說數據庫),增加規模和自動化,并且支持rkt,OCI&CNI容器標準。
PetSet
到現在為止,部署有狀態應用(比如分布式數據庫)已經是一個棘手的問題,但是其實也不是做不到。Jetstack在倫敦的KubeCon上演講描述了這些挑戰,同樣也描述了解決方案的普通模式。網址:https://www.youtube.com/watch?v=jsTQ24CLRhI。
社區引進的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的信息。網址:http://blog.kubernetes.io/2016/07/rktnetes-brings-rkt-container-engine-to-Kubernetes.html。
可擴展性
Kubernetes現在支持2000個節點的集群,同時還減少了端對端Pod啟動時間。在這樣的情況下,最后造成了可擴展性的改進的挑戰就是使用基于Protocol Buffer(網址:https://developers.google.com/protocol-buffers/)系列化的API,而不是JSON,最后對可擴展性的做了改進。
最近的博客帖子描述了一些改進的細節,以及項目使用的Kubemark性能測試工具。網址:http://blog.kubernetes.io/2016/07/kubernetes-updates-to-performance-and-scalability-in-1.3.html。
在幾周或幾個月后,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;):
在http://kubernetes.io/docs/user-guide/production-pods/#handling-initialization了解更多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
“Kubernetes1.3中的新功能有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。