Docker+Kubernetes是容器創建與編排調度的利器

2020-12-13 分析世界講方案

容器技術虛擬化技術已經成為一種被大家廣泛認可的容器技術伺服器資源共享方式,容器技術可以在按需構建容器技術作業系統實例的過程當中為系統管理員提供極大的靈活性。由於hypervisor虛擬化技術仍然存在一些性能和資源使用效率方面的問題,因此出現了一種稱為容器技術的新型虛擬化技術來幫助解決這些問題。——摘自《百度百科》

事實上,容器技術已經引起了業內的廣泛關注,而且有充分的證據表明,容器技術能夠大大提升計算機任務系統的工作效率。現在,虛擬化技術已經成為一種被大家廣泛認可的伺服器資源共享方式,它可以在按需構建作業系統實例的過程當中為系統管理員提供極大的靈活性。起初,大家普遍認為基於hypervisor的方式可以在最大程度上提供靈活性。所有虛擬機實例都能夠運行任何其所支持的作業系統,而不受其他實例的影響。然而,現在越來越多的用戶發現hypervisor提供這樣一種廣泛支持的特性其實是在給自己製造麻煩。部署虛擬伺服器的目的之一在於快速創建新的虛擬機實例。然而從網絡存儲當中複製鏡像需要花費大量時間,這些操作會延長啟動過程,無疑會限制系統靈活性。因此我們可以選擇使用容器技術,只需要通過簡單的觀察我們便能夠發現容器技術的出現是為了解決多作業系統/應用程式堆棧的問題。

在容器理論的落地層面,主流的支撐技術一個是Docker,另一個就是Kubernetes,前者是開源的應用容器引擎,而後者是開源的容器管理平臺。

關於Docker,它源自PaaS提供商dotCloud開源的一個基於LXC的高級容器引擎, 基於go語言並遵從Apache2.0協議。Docker自2013年以來非常火熱,無論是從 github 上的代碼活躍度,還是Redhat在RHEL6.5中集成對Docker的支持, 就連 Google 的 Compute Engine 也支持 docker 在其之上運行。在架構層面,Docker 使用客戶端-伺服器 (C/S) 架構模式,使用遠程API來管理和創建Docker容器。Docker 容器通過 Docker 鏡像來創建。而且由於Docker其基於LXC的輕量級虛擬化,docker相比KVM之類最明顯的特點就是啟動快,資源佔用小。

關於K8S,它是Google在2014年啟動的開源項目,用於容器編排、調度和管理,支持資源調度、自動部署、服務發現、擴容縮容和應用容器化管理。Kubernetes的目標是讓部署容器化的應用簡單並且高效,Kubernetes提供了應用部署、規劃、更新維護的一種機制。K8S可移植,它幾乎支持了目前公有雲、私有雲、混合雲、多重雲等部署模式;K8S可擴展,它採用模塊化、插件化、可掛載和任意組合式運行;K8S自動化,它支持自動部署、自動重啟、自動複製、自動伸縮/擴展。在Kubernetes中,我們可以創建多個容器,每個容器裡面運行一個應用實例,然後通過內置的負載均衡策略,實現對這一組應用實例的管理、發現、訪問,而這些細節都不需要運維人員去進行複雜的手工配置和處理。

另一方面,兩個輕量級的關鍵產品均為開源,網際網路的普及將原來分散開發人員聚合在一起,似乎只要有一個合適的基礎和好的框架,就自然而然的能夠形成產品級的工具套件。網際網路的加速普及驅動全球經濟社會發生深刻變革,網際網路環境下的全新生產生活模式逐漸成為新常態。與網際網路蓬勃發展相對應,整個信息技術產業的技術和產品創新正步入飛速發展階段,移動網際網路、雲計算、大數據、物聯網、區塊鏈等新興概念層出不窮,新技術已成為產業發展的重要支撐和主要導向。因此開源成為了一種趨勢,開源軟體大量出現奠定了軟體行業的大跨步發展。

而右圖所示,似乎才是文章的重點,這裡提到了基於Docker+K8S的產品化能力包裝出的PaaS平臺,是今天主流PaaS的落地支撐。

以前我們提到過,無論PaaS是哪一天提出的,至少伴隨著時間的演進,PaaS的早期發展並不健全甚至很low,而今天的PaaS才真正走上階梯更上一層樓。PaaS可以簡單的根據支撐範疇分為iPaaS(integration as a Service)和aPaaS(application platform as a service),前者體現在平臺基礎環境,而後者體現在應用施展效果。

