<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          開發(fā)人員如何理解kubernetes

          共 2456字,需瀏覽 5分鐘

           ·

          2021-03-25 13:21

          概述

          在JAVA開發(fā)中使用 docker run命令配合上自建的Docker倉庫可以很容易部署JAVA服務(wù),但是使用Docker部署應(yīng)用會(huì)有幾個(gè)問題:

          1. 一個(gè)docker run 不是部署服務(wù)的可靠方法,因?yàn)樗鼊?chuàng)建的容器在單個(gè)機(jī)器運(yùn)行。雖然Docker引擎提供了一些基本的管理功能,例如在容器崩潰或計(jì)算器重啟時(shí)自動(dòng)重啟容器。但是它不能處理機(jī)器崩潰。無法保證服務(wù)的高可用!
          2. 另一個(gè)問題是服務(wù)通常不是孤立存在,而是相互依賴的,例如數(shù)據(jù)庫和消息隊(duì)列。我們通常需要將服務(wù)及其依賴項(xiàng)作為一個(gè)單元部署或取消部署。

          在開發(fā)過程中特別好用的方法是使用Docker Compose。Docker Compose是一個(gè)工具,它允許使用YAML文件以聲明方式定義一組容器,然后以組的形式啟動(dòng)和停止這些容器。

          但是使用Docker Compose也有個(gè)很明顯的問題就是它僅限于一臺(tái)機(jī)器。要可靠的部署服務(wù),必須使用Docker編排框架,例如Kubernetes。

          Kubernetes簡介

          Kubernates是一個(gè)Docker編排框架,是Docker之上的一個(gè)軟件層,它將一組計(jì)算機(jī)硬件資源轉(zhuǎn)變成用于運(yùn)行服務(wù)的單一資源池。它努力保持每個(gè)服務(wù)所需要的實(shí)例數(shù)量,并確保它們一直在線,即使服務(wù)實(shí)例或機(jī)器崩潰也是如此。容器的靈活性和Kubernetes的復(fù)雜性相結(jié)合是部署服務(wù)的一種強(qiáng)有力的方式。

          Kubernetes有三個(gè)主要功能:

          • 資源管理:將一組計(jì)算機(jī)視為由CPU、內(nèi)存和存儲(chǔ)卷構(gòu)成的資源池,將計(jì)算機(jī)集群視為一臺(tái)計(jì)算機(jī)。
          • 調(diào)度:選擇要運(yùn)行容器的機(jī)器。默認(rèn)情況下,調(diào)度考慮容器的資源需求和每個(gè)節(jié)點(diǎn)的可用資源。它還可以實(shí)現(xiàn)在同一節(jié)點(diǎn)部署具有親和性(affinity)的容器,或保持特定幾個(gè)容器分散部署在不同的節(jié)點(diǎn)上(反親和性,anti-affinity)
          • 服務(wù)管理:實(shí)現(xiàn)命名和版本化服務(wù)的概念,這個(gè)概念可以直接映射到微服務(wù)架構(gòu)中的具體服務(wù)。編排框架確保始終運(yùn)行所需數(shù)量的正常實(shí)例。它實(shí)現(xiàn)請(qǐng)求的負(fù)載均衡。編排框架也可以執(zhí)行服務(wù)的滾動(dòng)升級(jí),并允許你回滾到舊版本。

          Kubernetes架構(gòu)

          Kubernetes架構(gòu)

          Kubernetes在一組機(jī)器上運(yùn)行。Kubernetes集群中的計(jì)算機(jī)角色分為主節(jié)點(diǎn)和普通節(jié)點(diǎn)。集群中只有很少的幾個(gè)主節(jié)點(diǎn)(可能只有一個(gè))和很多普通節(jié)點(diǎn)。

          「主節(jié)點(diǎn)」負(fù)責(zé)管理集群。Kubernetes的「普通節(jié)點(diǎn)」稱為 “工作節(jié)點(diǎn)”,它會(huì)運(yùn)行一個(gè)或多個(gè)Pod。Pod是Kubernetes的部署單元,由一組容器組成。

          主節(jié)點(diǎn)運(yùn)行多個(gè)組件,包括以下內(nèi)容:

          • API服務(wù)器:用于部署和管理服務(wù)的REST API,例如,可被kubectl命令行使用。
          • Etcd:存儲(chǔ)集群數(shù)據(jù)鍵值的NoSQL數(shù)據(jù)庫。
          • 調(diào)度器:選擇要運(yùn)行POD的節(jié)點(diǎn)。
          • 控制器管理器:運(yùn)行控制器,確保集群狀態(tài)與預(yù)期狀態(tài)匹配。例如,一種被稱為 復(fù)制(replication)控制器 的控制器通過啟動(dòng)和終止實(shí)例來確保運(yùn)行所需要的服務(wù)實(shí)例。

          普通節(jié)點(diǎn)運(yùn)行多個(gè)組件,包括以下內(nèi)容:

          • Kubelet:創(chuàng)建和管理節(jié)點(diǎn)上運(yùn)行的Pod。
          • Kube-proxy:管理網(wǎng)絡(luò),包括跨Pod的負(fù)載均衡。
          • Pods:應(yīng)用程序服務(wù)。

          接下來我們看一下Kubernetes上部署服務(wù)需要掌握的關(guān)鍵Kubernetes概念,掌握這幾個(gè)概念就抓住了Kubernetes的核心。

          Kubernetes的關(guān)鍵概念

          Kubernetes是很復(fù)雜的,但是,一旦掌握了一些「關(guān)鍵對(duì)象」的概念,就可以高效的使用Kubernetes。Kubernetes定義了許多類型的對(duì)象,從開發(fā)人員的角度來看,最重要的對(duì)象如下:

          • Pod

            Pod是Kubernetes的基本部署單元。它由一個(gè)或多個(gè)共享IP地址和存儲(chǔ)卷的容器組成。服務(wù)實(shí)例的pod通常由單個(gè)容器組成,例如運(yùn)行 JVM 的容器。但在某些情況下,Pod包含一個(gè)或多個(gè)實(shí)現(xiàn)支持功能的 「邊車」(sidecar)容器。例如,Nginx 服務(wù)器可以有一個(gè)邊車容器,定期執(zhí)行 git pull 以下載最新版本的網(wǎng)站。Pod的生命周期很短,因?yàn)镻od的容器或它運(yùn)行的節(jié)點(diǎn)可能會(huì)崩潰。

          • Deployment

            Deployment : Pod 的聲明性規(guī)范。Deployment是一個(gè)控制器,可確保始終運(yùn)行所需數(shù)量的Pod實(shí)例 (服務(wù)實(shí)例)。它通過滾動(dòng)升級(jí)和回滾來支持版本控制。

          • Service

            向應(yīng)用程序服務(wù)的客戶端提供的一個(gè)靜態(tài)/穩(wěn)定的網(wǎng)絡(luò)地址。它是基礎(chǔ)設(shè)施提供的服務(wù)發(fā)現(xiàn)的一種形式。每個(gè) Service具有一個(gè) IP 地址和一個(gè)可解析為該 IP 地址的 DNS 名稱,并跨一個(gè)或多個(gè) Pod對(duì) TCP 和 UDP 流量進(jìn)行負(fù)載均衡處理。IP地址和 DNS 名稱只能在Kubernetes內(nèi)部訪問。

            Service默認(rèn)是使用ClusterIp模式,如果需要外部能訪問到這個(gè)Service則需要使用另外兩種類型的對(duì)象:NodePort 和 LoadBalancer。

          • ConfigMap

            名稱與值對(duì)的命名集合,用于定義一個(gè)或多個(gè)應(yīng)用程序服務(wù)的外部化配置。Pod容器的定義可以引用ConfigMap來定義容器的環(huán)境變量。它還可以使用ConfigMap在容器內(nèi)創(chuàng)建配置文件??梢允褂肧ecret來存儲(chǔ)敏感信息(如密碼),它也是 ConfigMap的一種形式。


          以上,希望對(duì)你有所幫助!


          推薦閱讀:

          Nginx的這個(gè)默認(rèn)配置,差點(diǎn)讓我的職場生涯折戟沉沙

          一個(gè)空格引發(fā)的“慘案“

          “坑爹”排行榜:Java語言最違反常識(shí)的功能點(diǎn)TOP 10

          Redis 高可用篇:你管這叫主從架構(gòu)數(shù)據(jù)同步原理?

          Kafka性能篇:為何Kafka這么"快"?

          原創(chuàng)好文!億級(jí)流量網(wǎng)關(guān)設(shè)計(jì)思路



          關(guān)號(hào)互聯(lián)網(wǎng)全棧架構(gòu),價(jià)。


          瀏覽 76
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产一级a毛一级a爰片 | 亚洲无码系列 | 看高清无码在线视频 | 人体一级A片-国产日日爱-成人AV | 在线一区视频 |