K3s 網(wǎng)絡(luò)

2022-08-24 10:59 更新

CoreDNS

CoreDNS 是在 agent 節(jié)點啟動時部署的。要禁用,請在每臺服務(wù)器上運行?--disable coredns?選項。

如果你不安裝 CoreDNS,你將需要自己安裝一個集群 DNS 提供商。

Traefik Ingress Controller

Traefik是一個現(xiàn)代的 HTTP 反向代理和負載均衡器,它是為了輕松部署微服務(wù)而生的。在設(shè)計,部署和運行應(yīng)用程序時,它簡化了網(wǎng)絡(luò)復(fù)雜性。

啟動 server 時,默認情況下會部署 Traefik。更多信息請參見 自動部署清單。默認的配置文件在?/var/lib/rancher/k3s/server/manifests/traefik.yaml?中。

Traefik ingress controller 將使用主機上的 80 和 443 端口(即這些端口不能用于 HostPort 或 NodePort)。

不應(yīng)該手動編輯 ?traefik.yaml?文件,因為 k3s 一旦重啟就會再次覆蓋它。相反,你可以通過在?/var/lib/rancher/k3s/server/manifests?中創(chuàng)建一個額外的?HelmChartConfig?清單來定制 Traefik。更多細節(jié)和例子見 使用 HelmChartConfig 自定義打包的組件 。關(guān)于可能的配置值的更多信息,請參考官方的 Traefik Helm 配置參數(shù)。

要禁用它,請使用?--disable traefik?選項啟動每個 server。

如果未禁用 Traefik,則 K3s 1.20 及更早版本將安裝 Traefik v1,而 K3s 1.21 及更高版本將安裝 Traefik v2(如果 v1 不存在)。

要從較舊的 Traefik v1 實例進行遷移,請參考 Traefik 文檔 和 遷移工具。

Service Load Balancer

在你的 Kubernetes 集群中可以使用 service load balancer(LB)。K3s 提供了一個名為Klipper Load Balancer的負載均衡器,它可以使用可用的主機端口。

上游 Kubernetes 允許創(chuàng)建 LoadBalancer 類型的 Service,但不包括 LB 的實現(xiàn)。某些 LB 服務(wù)需要云提供商,例如 Amazon EC2 或 Microsoft Azure。相比之下,K3s service LB 使得可以在沒有云提供商的情況下使用 LB 服務(wù)。

Service LB 如何工作

一些云提供商(如 Linode)會以 "localhost "作為主機名創(chuàng)建機器,而其他提供商可能根本沒有設(shè)置主機名。這可能會導(dǎo)致域名解析的問題。你可以用?--node-name?標志或?K3S_NODE_NAME?環(huán)境變量來運行 K3s,這樣就會傳遞節(jié)點名稱來解決這個問題。 K3s 創(chuàng)建了一個控制器,該控制器為 service load balancer 創(chuàng)建了一個 Pod,這個 Pod 是Service類型的 Kubernetes 對象。

對于每個 service load balancer,都會創(chuàng)建一個DaemonSet。 DaemonSet 在每個節(jié)點上創(chuàng)建一個前綴為?svc?的 Pod。

Service LB 控制器會監(jiān)聽其他 Kubernetes Services。當它找到一個 Service 后,它會在所有節(jié)點上使用 DaemonSet 為該服務(wù)創(chuàng)建一個代理 Pod。這個 Pod 成為其他 Service 的代理,例如,來自節(jié)點上 8000 端口的請求可以被路由到端口 8888 上的工作負載。

如果 Service LB 運行在有外部 IP 的節(jié)點上,則使用外部 IP。

如果創(chuàng)建多個 Services,則為每個 Service 創(chuàng)建一個單獨的 DaemonSet。

只要使用不同的端口,就可以在同一節(jié)點上運行多個 Services。

如果您嘗試創(chuàng)建一個在 80 端口上監(jiān)聽的 Service LB,Service LB 將嘗試在集群中找到 80 端口的空閑主機。如果該端口沒有可用的主機,LB 將保持 Pending 狀態(tài)。

用法

在 K3s 中創(chuàng)建一個LoadBalancer 類型的 Service。

從節(jié)點中排除 Service LB

要排除節(jié)點使用 Service LB,請將以下標簽添加到不應(yīng)排除的節(jié)點上:

svccontroller.k3s.cattle.io/enablelb

如果使用標簽,則 service load balancer 僅在標記的節(jié)點上運行。

禁用 Service LB

要禁用嵌入式 LB,請使用?--disable servicelb?選項運行 k3s server。

如果您希望運行其他 LB,例如 MetalLB,這是必需的。

沒有主機名的節(jié)點

一些云提供商(如 Linode)會以 "localhost "作為主機名創(chuàng)建機器,而其他提供商可能根本沒有設(shè)置主機名。這可能會導(dǎo)致域名解析的問題。你可以用?--node-name?標志或?K3S_NODE_NAME?環(huán)境變量來運行 K3s,這樣就會傳遞節(jié)點名稱來解決這個問題。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號