使用 ?--cluster-init
? 參數(shù)啟動(dòng) K3s server 時(shí),它會(huì)運(yùn)行包括 API Server、Controller Manager、Scheduler 和 ETCD 在內(nèi)的所有 controlplane 組件。但是,您可以指定只使用其中的一些組件運(yùn)行 Server 節(jié)點(diǎn)。本文將解釋如何使用指定的一些組件運(yùn)行 Server 節(jié)點(diǎn)。
本文檔假設(shè)你通過(guò)向 Server 進(jìn)程傳遞?---cluster-init
?標(biāo)志來(lái)運(yùn)行內(nèi)嵌 etcd 的 K3s Server。
如果要運(yùn)行一個(gè)只有 ETCD 組件的 K3s Server,你可以通過(guò)?--disable-apiserver --disable-controller-manager --disable-scheduler
?標(biāo)志到 k3s,這樣會(huì)生成一個(gè)只有 etcd 的 Server 節(jié)點(diǎn),例如:
curl -fL https://get.k3s.io | sh -s - server --cluster-init --disable-apiserver --disable-controller-manager --disable-scheduler
完成上述步驟之后。就可以正常加入其他節(jié)點(diǎn)到集群中。
你也可以禁用 Server 節(jié)點(diǎn)中的 etcd,這將導(dǎo)致 k3s Server 運(yùn)行除了 etcd 以外的控制組件,這可以通過(guò)運(yùn)行 k3s Server 的標(biāo)志?--disable-etcd
?來(lái)實(shí)現(xiàn),例如,將另一個(gè)只有控制組件的節(jié)點(diǎn)加入到上一節(jié)創(chuàng)建的 etcd 節(jié)點(diǎn)中:
curl -fL https://get.k3s.io | sh -s - server --token <token> --disable-etcd --server https://<etcd-only-node>:6443
最終的結(jié)果將是兩個(gè)節(jié)點(diǎn),其中一個(gè)是 etcd only 節(jié)點(diǎn),另一個(gè)是 controlplane only 節(jié)點(diǎn),如果你檢查節(jié)點(diǎn)列表,你應(yīng)該看到類(lèi)似下面的返回結(jié)果:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-172-31-13-32 Ready etcd 5h39m v1.20.4+k3s1
ip-172-31-14-69 Ready control-plane,master 5h39m v1.20.4+k3s1
說(shuō)明
你只能在有 api 運(yùn)行的 k3s Server 上運(yùn)行kubectl命令,你不能在只有 etcd 的節(jié)點(diǎn)上運(yùn)行kubectl命令。
在這兩種情況下,你可以隨時(shí)重新啟用已經(jīng)禁用的組件,只需刪除相應(yīng)的禁用標(biāo)志,所以例如,如果你想把只有 etcd 的節(jié)點(diǎn)恢復(fù)到有所有組件的完整的 k3s Server,你只需刪除以下 3 個(gè)標(biāo)志?--disable-apiserver --disable-controller-manager --disable-scheduler
?,所以在我們的例子中,要把節(jié)點(diǎn)?ip-172-31-13-32
?恢復(fù)到完整的 k3s Server,你只需重新運(yùn)行沒(méi)有禁用標(biāo)志的 curl 命令:
curl -fL https://get.k3s.io | sh -s - server --cluster-init
你會(huì)發(fā)現(xiàn)所有的組件都重新啟動(dòng)了,你可以再次運(yùn)行 kubectl 命令:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-172-31-13-32 Ready control-plane,etcd,master 5h45m v1.20.4+k3s1
ip-172-31-14-69 Ready control-plane,master 5h45m v1.20.4+k3s1
請(qǐng)注意,role 標(biāo)簽已使用正確的標(biāo)簽(control-plane、etcd、master)重新添加到節(jié)點(diǎn) ?ip-172-31-13-32
?。
在前面的任何一種情況下,你都可以使用配置文件來(lái)代替運(yùn)行帶有相關(guān)標(biāo)志的 curl 命令,例如要運(yùn)行一個(gè)只有 etcd 的節(jié)點(diǎn),你可以在?/etc/rancher/k3s/config.yaml
?文件中添加以下選項(xiàng):
---
disable-apiserver: true
disable-controller-manager: true
disable-scheduler: true
cluster-init: true
然后用 curl 命令啟動(dòng) K3s,不需要任何參數(shù):
curl -fL https://get.k3s.io | sh -
對(duì)于?/var/lib/rancher/k3s/server/manifests
?下的任何 yaml 文件(coredns、traefik、local-storeage 等),你可以添加一個(gè)?.skip
?文件,這將導(dǎo)致 K3s 不應(yīng)用相關(guān)的 yaml 文件。
例如,在 manifests 目錄中添加 ?traefik.yaml.skip
? 會(huì)導(dǎo)致 K3s 跳過(guò) ?traefik.yaml
?。
ls /var/lib/rancher/k3s/server/manifests
ccm.yaml local-storage.yaml rolebindings.yaml traefik.yaml.skip
coredns.yaml traefik.yaml
kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system local-path-provisioner-64ffb68fd-xx98j 1/1 Running 0 74s
kube-system metrics-server-5489f84d5d-7zwkt 1/1 Running 0 74s
kube-system coredns-85cb69466-vcq7j 1/1 Running 0 74s
更多建議: