<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>

          如何安裝一個高可用K3s集群?

          共 6224字,需瀏覽 13分鐘

           ·

          2020-09-17 22:24

          作者介紹

          Janakiram MSV是Janakiram & Associates的首席分析師,也是國際信息技術(shù)學(xué)院的兼職教師。他也是Google Qualified Developer、亞馬遜認證解決方案架構(gòu)師、亞馬遜認證開發(fā)者、亞馬遜認證SysOps管理員和微軟認證Azure專業(yè)人員。


          Janakiram是云原生計算基金會的大使,也是首批Kubernetes認證管理員和Kubernetes認證應(yīng)用開發(fā)者之一。他曾在微軟、AWS、Gigaom Research等知名公司工作。


          之前的文章中,我們已經(jīng)了解到如何設(shè)置一個多節(jié)點的etcd集群。在本文中,我們將利用相同的基礎(chǔ)架構(gòu)來設(shè)置和配置一個基于K3s的高可用Kubernetes集群。


          高可用Kubernetes集群


          Kubernetes集群的控制平面大多是是無狀態(tài)的。唯一有狀態(tài)的控制平面組件是etcd數(shù)據(jù)庫,它為整個集群充當(dāng)了唯一事實來源。API Server作為etcd數(shù)據(jù)庫的網(wǎng)關(guān),內(nèi)部和外部的用戶都可以通過它訪問和操作狀態(tài)。


          etcd數(shù)據(jù)庫必須配置在HA模式下,以確保沒有單點故障。配置高可用(HA)Kubernetes集群的拓撲有兩種選擇,這取決于如何設(shè)置etcd。


          第一種拓撲是基于堆棧集群設(shè)計的,每個節(jié)點與控制平面一起運行一個etcd實例。每個控制平面節(jié)點運行一個kube-apiserverkube-schedulerkube-controller-manager的實例。kube-apiserver使用負載均衡器暴露給worker節(jié)點。


          每個控制平面節(jié)點創(chuàng)建一個本地etcd成員,并且該etcd成員僅與這一節(jié)點的kube-apiserver進行通信。這同樣適用于本地的kube-controller-manager和kube-scheduler實例。


          這種拓撲結(jié)構(gòu)要求HA Kubernetes集群至少有三種堆棧控制平面模式。Kubeadm,這個流行的集群安裝工具,使用這種拓撲來配置Kubernetes集群。



          第二種拓撲使用在一組完全不同的主機上安裝和管理的外部etcd集群。


          在此拓撲中,每個控制平面節(jié)點都運行kube-apiserverkube-schedulerkube-controller-manager的實例,其中每個etcd主機與每個控制平面節(jié)點的kube-apiserver通信。



          這種拓撲需要的主機數(shù)量是堆棧式HA拓撲的兩倍。使用該拓撲的 HA 集群至少需要三個控制平面節(jié)點的主機和三個 etcd 節(jié)點的主機。


          關(guān)于啟動集群的更多信息,請參考Kubernetes官方文檔:

          https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ha-topology/


          高可用模式的K3s


          由于K3s大多部署在邊緣,硬件資源有限,可能無法在專用主機上運行etcd數(shù)據(jù)庫。部署架構(gòu)與堆棧式拓撲極為類似,只是事先配置了etcd數(shù)據(jù)庫。



          在這次教程中,我使用的是運行在Intel NUC硬件上的裸機基礎(chǔ)設(shè)施,其映射如下:



          參考本系列教程的前一部分,在IP地址為10.0.0.60、10.0.0.61和10.0.0.62的前三個節(jié)點上安裝和配置etcd。


          安裝K3s server


          讓我們先在所有安裝etcd的節(jié)點中安裝服務(wù)器。SSH進入第一個節(jié)點,并設(shè)置以下環(huán)境變量。這假定你按照前面教程中的步驟配置了etcd集群。


          export K3S_DATASTORE_ENDPOINT='https://10.0.0.60:2379,https://10.0.0.61:2379,https://10.0.0.62:2379'export K3S_DATASTORE_CAFILE='/etc/etcd/etcd-ca.crt'export K3S_DATASTORE_CERTFILE='/etc/etcd/server.crt'export K3S_DATASTORE_KEYFILE='/etc/etcd/server.key'


          這些環(huán)境變量指示K3s安裝程序利用現(xiàn)有的etcd數(shù)據(jù)庫進行狀態(tài)管理。


          接下來,我們將在K3S_TOKEN中填充一個agent加入集群時使用的token。


          export K3S_TOKEN="secret_edgecluster_token"


          我們準(zhǔn)備好在第一個節(jié)點中安裝server。運行以下命令來啟動進程:


            curl -sfL https://get.k3s.io | sh -


          在節(jié)點2和節(jié)點3中重復(fù)這些步驟以啟動額外的server。


          此時,你有一個3節(jié)點的K3s集群,它在高可用模式下運行控制平面和etcd組件。


          sudo kubectl get nodes



          你可以使用以下命令檢查服務(wù)狀態(tài):


          sudo systemctl status k3s.service



          安裝K3s Agent


          隨著控制平面的建立和運行,我們可以輕松地將worker節(jié)點獲agent添加到集群中。我們只需要確保使用與server關(guān)聯(lián)的相同token。


          SSH進入其中一個worker節(jié)點并運行命令。


          export K3S_TOKEN="secret_edgecluster_token"export K3S_URL=https://10.0.0.60:6443


          環(huán)境變量K3S_URL是提示安裝程序?qū)⒐?jié)點配置為連接到現(xiàn)有服務(wù)器的agent。


          最后,運行與我們上一步相同的腳本。


            curl -sfL https://get.k3s.io | sh -



          檢查是否新節(jié)點已經(jīng)添加到集群。



          Congratulations!你已經(jīng)成功安裝了一個高可用K3s集群,并備份了一個外部的etcd數(shù)據(jù)庫。


          驗證etcd數(shù)據(jù)庫


          讓我們確保k3s集群正在使用etcd數(shù)據(jù)庫進行狀態(tài)管理。


          我們將在K3s集群內(nèi)啟動一個簡單的NGINX Pod。


          sudo kubectl run nginx --image nginx --port 80


          sudo kubectl get pods



          Pod規(guī)范和狀態(tài)應(yīng)該存儲在etcd數(shù)據(jù)庫中。讓我們嘗試通過etcdctl CLI來檢索。安裝jq工具來解析JSON輸出。


          由于輸出是以base64編碼的,我們將通過base64工具對其進行解碼。


          etcdctl --endpoints https://10.0.0.61:2379 \--cert /etc/etcd/server.crt \--cacert /etc/etcd/etcd-ca.crt \--key /etc/etcd/server.key get /registry/pods/default/nginx \--prefix=true -w json | jq -r .kvs[].value | base64 -d



          輸出顯示 pod 在 etcd 數(shù)據(jù)庫中有一個相關(guān)的鍵和值。特殊字符沒有正確顯示,但它確實向我們展示了足夠的關(guān)于pod的數(shù)據(jù)。


          在本文中,我們了解了如何在高可用模式下設(shè)置和配置K3s集群,希望可以幫助你在邊緣端更順利地進行實踐。



          推薦閱讀

          如何設(shè)置一個生產(chǎn)級別的高可用etcd集群

          從架構(gòu)到部署,全面了解K3s

          僅需60秒,使用k3sup快速部署高可用K3s集群



          About K3s


          K3s 是目前全球用戶量最大的 CNCF 認證輕量級 K8S 發(fā)行版。自 2019 年 3 月發(fā)布以來,備受全球開發(fā)者們關(guān)注。至今,GitHub Star數(shù)已超過14,000,成為了開源社區(qū)最受歡迎的邊緣計算 K8S 解決方案。


          K3s 專為在資源有限的環(huán)境中運行 Kubernetes 的研發(fā)和運維人員設(shè)計,將滿足日益增長的在邊緣計算環(huán)境中運行在 x86、ARM64 和 ARMv7 處理器上的小型、易于管理的 Kubernetes 集群需求。k3s 的發(fā)布,為開發(fā)者們提供了以“Rancher 2.X + k3s”為核心的從數(shù)據(jù)中心到云到邊到端的 K8S 即服務(wù)(Kubernetes-as-a-Service),推動 Kubernetes Everywhere。

          掃碼添加k3s中文社區(qū)助手

          加入官方中文技術(shù)社區(qū)

          官網(wǎng):https://k3s.io

          瀏覽 89
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  微信约操情人高潮在线 | 亚洲在线成人 | 欧美人操B视频免费观看 | 色偷偷网站 | 男女一区 |