<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                Kubernetes是一個用于容器編排的開源工具,是應用程序級別的虛擬化技術的必然結果。容器化技術運行單個內核上有多個獨立的用戶空間實例,這些實例就是容器。容器提供了將應用程序的代碼、運行時、系統工具、系統庫和配置打包到一個實例中的標準方法,并且容器是共享一個內核的。由于容器技術的興起,導致大量的容器應用出現,所以出現了一些用來支持應用程序容器化部署和組織的容器編排技術,其中Kubernetes現在已經成為了容器編排領域事實上的一個標準。 **歡迎關注技術手冊每日必更新,帶你一步步成長為架構師......** ### ![](https://img.kancloud.cn/8a/75/8a753c3f2765cc0f4401286b5382f041_784x418.jpg) ### Kubernetes是一個由Google團隊發起的開源項目,旨在管理跨多個主機的容器,用于自動部署、擴展和管理容器化的應用程序。Kubernetes的主要實現語言為Go語言。該項目的理論基礎源于Google內部的Borg項目,這使得Kubernetes在理論上比其他開源項目更加先進。Borg系統一直被認為是Google公司內部最強大的“私密武器”,因此Kubernetes的理論基礎也非常強大。 ### # 架構 Kubernetes 項目依托著 Borg 項目的理論優勢,確定了一個如下圖所示的全局架構圖: ![](https://img.kancloud.cn/84/c8/84c8a8a0c2c3c5478fbb72ccfffa90a9_965x500.jpg) ### Kubernetes由Master節點和Node節點兩種角色組成。Master節點是控制節點,負責管理整個Kubernetes集群的狀態和配置信息。Node節點是工作節點,負責運行容器應用。可以將Master節點看作老板,負責管理和控制整個集群的運行狀態;將Node節點看作員工,負責實際運行容器應用。這種角色分工使得Kubernetes可以高效地管理和運行容器化應用程序。 ### Kubernetes的Master節點由三個獨立的組件組成,它們分別是kube-apiserver、kube-scheduler和kube-controller-manager。 > kube-apiserver是整個集群通信的核心組件,負責接收來自用戶和管理員的請求,并將請求轉發給其他組件進行處理。 > > kube-scheduler負責容器的調度,將容器應用程序調度到合適的節點上運行**。 > > kube-controller-manager則負責維護整個集群的狀態,包括容器的運行狀態、節點的狀態等**。 整個集群的數據都是通過kube-apiserver保存到etcd數據庫中的,其他所有組件之間的通信也都是通過kube-apiserver和etcd數據庫進行通信,而不會直接與etcd進行通信。這種架構使得Kubernetes具有高可用性和可擴展性,能夠滿足各種規模的容器化應用程序的需求。 ### 工作節點(Node節點)上最核心的組件是kubelet,它負責與底層的容器運行時進行通信,比如Docker。Kubernetes將這個通信過程抽象成了一個遠程調用接口,稱為CRI(Container Runtime Interface)。這個接口定義了容器運行時的所有標準操作,例如創建和刪除容器。目前,kubelet內置了Docker關于CRI的實現,因此如果底層使用的是Docker容器,則不需要單獨安裝CRI實現的組件。但是,其他容器運行時需要提供這樣的接口實現組件。因此,Kubernetes不關心所部署的容器運行時是什么,只要它能夠實現CRI接口,就可以被Kubernetes管理。這種設計使得Kubernetes具有很強的擴展性和靈活性,可以支持多種不同的容器運行時。 ### kubelet 的另外一個重要功能就是調用網絡插件(`CNI`)和存儲插件(`CSI`)為容器配置網絡和存儲功能,同樣的 kubelet 也是把這兩個重要功能通過接口暴露給外部了,所以如果我們想要實現自己的網絡插件,只需要使用 CNI 就可以很方便的對接到 Kubernetes 集群當中去。 ### 可能下面的架構圖看上去更清晰一些: ![](https://img.kancloud.cn/28/aa/28aa1d4ff0f7030c5e45128b451cb4c0_1858x1126.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看