CoreDNS 是在 agent 節(jié)點(diǎn)啟動(dòng)時(shí)部署的。要禁用,請(qǐng)?jiān)诿颗_(tái)服務(wù)器上運(yùn)行?--disable coredns
?選項(xiàng)。
如果你不安裝 CoreDNS,你將需要自己安裝一個(gè)集群 DNS 提供商。
Traefik是一個(gè)現(xiàn)代的 HTTP 反向代理和負(fù)載均衡器,它是為了輕松部署微服務(wù)而生的。在設(shè)計(jì),部署和運(yùn)行應(yīng)用程序時(shí),它簡(jiǎn)化了網(wǎng)絡(luò)復(fù)雜性。
啟動(dòng) server 時(shí),默認(rèn)情況下會(huì)部署 Traefik。更多信息請(qǐng)參見 自動(dòng)部署清單。默認(rèn)的配置文件在?/var/lib/rancher/k3s/server/manifests/traefik.yaml
?中。
Traefik ingress controller 將使用主機(jī)上的 80 和 443 端口(即這些端口不能用于 HostPort 或 NodePort)。
不應(yīng)該手動(dòng)編輯 ?traefik.yaml
?文件,因?yàn)?nbsp;k3s 一旦重啟就會(huì)再次覆蓋它。相反,你可以通過在?/var/lib/rancher/k3s/server/manifests
?中創(chuàng)建一個(gè)額外的?HelmChartConfig
?清單來定制 Traefik。更多細(xì)節(jié)和例子見 使用 HelmChartConfig 自定義打包的組件 。關(guān)于可能的配置值的更多信息,請(qǐng)參考官方的 Traefik Helm 配置參數(shù)。
要禁用它,請(qǐng)使用?--disable traefik
?選項(xiàng)啟動(dòng)每個(gè) server。
如果未禁用 Traefik,則 K3s 1.20 及更早版本將安裝 Traefik v1,而 K3s 1.21 及更高版本將安裝 Traefik v2(如果 v1 不存在)。
要從較舊的 Traefik v1 實(shí)例進(jìn)行遷移,請(qǐng)參考 Traefik 文檔 和 遷移工具。
在你的 Kubernetes 集群中可以使用 service load balancer(LB)。K3s 提供了一個(gè)名為Klipper Load Balancer的負(fù)載均衡器,它可以使用可用的主機(jī)端口。
上游 Kubernetes 允許創(chuàng)建 LoadBalancer 類型的 Service,但不包括 LB 的實(shí)現(xiàn)。某些 LB 服務(wù)需要云提供商,例如 Amazon EC2 或 Microsoft Azure。相比之下,K3s service LB 使得可以在沒有云提供商的情況下使用 LB 服務(wù)。
一些云提供商(如 Linode)會(huì)以 "localhost "作為主機(jī)名創(chuàng)建機(jī)器,而其他提供商可能根本沒有設(shè)置主機(jī)名。這可能會(huì)導(dǎo)致域名解析的問題。你可以用?--node-name
?標(biāo)志或?K3S_NODE_NAME
?環(huán)境變量來運(yùn)行 K3s,這樣就會(huì)傳遞節(jié)點(diǎn)名稱來解決這個(gè)問題。 K3s 創(chuàng)建了一個(gè)控制器,該控制器為 service load balancer 創(chuàng)建了一個(gè) Pod,這個(gè) Pod 是Service類型的 Kubernetes 對(duì)象。
對(duì)于每個(gè) service load balancer,都會(huì)創(chuàng)建一個(gè)DaemonSet。 DaemonSet 在每個(gè)節(jié)點(diǎn)上創(chuàng)建一個(gè)前綴為?svc
?的 Pod。
Service LB 控制器會(huì)監(jiān)聽其他 Kubernetes Services。當(dāng)它找到一個(gè) Service 后,它會(huì)在所有節(jié)點(diǎn)上使用 DaemonSet 為該服務(wù)創(chuàng)建一個(gè)代理 Pod。這個(gè) Pod 成為其他 Service 的代理,例如,來自節(jié)點(diǎn)上 8000 端口的請(qǐng)求可以被路由到端口 8888 上的工作負(fù)載。
如果 Service LB 運(yùn)行在有外部 IP 的節(jié)點(diǎn)上,則使用外部 IP。
如果創(chuàng)建多個(gè) Services,則為每個(gè) Service 創(chuàng)建一個(gè)單獨(dú)的 DaemonSet。
只要使用不同的端口,就可以在同一節(jié)點(diǎn)上運(yùn)行多個(gè) Services。
如果您嘗試創(chuàng)建一個(gè)在 80 端口上監(jiān)聽的 Service LB,Service LB 將嘗試在集群中找到 80 端口的空閑主機(jī)。如果該端口沒有可用的主機(jī),LB 將保持 Pending 狀態(tài)。
在 K3s 中創(chuàng)建一個(gè)LoadBalancer 類型的 Service。
要排除節(jié)點(diǎn)使用 Service LB,請(qǐng)將以下標(biāo)簽添加到不應(yīng)排除的節(jié)點(diǎn)上:
svccontroller.k3s.cattle.io/enablelb
如果使用標(biāo)簽,則 service load balancer 僅在標(biāo)記的節(jié)點(diǎn)上運(yùn)行。
要禁用嵌入式 LB,請(qǐng)使用?--disable servicelb
?選項(xiàng)運(yùn)行 k3s server。
如果您希望運(yùn)行其他 LB,例如 MetalLB,這是必需的。
一些云提供商(如 Linode)會(huì)以 "localhost "作為主機(jī)名創(chuàng)建機(jī)器,而其他提供商可能根本沒有設(shè)置主機(jī)名。這可能會(huì)導(dǎo)致域名解析的問題。你可以用?--node-name
?標(biāo)志或?K3S_NODE_NAME
?環(huán)境變量來運(yùn)行 K3s,這樣就會(huì)傳遞節(jié)點(diǎn)名稱來解決這個(gè)問題。
更多建議: