每天5分鐘|輕鬆掌握開發工作中必會的k8s-基礎組件與架構

2021-01-04 老何漫話

前面我們介紹過,k8s是用來實現自動化部署、擴展、管理容器化應用的開源系統,它讓我們可以像控制一臺單一的計算機一樣控制整個節點集群。

假設此刻有3個節點,要怎麼用k8s來管理我們的機器上的應用容器的呢?

簡單來講,就是選擇其中一臺作為master節點,另外兩臺作為worker節點,分別在這3個節點上安裝k8s對應的組件,然後就可以使用k8s來管理節點上的應用容器。

k8s採用主從結構,將節點分為兩種類型,一種是matser節點,一種是worker節點,如下圖所示:

master節點作為控制節點,主要工作是對worker節點們進行管理,該節點上不運行容器,且一個master節點可以管理上百甚至上千個worker節點。

worker節點作為真正的工作節點,其上面會部署容器,運行業務對應的容器;

在正式開始安裝k8s之前,還需要了解下主節點和worker節點裡面都分別包含了什麼內容?

了解了這些,我們才能知道安裝的時候需要修改哪些配置文件以及修改的配置文件是幹嘛用的?

先來看一份比較簡單一點的k8s架構圖,看看k8s都包含了什麼:

k8s內部由很多組件構成,但主節點和worker節點包含的組件不同,組件各自負責不同的部分。

master節點包含的組件及其作用:

API Server:是k8s最核心的組件,統一的資源操作入口,包括提供認證、授權、訪問控制、API註冊和 發現等機制,其他的組件運行依賴於api server,通過api接口可以對k8s資源對象進行curd以及監控,也能進行健康,日誌等監控。

ETCD:是k8s的key-value資料庫,集群的狀態信息都持久化存儲在ETCD中。

Scheduler:屬於調度器的角色,負責決策pod按照哪種算法調度到哪個node上,它會把決策的信息通過ap iserver發送給kubelet,讓kubelet執行。

Controller-Manger:為了管理集群中不同的資源,k8s為不同的資源建立了對應的controller。k8s中分了8個controller,不同的 Controller 負責對不同資源的監控和管理。

worker節點包含的組件及其作用:

kubelet:真正的容器管理和維護者,它根據master節點上shcedule的調度決策去真正控制節點上的容器,維護 Container 的生命周期,同時也負責存儲(CSI)和網絡(CNI)的管理。

kube-proxy:集群內部通過kube-proxy訪問其他pod,其主要功能是提供集群內部的服務發現和負載均衡功能。

cAdvisor:cAdvisor是用來分析資源使用率和性能的工具,kubelet通過 cAdvisor 獲取其所在 Node 及容器(Docker)的數據,包含CPU、內存、文件系統和網絡使用等統計信息。

pod:Pod 是k8s 管理的最小單位,k8s將每個應用容器都放在pod裡面,每個 Pod 裡面可以包含多個容器(Docker),一個Node 上可以運行多個 Pod。

有了如上的了解,如果要部署一個lnmp的環境,同時需要連接redis,那麼簡單的架構圖如下:

上圖中:

matser節點上不安裝任何容器應用。

nginx和PHP分別在不同的pod裡面,同時被部署在了一個node1上面。

mysql和redis也分別在不同的pod裡面,同時都被部署在了node2節點上。

好了,關於k8s的基本組成,就先介紹到這裡,以後咱們會慢慢介紹k8s的原理。

有了基本的了解,下一章,就讓我們上手來安裝下k8s吧。

每天5分鐘|輕鬆掌握開發工作中必會的k8s-開篇

每天5分鐘|輕鬆掌握開發工作中必會的docker套路-compose搭建lnmp

每天5分鐘|輕鬆掌握開發工作中必會的docker套路-yaml語法

每天5分鐘|輕鬆掌握開發必會的docker套路-容器搭建lnmp

每天5分鐘|輕鬆掌握開發必會的docker套路-容器間通信

