国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

k3d入門(mén)指南之在Docker中運行K3s的詳細教程

發(fā)布時(shí)間:2021-08-15 18:37 來(lái)源: 閱讀:0 作者:k3s中文社區 欄目: 服務(wù)器 歡迎投稿:712375056

什么是k3d?

k3d是一個(gè)小型程序,用于在Docker中運行K3s集群。 K3s是經(jīng)過(guò)CNCF認證的輕量級Kubernetes發(fā)行和沙箱項目。它是為資源有限環(huán)境設計的,被打包為單個(gè)二進(jìn)制文件,所需RAM小于512MB。 要了解有關(guān)K3s的更多信息,請查看我們之前的公眾號文章及B站上的視頻。

k3d借助從K3s倉庫構建的Docker鏡像在安裝了Docker的任何機器上的Docker容器中啟動(dòng)多個(gè)K3s節點(diǎn)。 這樣,一臺物理(或虛擬)機(稱(chēng)為Docker Host)可以運行多個(gè)K3s集群,每個(gè)集群同時(shí)有多個(gè)server和agent節點(diǎn)。

k3d能做什么?

2021年1月,發(fā)布k3dv4.0.0,包含以下功能:

  • 創(chuàng )建/停止/啟動(dòng)/刪除/擴大/縮小K3s集群(和單個(gè)節點(diǎn))
  • 通過(guò)命令行標志
  • 通過(guò)配置文件
  • 管理可與集群一起使用的容器鏡像倉庫并與之交互
  • 管理集群的Kubeconfigs
  • 將本地Docker daemon中的鏡像導入集群中運行的容器運行時(shí)中

顯然,還有更多的方法,您可以用來(lái)對使用過(guò)程中的細節進(jìn)行調整。

k3d的用途是什么?

k3d的主要應用場(chǎng)景是在Kubernetes上進(jìn)行本地開(kāi)發(fā),因為k3d輕量、簡(jiǎn)單的特性,在這一場(chǎng)景下幾乎不會(huì )遇到麻煩和資源使用問(wèn)題。 開(kāi)發(fā)k3d的初衷是為開(kāi)發(fā)人員提供一個(gè)簡(jiǎn)單的工具,使他們能夠在開(kāi)發(fā)環(huán)境的機器上運行輕量級的Kubernetes集群,從而在類(lèi)似于生產(chǎn)的環(huán)境中獲得快速的迭代時(shí)間(相對于在本地運行docker-compose與生產(chǎn)中的Kubernetes要快得多)。

隨著(zhù)時(shí)間的推移,k3d還發(fā)展成為一種運維工具,用于在隔離的環(huán)境中測試某些Kubernetes(或特別是K3s)功能。 例如,使用k3d,您可以輕松地創(chuàng )建多節點(diǎn)集群,在其上部署一些應用程序,輕松停止一個(gè)節點(diǎn)并查看Kubernetes的反應,還能夠將您的應用重新調度到其他節點(diǎn)上。

此外,您可以在持續集成系統中使用k3d來(lái)快速啟動(dòng)集群,在其上部署測試堆棧并運行集成測試。完成操作后,您就可以輕松地停用整個(gè)集群。無(wú)需擔心適當的清理和可能的殘留。

我們還提供了一個(gè)k3d-dind鏡像(類(lèi)似于電影《盜夢(mèng)空間》中的夢(mèng)中的夢(mèng),我們在容器內的容器中放置了容器。)通過(guò)此操作,您可以創(chuàng )建一個(gè)運行k3d的docker-in-docker環(huán)境,該環(huán)境會(huì )在Docker中生成一個(gè)K3s集群。這意味著(zhù)您只有一個(gè)容器(k3d-dind)在您的Docker主機上運行,而該容器又在其中運行了整個(gè)K3s / Kubernetes集群。

如何使用k3d?

1、安裝k3d(如需使用也可安裝kubectl)

注意:本文介紹內容對版本有要求,請至少使用k3d v4.1.1以上版本

2、可以嘗試以下其中一個(gè)示例,或使用文檔或CLI幫助文本找到適合您自己的方式(k3d [command] --help)

“簡(jiǎn)單”的方式