在PaaS發展的早期,往往iPaaS的不成熟導致大量開發實施和業務支撐方面需要更多依賴於aPaaS,反射到iPaaS的工具類組件和管理類組件遠不比aPaaS的業務類組件、技術類組件和運營類組件多,呈現出一種「頭重腳輕」的局面;而今天的PaaS逐漸走向成熟,大量廠商在研究PaaS環境快速構建的過程中積攢了一套方法,使得iPaaS的能力日益強健,而aPaaS的能力變得很輕,這種特點就會更好的支持應用部署和遷移,快速支持更加廣泛的業務需求,從而呈現出一種「腰強體健」的局面。

所以,iPaaS的「腰強體健」早期是無所適從的,因為上層應用非常多,而底層又沒有高效的管控平臺和輕量級工具,致使PaaS難以快速發展。而今天則大不然,有了Docker可以快速的創建成百上千個容器以運行作業,有了K8S可以高效的編排任務並調度管理。iPaaS的能力就是從這裡開始,似乎是一個新的「起點」 。

在雲的世界裡,技術成熟度核心在PaaS,目標是服務上層業務。基於雲環境應用中的PaaS基礎設施服務化理念是中間服務,在雲架構中的SaaS與IaaS之間雖然包括iPaaS和aPaaS,但其成熟度則取決於技術發展,這就是今天的Docker+K8S。

Docker+Kubernetes是容器創建與編排調度的利器。

分析世界講方案,為您帶來精彩的一頁;

——垂直領域、專注原創;

——感謝閱讀、感謝共鳴。

