容器|Docker 如此之好,你為什麼還要用k8s

2021-01-08 騰訊網

HI ! 我是小小,我們又見面了,今天是本周的第五篇,本篇將會著重講解關於為什麼要使用k8s

前言

什麼是容器?

容器是一個包,包含了其應用以及所需要的所有的依賴。

容器中的應用與主機隔離,不需要關注環境。

容器和虛擬機最大的不同在於,容器不需要啟動作業系統的王正周期,故,容器的啟動以及停止都將會非常的快。並且容器還可以相當高興的利用宿主機的各種資源。

容器把所有的應用的語言和框架都打包進入到了容器,使得容器在任何環境都能部署。

左圖,應用直接部署在宿主機中,造成環境相互幹擾,不利於運維和維護,右邊,應用直接打包在docker中,應用之間互相互不幹擾,可以任意運行。

什麼是 Kubernetes?

k8s是一個來自google的開源項目,用於統一管理處理容器化的應用。

k8s,負責在大規模的伺服器環境中,部署和管理容器組,用於解決掉容器的複製,擴展,健康,啟動,負載均衡。

k8s,現在已經被多家公司支持,例如微軟,紅帽,藍色巨人。

Kubernetes 的著名優勢特色

一個平臺搞定所有

使用k8s,部署任何應用都相當的容易。

只要能打包進入容器,容器能夠運行,那麼k8s 就一定能運行。

雲環境無縫遷移

如果你有上雲的需求,那麼使用k8s,這間會是一件相當簡單的事情,k8s,會讓你無縫遷移雲環境,從google的cloud到aws再到微軟的環境,任意遷移。

高效的利用資源

看下圖,左邊,是4個虛擬機,黃色和藍色部分是運行的應用,白色部分是未使用的內存和處理器資源。

右邊,同樣的應用打包運行在容器中。

Kubernetes 如果發現有節點工作不飽和,便會重新分配 pod,幫助我們節省開銷,高效的利用內存、處理器等資源。

如果一個節點宕機了,Kubernetes 會自動重新創建之前運行在此節點上的 pod,在其他節點上運行。

開箱即用的自動縮放能力

網絡、負載均衡、複製等特性,對於 Kubernetes 都是開箱即用的。

pod 是無狀態運行的,任何時候有 pod 宕了,立馬會有其他 pod 接替它的工作,用戶完全感覺不到。

如果用戶量突然暴增,現有的 pod 規模不足了,那麼會自動創建出一批新的 pod,以適應當前的需求。

反之亦然,當負載降下來的時候,Kubernetes 也會自動縮減 pod 的數量。

使 CI/CD 更加簡單

你不必精通於 Chef 和 Ansible 這類工具,只需要對 CI 服務寫個簡單的腳本然後運行它,就會使用你的代碼創建一個新的 pod,並部署到 Kubernetes 集群裡面。

應用打包在容器中使其可以安全的運行在任何地方,例如你的 PC、一個雲伺服器,使得測試極其簡單。

可靠性

Kubernetes 如此流行的一個重要原因是:應用會一直順利運行,不會被 pod 或 節點的故障所中斷。

如果出現故障,Kubernetes 會創建必要數量的應用鏡像,並分配到健康的 pod 或節點中,直到系統恢復。

而且用戶不會感到任何不適。

一個容器化的基礎設施是有自愈能力的,可以提供應用程式的不間斷操作,即使一部分基礎設施出現故障。

總結

Kubernetes 使得應用的啟動、遷移、部署變得即簡單又安全。

不必擔心應用遷移後工作出現問題,也不用擔心一臺伺服器無法應付突發的用戶量。

需要注意的是,你的應用最好使用微服務架構進行開發,因為微服務應用比單體應用更適合做容器化。

關於作者

我是小小,生於二線,活在一線的程序猿,我是小小,我們下期再見。

小明菜市場