相關焦點

  • 每天5分鐘|輕鬆掌握開發工作必會的k8s-eplicationController介紹
    然而,線上的流量會越來越大,一個nginx應用提供服務顯然不夠,那就需要多個nginx應用來做均衡,共同提供服務。多個應用容器,就意味著多個pod。開啟了多個pod,雖然保證了對外服務的正常,但也同樣帶來了pod管理和維護的問題。問題一:如果某個pod異常退出了,每次都手動重啟嗎,那麼多node,那麼多pod,手動維護成本太大!
  • 每天5分鐘|輕鬆掌握開發工作必會的k8s-命令行操作k8s太麻煩?
    前面幾篇中,查看和操作k8s的資源都是通過命令行操作,每次查詢一個資源的狀態都需要手動執行命令。這種方式。。。。多少有點。。。。。不方便。而且,k8s不光面向運維,有時候開發也需要關注集群中某些服務的狀態,做一些簡單的配置。
  • 每天5分鐘|輕鬆掌握開發工作中必會的k8s-k8s安裝與部署
    上一章我們介紹了k8s的核心組件,了解了這些,我們就可以開始k8s的安裝和部署了。來吧,動手吧!準備好兩伺服器(系統是centos7.3),分別作為matser和node,如下:要讓k8s能夠管理我們的集群,需要在所有的節點上面分別安裝k8s的組件。在安裝之前,需要在兩臺節點上做如下的操作。
  • 每天5分鐘|輕鬆掌握開發工作中必會的docker套路-yaml語法
    tab縮進,只能使用空格鍵 縮進的空格數目不重要,只要相同層級左對齊即可使用#表示注釋yaml支持的數據結構純量:單個的、不可再分的值,包含字符串,布爾值,整數,浮點數,Null等對象:鍵值對的集合數組:一組按次序排列的值純量是最基本的、不可再分的值,寫法如下:#字符串默認不使用引號str:這是一串文字#如果字符串中有空格或者特殊字符需要放在引號中
  • 每天5分鐘|輕鬆掌握開發工作中必會的k8s-pod介紹和安裝nginx
    之前在介紹k8s基本組成部分的時候,簡單的提到了pod,今天我們就來具體聊聊這個pod。00—舉一個生活中的例子先來一個生活中的例子!如果一個學校只有一個學生, 那學校的管理工作就會很容易。但要真是一個學校一個學生,那校長會哭死的,太虧了!!!
  • 每天5分鐘|輕鬆掌握開發工作中必會的k8s-yaml配置說明和常用命令
    (個人覺得這個缺點可以忽略)因此,在實際操作中,推薦配置yaml的方式來部署。在上一篇中,介紹了Pod的基本概念,同時,也通過配置yaml的方式部署了一個包含Nginx的pod。今天就來聊聊,k8s的yaml文件都有哪些配置項。關於yaml文件的語法,之前的docker文章裡面有介紹,不熟悉的小夥伴可以去看看,直接點擊文字連結即可!!!
  • 每天5分鐘|輕鬆掌握開發工作必會的k8s-service的介紹和基本操作
    通過k8s部署集群並提供服務的時候,會部署很多的pod以及pod副本來保證服務的高可用。這也帶來了一個問題!!這麼多pod提供服務,外部如何訪問這些服務?在k8s中,每個pod都會被分配一個ip,即每個pod都唯一的ip。
  • 用rancher2分分鐘搭建k8s集群
    它是Google基於Borg開源的容器編排調度引擎,作為CNCF(Cloud Native Computing Foundation)最重要的組件之一,它的目標不僅僅是一個編排系統,而是提供一個規範,可以讓你來描述集群的架構,定義服務的最終狀態,Kubernetes可以幫你將系統自動地達到和維持在這個狀態。
  • k8s快速通關秘籍(1)
    k8s越來越流行,已經成為容器管理與調度編排的首選平臺和事實標準,開發,測試,運維等技術人員,需要快速的學習和掌握k8s相關知識,通關秘籍系列就從k8s架構和組件,k8s的安裝部署,k8s的日常運維等方面介紹k8s,使零基礎的小白技術人員,迅速拿到k8s的通關秘籍。
  • K8S整體架構解析,簡單明了
    上面這個架構圖,舉例是一個master節點和2個node節點。但實際生產上,從高可用考慮,是需要部署多個master節點的。,這就是pod的調度controller manager負責維護集群的狀態,比如故障檢測、自動擴展、滾動更新等,它們是處理集群中常規任務的後臺線程etcd:kubernetes的後端資料庫,k/v方式存儲,所有的k8s集群數據都存放在此處。
  • 初識K8S之理論和搭建
    一、什麼是k8sk8s是分布式系統集中式管理。它可以看作是一個分布式系統支撐平臺。二、為什麼要用k8s,它有什麼好處1、 開發人員發布的是鏡像,鏡像裡面是包括環境和包括代碼。所以說本地和線上的運行環境是一樣的。不會存在本地可以。
  • 面試問到了K8S原理,花5分鐘來總結下,以後再也不怕了
    前言K8SK8S現在是一項必會的技能,它為軟體工程師提供了強大的容器編排能力,模糊了開發和運維之間的邊界,讓我們開發、管理和維護一個大型的分布式系統和項目變得更加容易,並且每次面試多多少少都會問到,筆者也是被問到了很多次。
  • 如何基於標準k8s打造邊緣計算雲原生基礎設施?
    12月3日,在邊緣計算社區社群上,阿里雲高級技術專家黃玉奇做了《雲邊一體——如何基於標準k8s打造邊緣計算雲原生基礎設施》主題分享,黃老師在阿里雲做容器服務,近幾年一直從事雲原生相關領域工作。本文根據黃老師分享整理,一共6300字,乾貨滿滿,預計閱讀19分鐘!引言云原生的理念如今正如火如荼。
  • 手拿阿里P8大牛手寫的185頁進階文檔,每天學習5分鐘輕鬆玩懂K8S
    容器技術是繼大數據和雲計算之後又一熱門技術,而且未來相當一段時間內都會非常流行對IT從業者來說,掌握容器技術是市場的需要,也是提升自我價值的重要途徑每一輪新技術的興起小編在這裡推薦一本學習Kubernetes的電子書籍:每天5分鐘玩轉Kubernetes《每天5分鐘玩轉Kubernetes》 是一本系統學習Kubernetes 的教程,有下面兩個特點:系統講解當前最流行的容器編排引擎Kubernetes
  • 8年開發經驗精華,從小白到工作8年Java高級架構師路線譜
    從小白級到工作8年需要掌握的技術棧大概如下:0-1年入門:Java基礎復盤(面向對象+Java的超類+Java的反射機制+異常處理+集合+泛型+基礎IO操作+多線程+網絡編程+JDK新特性)Web編程初探(Servlet+MySQL資料庫+商品管理系統實戰)
  • k8s三部曲第一章第3節 k8s架構基本原理
    1)kubernetes是google公司使用go語音開發。borg系統2)架構* 一個master節點 * api server k8s網關,所有的指令請求都必須經過api server * scheduler 調度器,使用調度算法,把請求資源調度某一個node節點 * controller 控制器,維護k8s資源對象 * etcd 存儲資源對象* node節點
  • 硬核技能k8s初體驗
    、部署,以及對開發和運維團隊的管理。控制面板控制集群並使它工作,包含多個組件(組件單節點或通過副本分別部署到多個主節點以確保高可用)Kubernetes Api Server:客戶端Kubectl、控制面板其他組件和worker節點都需要和它通信
  • 後端架構師的知識體系之一基礎組件
    作為一個程式設計師,長期的從事基礎性的代碼開發也是不現實的一件事,如果不能有所提高,長期做最基礎的開發,對於個人的職業技能發展也是不好的。我們都知道程式設計師 的發展有兩個主要方向一個是管理方向,另外一個就是技術方向。
  • K8S(Kubernetes)是什麼?
    k8s可以更快的更新新版本,打包應用,更新的時候可以做到不用中斷服務,伺服器故障不用停機,從開發環境到測試環境到生產環境的遷移極其方便,一個配置文件搞定,一次生成image,到處運行。K8S系統架構k8s的全生命周期管理:在k8s進行管理應用的時候,基本步驟是:創建集群,部署應用,發布應用,擴展應用,更新應用。
  • 2020年最新版架構師的初級技能,選組件
    如果你在做選型方面的工作,或者想了解一些現在正在流行的技術,那麼這篇文章正好適合你。本篇內容涵蓋14個方面,涉及上百個框架和工具。會有你喜歡的,大概也會有你所討厭的傢伙。這是我平常工作中打交道最多的工具,大小公司都適用。如果你有更好的,歡迎留言補充。