相關焦點

  • Kubernetes決定棄用Docker,到底會影響到誰?
    在一般的認知中,Kubernetes 和 Docker 是互補關係:Dockers屬於下層——容器引擎;Kubernetes屬於上層——編排調度層。Docker 源於 Linux Container,可以將一臺機器的資源分成 N 份容器,做到資源的隔離,並將可運行的程序定義為標準的 docker image;Kubernetes 則可以把不同機器的每份容器進行編排、調度,組成分布式系統。
  • Kubernetes 將棄用 Docker
    但 Docker 作為容器鏡像構建工具的作用將不受影響,用其構建的容器鏡像將一如既往地在集群中與所有容器運行時正常運轉。官方解釋稱,Docker 作為一個完整的容器技術堆棧,在其創建之初就不是為了將其嵌入 Kubernetes 而設計的。
  • kubernetes面試題匯總
    是一個開源的,用於管理雲平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單並且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。kubernetes面試題匯總1.kubernetes是什麼?
  • Docker容器的三種創建運行方式,一個比一個好用
    現在的項目部署運維中,使用Docker容器越來越多,Docker給我們提供創建容器的方式也有好幾種,主要是docker run命令、Dockerfile文件、docker-compose三種方式,一個比一個方便。我們來看下有幾種方式的具體用法吧。
  • 如何開始docker - docker架構及創建容器
    docker的組成docker是採用C/S模式,使用遠程API來管理創建docker。容器的創建過程: 鏡像倉庫 ->pull 鏡像到本地 -> 本地鏡像 -> run容器 from 鏡像 -> 創建容器並執行程序->程序退出->容器退出1、dockerd服務端(守護進程),dockerd是docker的守護進程。
  • Kubernetes持續部署指南
    有些人將其稱為容器編排平臺,而 Kubernetes 並非唯一的此類平臺。不過,相比其它對手,其享譽已盛,且知名度仍在不斷提高;更別說你一旦習慣上它,就會發現它真的十分易用。如果你依然好奇為何有人能夠愉快地和 Kubernetes 玩耍,答案就是——簡單。Kubernetes 能夠讓部署、管理多個項目所需的大量集群變得更加容易。
  • Kubernetes ELK 日誌收集
    ,只需要在宿主機上收集每個容器中的日誌/var/log和/var/lib/docker/containers (目錄要根據docker info中的dir進行修改)容器會將日誌轉化為JSON格式,是docker中的配置起的作用。
  • 基於 Kubernetes 的 GPU 類型調度實現
    憑藉其特性,Kubernetes 可以無縫將模型訓練、inference 和部署擴展到多雲 GPU 集群,允許數據科學家跨集群節點自動化多個 GPU 加速應用程式容器的部署、維護、調度和操作。在 1.6 版本和 1.9 版本中,Kubernetes 先後提供了對 NVIDIA GPU、AMD GPU 容器集群管理調度的支持,進一步提高了對 GPU 等擴展資源進行統一管理和調度的能力。
  • 從Docker Machine到K8S:容器管理為啥有這麼多工具?
    在 Docker的世界裡,編排用來描述一組實踐過程,這個過程會管理運行在多個Docker容器裡的應用,而這些Docker容器有可能運行在多個宿主機上。由於Docker是一個輕量級的容器管理平臺,對編排的原生支持非常弱,因此整個社區圍繞編排、開發和集成,建設了很多很棒的工具。
  • 用docker命令創建一個容器以及容器的暫停和恢復
    docker命令創建一個容器docker創建容器的命令是create,用法和run類似。例如:docker create --name newnginx nginx:latest,這句命令的意思是使用nginx的鏡像來創建一個名叫newnginx的容器。
  • 踢掉Docker 後,Kubernetes 還能歡快地跑 GPU?
    至於以 Containerd 作為容器運行時的集群如何使用 GPU,網上還找不到一篇像樣的文檔來告訴大家怎麼做,今天我就來做吃螃蟹的第一人。 要想在容器裡使用 GPU,本質上就是我們要在容器裡能看到並且使用宿主機上的顯卡,所有的步驟都是圍繞這個來做的。
  • Docker入門知識|Docker資源容器 與 VM虛擬機的區別與聯繫
    另外的優勢就是,Docker 的接口相當簡單,用戶可以方便地創建和使用容器,把自己的應用放入容器。利用容器接口還可以進行版本管理、複製、分享、修改,就像管理普通的代碼一樣方便快捷,當然前提是你必須學好docker的所有知識。為什麼要優先使用Docker,而不是虛擬機呢?
  • 被棄用的 Docker 會被 Podman 取代嗎?
    Docker 是一種以容器化的方式打包、分發和部署應用程式的方式。自 2013 年 3 月 13 日初始版本發布以來,Docker 已成為容器業界的事實標準。而Kubernetes 是一款由 Google 開發的開源容器編排系統。
  • Kubernetes實例學習:從零到入門
    在虛擬化和雲高度發展的今天,容器雲已經成了生產現實,那麼容器編排技術無疑成了每個必須掌握的技能之一。作為事實上的容器編排標準K8S則是每個人的必修課,今天我們就來給大家補充K8S的這一課。概述本文我們也堅持一貫的行文風格那就是理論知識和實踐動手操作相結合的方式。
  • MySQL與容器
    下載Docker鏡像:docker pull mysql啟動Docker容器:docker run --name=mysqlse -e MYSQL_RANDOM_ROOT_PASSWORD=true -e MYSQL_ONETIME_PASSWORD
  • 容器時代:數萬臺伺服器下的 Docker 深度安全實踐
    到了生產環境,尤其是業務體量比較大的公司或者機構,對如何管理鏡像的分發、容器的調度、業務的高可用能力、容器多副本的維護等方面提出了很大的挑戰,由此kubernetes應運而生。kubernetes的出現更加方便了容器在大規模使用,複雜業務場景上的使用。先來看一副Docker安全與傳統安全的對比圖:
  • Docker系列教程02-操作Docker容器
    本章帶大家學習容器相關的重要操作,包括創建容器、啟動容器、終止容器、進入容器後執行操作、刪除容器及通過導入導出容器實現容器遷移、容器與宿主機之間數據拷貝等。1、創建容器1)新建容器語法格式:docker create 語法例如:[
  • 【Docker】系列教程02-操作Docker容器
    本章帶大家學習容器相關的重要操作,包括創建容器、啟動容器、終止容器、進入容器後執行操作、刪除容器及通過導入導出容器實現容器遷移、容器與宿主機之間數據拷貝等。例如,啟動剛剛創建的ubuntu容器:[root@qll251 ~]# docker start eebeebeeb為剛剛創建容器的ID簡寫,此時通過docker ps查詢容器已運行:
  • Docker 容器的網絡
    你也可以通過寫一個網絡驅動插件來創建你自己的網絡驅動,但是這個屬於比較高級的任務了。": "0.0.0.0","com.docker.network.bridge.name": "docker0","com.docker.network.driver.mtu": "9001"},"Labels": {}
  • 理解docker鏡像與容器
    docker有兩個重要的概念:鏡像,容器。生成的鏡像ID為769951131a6a,使用docker images查看使用docker history命令查看創建了那些鏡像層一個鏡像可以被重複利用創建新的鏡像,這會使得鏡像可以被高效的存儲和創建。2.容器下面介紹一下創建一個容器的過程。