相關焦點

  • 容器:Docker 如此之好,你為什麼還要用k8s?
    k8s是一個來自google的開源項目,用於統一管理處理容器化的應用。只要能打包進入容器,容器能夠運行,那麼k8s 就一定能運行。,那麼使用k8s,這將會是一件相當簡單的事情,k8s,會讓你無縫遷移雲環境,從google的cloud到aws再到微軟的環境,任意遷移。
  • Docker不香嗎?為什麼還要用k8s
    虛擬機時代(3)容器化時代:一臺物理機安裝多個容器實例(container),一個容器跑多個程序。容器化時代容器化解決了軟體開發過程中一個令人非常頭疼的問題,用一段對話描述:測試人員:你這個功能有問題。開發人員:我本地是好的啊。開發人員編寫代碼,在自己本地環境測試完成後,將代碼部署到測試或生產環境中,經常會遇到各種各樣的問題。
  • 容器化的最佳實踐:阿里內部出品,Docker+K8S實戰文檔
    只有實踐了才能對其有深入理解,所謂「紙上得來終覺淺,絕知此事要躬行」,今天分享的正是阿里巴巴內部出品的k8s+docker實戰文檔。為什麼Docker 如此重要4.Route Controller 為什麼不工作?7. 集群節點訪問雲資源8.
  • k8s中pause容器作用
    此時訪問nginx不是默認頁,而是ghost的頁面(由於使用內部ip,暫時無法在瀏覽器展示),即pod中多個容器是可以共享網絡的。如果上面的例子你已經明白,我們再來看看pause的定義吧。而在網上的大部分文章則用以下解釋kubernetes中的pause容器主要為每個業務容器提供以下功能:在pod中擔任Linux命名空間共享的基礎;啟用pid命名空間,開啟init進程;通過上文的實驗pause提供了 network namespace 可以印證第一點「在pod中擔任Linux命名空間共享的基礎
  • K8S棄用Docker了?Docker 不能用了?別逗了!
    近幾年,Kubernetes 已經成為自有機房、雲上廣泛使用的容器編排方案,最廣泛的使用方式是 Kubernetes+Docker。從 DevOps 人員的角度,一面用 kubctl 命令、k8s API 來操作集群,一面在單機用 Docker 命令來管理鏡像、運行鏡像。
  • 阿里雲內部獨家的K8s+Docker套餐,有內味了
    細心的網友會發現網.上關於k8s的資料非常非常的多,可90%的資料都是教你怎麼安裝部署k8s,那麼部署好了之後呢? ? ?,於是乎你的小編(雷鋒)在這個星期也沒閒著整理了這份關於K8s+Docker源碼+筆記+項目實戰的資料。
  • 用rancher2分分鐘搭建k8s集群
    它是Google基於Borg開源的容器編排調度引擎,作為CNCF(Cloud Native Computing Foundation)最重要的組件之一,它的目標不僅僅是一個編排系統,而是提供一個規範,可以讓你來描述集群的架構,定義服務的最終狀態,Kubernetes可以幫你將系統自動地達到和維持在這個狀態。
  • 基於Docker及Kubernetes構建的容器雲平臺
    根據官網的介紹,容器是把代碼及其所有依賴打包的一個標準單元,你可以把這個程序從一個環境快速可靠的轉移到另外一個環境。Docker鏡像是一個輕量級的,獨立的,可執行的軟體包,其中就包含了運行程序所需要的一切。說白了就是把應用程式及其依賴打包到一個文件裡,運行這個文件,就會生成一個虛擬容器。程序在裡面運行就跟在物理機或者虛擬機上一樣。
  • Kind + Docker 一鍵部署K8s集群
    時下網際網路最火的技術無非是容器雲和AI,而虛擬雲技術方面最火則是docker和K8S。docker學習和實踐都很容易,但是K8S的由於集群化,部署需要較多的機器,環境搭建學習實踐比較費勁這一度影響了K8S技術的普及。
  • 從k8s_pod容器中獲取宿主機IP位址
    背景:docker 中的程序需要連接外部的程序,連接的過程中會告知外部程序自己的ip地址,然後外部的程序會回連docker中的程序。由於docker使用的是rancher中的託管模式,外部程序是沒辦法直接連接到容器中的,那麼如何解決呢?
  • 從docker容器內部/k8s容器執行宿主機的docker命令
    1) 把docker相關的命令和依賴使用-v掛載到容器docker run -it -d \--restart=always-u root \-v /usr/bin/docker:/usr/bin/docker \-v /var/run/docker.sock:/var/run/docker.sock \-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 鏡像名稱以root的身份去運行鏡像(避免在容器中調用Docker命令沒有權限)將宿主機的
  • Kubernetes之POD、容器之間的網絡通信
    容器)這裡就是為什麼k8s在調度pod時,儘量把關係緊密的服務放到一個pod中所以容器直接可以直接使用pod id進行通訊。跨節點通訊時,發送端數據會從docker0路由到flannel0虛擬網卡,接收端數據會從flannel0路由到docker0。總結上面老顧介紹了幾種網絡通信的場景,以及他們的通信流程,k8s的網絡通信遠遠不止這些,還有很重要的集群外如何訪問集群內部?
  • Docker容器的三種創建運行方式,一個比一個好用
    現在的項目部署運維中,使用docker容器越來越多,Docker給我們提供創建容器的方式也有好幾種,主要是docker run命令、Dockerfile文件、docker-compose三種方式,一個比一個方便。我們來看下有幾種方式的具體用法吧。
  • 初識K8S之理論和搭建
    一、什麼是k8sk8s是分布式系統集中式管理。它可以看作是一個分布式系統支撐平臺。二、為什麼要用k8s,它有什麼好處1、 開發人員發布的是鏡像,鏡像裡面是包括環境和包括代碼。所以說本地和線上的運行環境是一樣的。不會存在本地可以。
  • 企業微服務項目如何進入K8S的全過程
    容器化的部署方式,容器化的部署離不開容器編排的工具,現在用的最多的當屬K8S的編排工具。注意:上面的passwd 123456,是5個伺服器結點的root密碼,一定要一樣哦k8s界面控制臺安裝好了k8s後,
  • K8S工作節點的演變:由Docker到CRI-O
    這允許以更簡單的方式運行各種容器運行時。這些功能分為2個層次:高級別功能:鏡像管理,傳輸,鏡像解壓縮和API,發送命令來運行容器,網絡,存儲(例如:rkt,docker,LXC等)。低級別功能: 運行容器。
  • Kubernetes之POD、容器之間的網絡通信
    為了管理 Pod,每個 Node 節點上至少要運行docker 、kubelet 服務。什麼機制讓同一個Pod內的多個docker容器相互通信?就是使用Docker的一種網絡模型:–net=containercontainer模式指定新創建的Docker容器和已經存在的一個容器共享一個網絡命名空間,而不是和宿主機共享。
  • docker系列之容器網絡
    眾所周知,當你在創建docker時,會創建默認的三個網絡,可使用docker network ls查看網絡。,例如當你在容器上使用80埠訪問web容器時,則使用的是宿主機的80埠在docker中,none和host網絡不能直接配置,但可以使用默認的網橋bridge網絡和用戶自定義的網絡。
  • 全網第一篇k8s,讓它在國內愉快的航行
    容器鏡像庫目前常用的K8S鏡像庫有docker.io (docker hub公共鏡像庫)gcr.io (Google container registry)k8s.gcr.io (等同於 gcr.io/google-containers)
  • 乾貨|帶您了解k8s
    一、Docker編排工具Docker的第一類編排工具:1)docker compose(docker原生):只能對一個主機上的容器進行編排,無法編排多個主機上的容器;2)docker swarm(docker原生):可以對多個主機上的容器進行編排。