共計 3936 個字符,預計需要花費 10 分鐘才能閱讀完成。
本篇內容介紹了“Kubernetes1.3 中的新功能有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
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 中的新功能有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!