k3d cluster create

該命令將創(chuàng )建一個(gè)帶有兩個(gè)容器的K3s集群:一個(gè)Kubernetes控制平面節點(diǎn)(server)和一個(gè)位于其前面的負載均衡器(serverlb)。 它將它們都放置在專(zhuān)用的Docker網(wǎng)絡(luò )中,并在Docker主機上隨機選擇的免費端口上暴露Kubernetes API。 它還在后臺創(chuàng )建了一個(gè)名為Docker的卷,作為鏡像導入的準備。

默認情況下,如果不提供name參數,集群將被命名為k3s-default,并且容器將顯示為k3d---<#>,因此在本例中,兩個(gè)容器將顯示為 k3d- k3s-default-serverlb和k3d-k3s-default-server-0

k3d等待一切準備就緒,從集群中拉取Kubeconfig并將其與默認的Kubeconfig合并(通常位于$ HOME / .kube / config或者KUBECONFIG環(huán)境變量指向的任何路徑中)。
不用擔心,您也可以調整該行為。

使用kubectl查看您剛創(chuàng )建的用于顯示節點(diǎn)的內容:. kubectl get nodes
k3d還為您提供了一些命令來(lái)列出您所創(chuàng )建的東西:.k3d cluster | node | registry list

“簡(jiǎn)單但精妙”的方式

k3d cluster create mycluster --api-port 127.0.0.1:6445 --servers 3 --agents 2 --volume '/home/me/mycode:/code@agent[*]' --port '8080:80@loadbalancer'

此命令生成帶有六個(gè)容器的K3s集群:* 1個(gè)負載均衡器* 3個(gè)server(控制平面節點(diǎn))* 2個(gè)agent(以前為worker節點(diǎn))

通過(guò)--api-port 127.0.0.1:6445,您可以使用k3d將Kubernetes API端口(6443內部)映射到127.0.0.1 / localhost的端口6445。這意味著(zhù)隨后將在Kubeconfig中包含以下連接字符串:server: https://127.0.0.1:6445以連接到此集群。
該端口將從負載均衡器映射到您的主機系統。請求將從那里被代理到server節點(diǎn),從而有效地模擬生產(chǎn)環(huán)境設置,在該環(huán)境中server節點(diǎn)也可能發(fā)生故障,并且希望故障轉移到另一個(gè)server上。

--volume /home/me/mycode:/code@agent[] 綁定將你的本地目錄/home/me/mycode掛載到所有([] agent 節點(diǎn))內部的路徑/code。使用索引(0或1)替換*,以便只把它掛載到其中一個(gè)節點(diǎn)。
告訴k3d應該將卷安裝到哪個(gè)節點(diǎn)的規范稱(chēng)為“節點(diǎn)過(guò)濾器”,它也用于其他標志,例如端口映射的--port標志。

也就是說(shuō),--port '8080:80@loadbalancer'將本地主機的端口8080映射到負載均衡器(serverlb)上的端口80,該負載均衡器可用于將HTTP ingress流量轉發(fā)到集群。 例如,可以將Web應用程序部署到集群(Deployment)中,該集群通過(guò)一個(gè) Ingress(如myapp.k3d.localhost)在外部暴露(Service)。

然后(前提是一切都設置為將該域解析為本地主機IP),則可以將瀏覽器指向http://myapp.k3d.localhost:8080 訪(fǎng)問(wèn)您的應用程序。 然后,流量從您的主機通過(guò)Docker橋接口流向負載均衡器。 從那里,它被代理到集群,并通過(guò)Ingress和Service傳遞到您的應用程序Pod。

注意:你必須設置一些機制,將myapp.k3d.localhost路由到本地主機IP(127.0.0.1)。
最常見(jiàn)的方法是在你的/etc/hosts文件中使用127.0.0.1
myapp.k3d.localhost的條目(C:\Windows\System32\drivers\etc/hosts)。。
但是,這不允許使用通配符(.localhost),因此一段時(shí)間后可能會(huì )變得有些麻煩,因此您可能需要了解dnsmasq(MacOS /
UNIX)或Acrylic(Windows)之類(lèi)的工具來(lái)減輕負擔。 提示:可以在某些系統(至少是Linux操作系統,包括SUSE
Linux和openSUSE)上安裝libnss-myhostname軟件包,以將
.localhost域自動(dòng)解析為127.0.0.1,這意味著(zhù)您不必再手動(dòng)操作。例如
,如果您希望通過(guò)Ingress進(jìn)行測試,則需要在其中設置域。

