摘要:本文涵蓋了中的六大新特性內(nèi)置命令服務(wù)發(fā)現(xiàn)自愈功能安全負(fù)載均衡滾動(dòng)升級(jí),相關(guān)的使用文檔和視頻鏈接也都包含在里面。同時(shí),內(nèi)部負(fù)載均衡要求一個(gè)可用的容器。現(xiàn)在開(kāi)箱即用的負(fù)載均衡,上公開(kāi)暴露的端口在所有節(jié)點(diǎn)都是可以訪問(wèn)的。
Docker 1.12版本最近剛剛發(fā)布,這篇文章對(duì)它的新特性進(jìn)行了概述和對(duì)比描述。本文涵蓋了 Docker 1.12 中的六大新特性:內(nèi)置 swarm命令、服務(wù)發(fā)現(xiàn)、自愈功能、安全、負(fù)載均衡、滾動(dòng)升級(jí),相關(guān)的使用文檔和demo視頻鏈接也都包含在里面。
內(nèi)置 swarm 命令
Docker engine 中增加了 docker swarm 命令,它用于取代之前通過(guò)容器創(chuàng)建swarm節(jié)點(diǎn)的方式。現(xiàn)在,創(chuàng)建一個(gè)swarm節(jié)點(diǎn),只需要在每個(gè)節(jié)點(diǎn)上運(yùn)行一條命令。在第一個(gè)節(jié)點(diǎn)上運(yùn)行以下命令:
“
上面的命令運(yùn)行成功以后,將生成一條新命令,新命令用于將其它節(jié)點(diǎn)添加到swarm集群。它看起來(lái)像這樣:
在其它節(jié)點(diǎn)上運(yùn)行上面的命令以后,我們就得到了一個(gè)可以正常運(yùn)行的swarm集群。 我們對(duì)比一下之前和現(xiàn)在部署swarm 的區(qū)別:
之前:
● 要建立一個(gè)swarm,我們需要在每個(gè)節(jié)點(diǎn)上啟動(dòng)主swarm和代理容器 。
現(xiàn)在:
● 不需要swarm 容器、可以用本地 Docker swarm 命令創(chuàng)建swarms。
想了解更多關(guān)于如何在1.12中建立 swarm ,請(qǐng)查看官方文檔(https://docs.docker.com/engin...)。
服務(wù)發(fā)現(xiàn)服務(wù)是一個(gè)關(guān)鍵的更新,后面我們會(huì)看到,它也促成了很多其它功能的更新。docker service命令告知集群中服務(wù)的期望狀態(tài)。這種機(jī)制下,當(dāng)節(jié)點(diǎn)或容器掛掉,智能編排服務(wù)成為可能。
在定義服務(wù)狀態(tài)時(shí),Docker service 跟 Docker-compose 的概念很相似。Docker-compose 也有 scale 相關(guān)的命令,但缺點(diǎn)在于:這些命令僅第一次確保狀態(tài)是正確的,但沒(méi)有持續(xù)的監(jiān)控。有了新的 Docker service 命令,Docker-compose 可能會(huì)被打上“僅用于開(kāi)發(fā)”的標(biāo)簽。
在以前的 Docker 版本中,我們必須找到不同的方式來(lái)擴(kuò)展服務(wù),并確保它們擁有期望的的副本數(shù)量。一些人用 Kubernetes或 Amazon EC2解決這個(gè)問(wèn)題, 也可能使用 Docker-compose,雖然只有在第一次運(yùn)行時(shí)能夠保證服務(wù)的狀態(tài)。
之前
● 我們使用其他工具如 Kubernetes 或配置文件來(lái)定義服務(wù),用于 Amazon EC2照顧容器編排。
現(xiàn)在
● 使用 Docker service 告知 swarm 服務(wù)的期望狀態(tài),這意味著 Docker 原生支持服務(wù)編排。
有關(guān)如何部署服務(wù)的詳細(xì)信息,參見(jiàn)這里
(https://docs.docker.com/engin...)。
自愈能力目前,swarm 集群完全具備自愈能力。任何服務(wù)宕掉后, Docker engine 本身就可以對(duì)它進(jìn)行重新調(diào)度,不需要任何其它編排工具。
以前我們需要一個(gè)外部編排層(如Kubernetes),現(xiàn)在編排這一層已經(jīng)內(nèi)置到 Docker engine中。
添加和刪除節(jié)點(diǎn)后,swarm集群都能夠正常工作,從這個(gè)層面上來(lái)說(shuō)swarm是可伸縮的。盡管swarm 沒(méi)有掛掉,且可伸縮,但是它不能編排容器。
如果一個(gè) swarm 節(jié)點(diǎn)掛掉,容器集群不能感知到到它需要在另一個(gè)節(jié)點(diǎn)上啟動(dòng)一個(gè)新容器,從而取代掛掉的主機(jī)上的容器。在Docker 1.12中,這種情況不會(huì)再出現(xiàn)。
在Docker 1.12 中,當(dāng)服務(wù)的容器個(gè)數(shù)不滿足要求時(shí),swarm會(huì)自動(dòng)在其它節(jié)點(diǎn)上啟動(dòng)新容器。
雖然這是一個(gè)巨大的飛躍,但它仍然有些地方需要改進(jìn)。如果你添加新節(jié)點(diǎn)到一個(gè)swarm集群, 并想把服務(wù)的部分容器調(diào)度到新添加的節(jié)點(diǎn)上,swarm還不能滿足你的需求,但這一點(diǎn)會(huì)很快改善。
之前
● 雖然 swarm集群 本身具有自愈能力,但是swarm 上的容器不支持此特性。我們不得不手動(dòng)或借助工具(如 Kubernetes)來(lái)確保服務(wù)的實(shí)例個(gè)數(shù)達(dá)到期望值。
現(xiàn)在
● swarm 現(xiàn)在意識(shí)到服務(wù)應(yīng)該運(yùn)行在集群上,當(dāng)容器或節(jié)點(diǎn)宕掉時(shí)會(huì)重新調(diào)度。
關(guān)于swarm 如何面對(duì)節(jié)點(diǎn)故障并重新部署已經(jīng)被殺掉的服務(wù),查看官方完整的demo:
(https://www.youtube.com/watch...)。
安全在1.12 中,Docker負(fù)責(zé)所有節(jié)點(diǎn)之間的加密。我們很早支持swarm節(jié)點(diǎn)間的加密通信,但是迄今為止,配置一直是一個(gè)痛點(diǎn)。因?yàn)槲覀冃枰粋€(gè)根證書(shū)認(rèn)證服務(wù)器。
現(xiàn)在,Docker 在每個(gè)節(jié)點(diǎn)上都運(yùn)行一個(gè)CA 服務(wù)器,這使得CA 服務(wù)器可以在默認(rèn)情況下的節(jié)點(diǎn)間啟用 TLS 加密。
設(shè)置手動(dòng)加密的另一個(gè)痛點(diǎn)是認(rèn)證循環(huán),但是Docker engine 1.12 已經(jīng)為我們做了這些事情。
因此,現(xiàn)在加密 swarm 節(jié)點(diǎn)間通信不僅更容易,而且是默認(rèn)啟用!
之前
● swarm 節(jié)點(diǎn)之間的通信可以使用TLS 加密,但需要額外設(shè)置。如果你真的想這么做,需要設(shè)置CA或使用第三方的根證書(shū)。
● 當(dāng)證書(shū)過(guò)期時(shí)你需要管理證書(shū)
現(xiàn)在
● 所有節(jié)點(diǎn)間的通信在默認(rèn)情況下進(jìn)行加密, swarm 綁定CA 并為你管理證書(shū),包括證書(shū)循環(huán)。
了解更多關(guān)于Docker 1.12 如何負(fù)責(zé)節(jié)點(diǎn)間加密的更多信息,參考這篇官方博客文章(https://blog.docker.com/2016/...)。
負(fù)載均衡(路由網(wǎng))Dockers 路由網(wǎng)使網(wǎng)絡(luò)變得更容易。關(guān)鍵的概念是,如果你在服務(wù)上發(fā)布一個(gè)端口,它是跨整個(gè)集群全局發(fā)布的,所以在任何節(jié)點(diǎn)上的端口都可以到達(dá)該服務(wù)。
同時(shí), Docker 內(nèi)部負(fù)載均衡要求一個(gè)可用的容器。這意味著你服務(wù)中任意節(jié)點(diǎn)上的請(qǐng)求都將跨重復(fù)的容器進(jìn)行透明負(fù)載均衡,即使容器在不同的節(jié)點(diǎn)上傳播,或者節(jié)點(diǎn)的請(qǐng)求來(lái)自容器所在的不同節(jié)點(diǎn)。這真的很酷,可以讓我們減少很多工作。
如果你需要SSL或代理請(qǐng)求到多個(gè)服務(wù)(不是跨服務(wù)的負(fù)載均衡),那么無(wú)論如何你都需要設(shè)置代理。最大的不同是,代理不需要跨單個(gè)容器上負(fù)載均衡,只需要跨服務(wù)進(jìn)行負(fù)載均衡,這樣代理就更簡(jiǎn)單了。
之前
● 要對(duì)一個(gè)服務(wù)的幾個(gè)副本容器設(shè)置負(fù)載均衡,那么需要設(shè)一直一個(gè)proxy,通常使用nginx、haproxy等工具配合 consul動(dòng)態(tài)配置容器的IP。
現(xiàn)在
● 開(kāi)箱即用的負(fù)載均衡,swarm 上公開(kāi)暴露的端口在所有節(jié)點(diǎn)都是可以訪問(wèn)的。
● 不需要知道容器的IP地址,而是通過(guò)服務(wù)名稱。Docker 處理不同容器副本的內(nèi)部路由和負(fù)載均衡。
關(guān)于如何使用路由網(wǎng),看看這個(gè)演示視頻
(https://www.youtube.com/watch...)。
滾動(dòng)部署這是一個(gè)非常酷的功能。由于Docker engine已經(jīng)知道集群服務(wù)的期望狀態(tài),對(duì)Docker engine 發(fā)送指令,讓它逐個(gè)更新副本(或兩個(gè)兩個(gè)的,使用 --update-parallelism 標(biāo)簽來(lái)配置 )。這意味著我們可以安全透明的更新容器副本。
關(guān)于“透明”,你當(dāng)然要確保你的容器是向后兼容的,否則最好銷毀舊的容器,再去更新所有的容器。重點(diǎn)是雖然有了滾動(dòng)更新以后,我們就不需要把更新規(guī)則寫(xiě)成腳本去實(shí)現(xiàn)透明部署。
之前
● 必須手動(dòng)管理部署,或者藍(lán)綠部署,或者手寫(xiě)腳本實(shí)現(xiàn)滾動(dòng)升級(jí)。
現(xiàn)在
● 使用更新服務(wù)的命令實(shí)現(xiàn)滾動(dòng)升級(jí)。
Docker的團(tuán)隊(duì)做了一個(gè)滾動(dòng)更新的演示視頻,看看這里
(https://www.youtube.com/watch...)。
Docker 1.12 使管理 Docker swarm 整體更簡(jiǎn)單容易。不需要外部編排(如:consul ),這意味著較少的移動(dòng)部件。有了這些變化,Docker 正慢慢成為目前占據(jù)主導(dǎo)地位的編排工具(如 Kubernetes)的真正替代者。我們拭目以待。
本文由時(shí)速云翻譯,如若轉(zhuǎn)載,需注明轉(zhuǎn)載自“時(shí)速云”
原文鏈接:http://blog.nimbleci.com/2016...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/26687.html
摘要:邢舟開(kāi)源與開(kāi)放標(biāo)準(zhǔn)工程院軟件工程師背景回顧月日,中國(guó)社區(qū)全新改版線上課堂,邀請(qǐng)邢舟老師以直播的方式進(jìn)行了一場(chǎng)以存儲(chǔ)概覽為題的線上講解,反響熱烈。為更好地為學(xué)員整合問(wèn)答,中國(guó)社區(qū)特別整理了本期模塊,感謝邢舟老師百忙之中進(jìn)行校對(duì)。 邢舟 /IBM 開(kāi)源與開(kāi)放標(biāo)準(zhǔn)工程院軟件工程師 背景回顧:8 月 2 日 20:00,K8sMeetup 中國(guó)社區(qū)全新改版線上課堂,邀請(qǐng)邢舟老師以直播的方式進(jìn)行...
摘要:當(dāng)然此時(shí)的局限性較大,比如沒(méi)有副本和負(fù)載均衡的概念,這導(dǎo)致服務(wù)無(wú)法高可用當(dāng)然也更不存在什么服務(wù)網(wǎng)絡(luò)管理和跨節(jié)點(diǎn)數(shù)據(jù)存儲(chǔ)這些東西沒(méi)有服務(wù)模型集群中服務(wù)間關(guān)系和啟動(dòng)順序編排也很復(fù)雜于是就有了下面的的誕生。 showImg(https://segmentfault.com/img/remote/1460000015317037?w=1885&h=1153); 概述 在我的《Docker S...
摘要:距離上一次版本發(fā)布三個(gè)月之隔,是今年的第三個(gè)主要版本。證書(shū)輪換證書(shū)輪換功能現(xiàn)已進(jìn)入狀態(tài)。這一功能可以在當(dāng)前證書(shū)到期時(shí)自動(dòng)續(xù)訂密鑰和服務(wù)器的證書(shū)。更多包含許多修復(fù)和內(nèi)部組件的改進(jìn),此次的更新明顯側(cè)重于穩(wěn)定核心以及使現(xiàn)有的功能成熟。 Kubernetes1.12已于今日全新發(fā)布!Kubelet證書(shū)輪換、資源配額優(yōu)先級(jí)、掛載命名空間、對(duì)Azure的增強(qiáng)支持等10大亮點(diǎn)功能,本文為你一一解讀!...
摘要:在被納入后,與之爭(zhēng)日趨白熱化。一如微軟曾經(jīng)試圖通過(guò)在中安裝來(lái)排擠,現(xiàn)在正在嘗試將融入到,以此來(lái)打擊,,和。如同微軟確確實(shí)實(shí)提升了的性能。瀏覽器突出了微軟的優(yōu)勢(shì),所以他們?cè)谀陜?nèi)都沒(méi)有繼續(xù)開(kāi)發(fā)了。 在 Swarm 被納入 Docker 1.12后,Swarm 與 K8S 之爭(zhēng)日趨白熱化。本文作者 Adriaan de Jonge 身為 Xebia CTO ,專精 DevOps 及持續(xù)交付,...
摘要:是谷歌官方根據(jù)自己容器經(jīng)驗(yàn)開(kāi)源的產(chǎn)品。當(dāng)然,這不可能是,而且它的底層是替換成了,但是這不能掩蓋它解決的問(wèn)題。因此筆者決定嘗試玩玩。不然啟動(dòng)會(huì)報(bào)錯(cuò)。 背景 容器技術(shù)在目前很火,而且確確實(shí)實(shí)的解決了很多的痛點(diǎn),但是如果只使用目前 Docker 官方提供的 engine+compose+swarm 方案,是很難再實(shí)際生產(chǎn)中使用的。Kubernetes 是谷歌官方根據(jù)自己容器經(jīng)驗(yàn) Borg 開(kāi)...
閱讀 1635·2021-10-09 09:44
閱讀 2768·2021-10-08 10:04
閱讀 2461·2021-09-26 09:55
閱讀 3831·2021-09-22 10:02
閱讀 3304·2019-08-29 17:08
閱讀 1064·2019-08-29 15:08
閱讀 2952·2019-08-26 13:52
閱讀 3267·2019-08-26 13:34