在此處,需要注意的事是:如果創(chuàng )建多個(gè)server節點(diǎn),則K3s將被分配到--cluster-init標志,這意味著(zhù)它將K3s的默認內部數據(默認為SQLite)更改為etcd。

“配置即編碼”方式

從k3d v4.0.0(發(fā)布于2021年1月)開(kāi)始,我們支持使用配置文件,來(lái)配置一切您以前通過(guò)命令行標志所做的代碼(不久之后甚至可能支持更多)。在撰寫(xiě)本文時(shí),您可以在repo中找到用于驗證配置文件的JSON模式:

示例配置文件:

# k3d configuration file, saved as e.g. /home/me/myk3dcluster.yaml
apiVersion: k3d.io/v1alpha2  # this will change in the future as we make everything more stable
kind: Simple  # internally, we also have a Cluster config, which is not yet available externally
name: mycluster  # name that you want to give to your cluster (will still be prefixed with `k3d-`)
servers: 1  # same as `--servers 1`
agents: 2  # same as `--agents 2`
kubeAPI:  # same as `--api-port 127.0.0.1:6445`
  hostIP: "127.0.0.1"
  hostPort: "6445"
ports:
  - port: 8080:80  # same as `--port 8080:80@loadbalancer
    nodeFilters:
      - loadbalancer
options:
  k3d:  # k3d runtime settings
    wait: true  # wait for cluster to be usable before returining; same as `--wait` (default: true)
    timeout: "60s"  # wait timeout before aborting; same as `--timeout 60s`
  k3s:  # options passed on to K3s itself
    extraServerArgs:  # additional arguments passed to the `k3s server` command
      - --tls-san=my.host.domain
    extraAgentArgs: []  # addditional arguments passed to the `k3s agent` command
  kubeconfig:
    updateDefaultKubeconfig: true  # add new cluster to your default Kubeconfig; same as `--kubeconfig-update-default` (default: true)
switchCurrentContext: true  # also set current-context to the new cluster's context; same as `--kubeconfig-switch-context` (default: true)

假設我們將其另存為/home/me/myk3dcluster.yaml,我們可以使用它來(lái)配置新集群
k3d cluster create --config /home/me/myk3dcluster.yaml

注意:您仍然可以設置額外的參數或標志,這些參數或標志將優(yōu)先于(或將被合并)你在配置文件中定義的任何參數。

k3d還能做什么?

你可以在很多場(chǎng)景下使用k3d,例如:

  • 與k3d托管的容器倉庫一起創(chuàng )建集群
  • 使用集群通過(guò)熱代碼重載進(jìn)行快速開(kāi)發(fā)
  • 將k3d與其他開(kāi)發(fā)工具(例如Tilt或Skaffold)結合使用
  • 兩者都可以通過(guò)k3d image import利用鏡像導入的功能
  • 兩者都可以利用k3d托管的倉庫來(lái)加快開(kāi)發(fā)周期
  • 在您的CI系統中使用k3d(為此我們提供了PoC:)
  • 使用社區維護的vscode擴展程序()將其集成到您的
  • vscode工作流程中 用它來(lái)設置K3s的高可用性

您可以通過(guò)使用在此demo repo中準備好的腳本來(lái)自己嘗試所有這些操作:

THORSTEN KLEIN
trivago的DevOps工程師,SUSE自由軟件工程師,也是k3d的維護者。

以上就是k3d入門(mén)指南之在Docker中運行K3s的詳細教程的詳細內容,更多關(guān)于Docker中運行K3s的資料請關(guān)注腳本之家其它相關(guān)文章!

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

亚洲日韩国产精品第一页一区| 国产乱妇乱子在线视频| 免费萌白酱国产一区二区三区| 成人精品一区二区三区中文字幕| 久久久久久久久毛片精品| 欧美激情第1页|