K3s 幾乎可以勝任 k8s 的所有工作, 它只是一個更輕量級的版本。有關(guān)更多詳細信息,請參見主要文檔頁面。
只需用?--disable traefik
?啟動 K3s server,然后部署你需要的 ingress。
目前,K3s 本身不支持 Windows,但是我們對將來的想法持開放態(tài)度。
請參考 K3s BUILDING.md的說明。
安裝腳本會自動檢測你的操作系統(tǒng)是 systemd 或 openrc 并啟動服務(wù)。
當(dāng)使用 openrc 運行時,日志將在?/var/log/k3s.log
?中創(chuàng)建。
當(dāng)使用 systemd 運行時,日志將在?/var/log/syslog
?中創(chuàng)建,并使用?journalctl -u k3s
?查看。
執(zhí)行官網(wǎng)提供的安裝腳本安裝 K3s,無返回:
解決方案:
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh
報錯:
level=error msg="Node password rejected, duplicate hostname or contents of '/etc/rancher/node/password' may not match server node-passwd entry, try enabling a unique node name with the --with-node-id flag"
原因分析:
根據(jù)日志提示大概的原因是兩個 k3s 節(jié)點主機名重復(fù),或者?/etc/rancher/node/password
? 與 k3s server 的 node-passwd 不匹配造成。
節(jié)點注冊到 k3s 集群,會在節(jié)點的?/etc/rancher/node/password
?生成一串隨機的 password。如果 agent 首次注冊,master 節(jié)點會把 agent 發(fā)送的 node-name 和 node-passwd 解析出來存儲到/var/lib/rancher/k3s/server/cred/node-passwd 中。如果 agent 是非首次注冊,k3s master 會結(jié)合 node-name 和 node-passwd 進行比對,如果信息不一致會拒絕添加節(jié)點請求。
解決方案:
為什么會出現(xiàn) passwd 不一致呢?正常來說如果用 k3s-agent-uninstall.sh 來清理安裝過的 agent node,并不會刪除 password 文件(/etc/rancher/node/password),那么問題很可能是 VM 重建或者手動操作刪除的這個文件。因為 agent 上刪除了 password,agent 再次注冊時會重新生成 password,就導(dǎo)致了新的 password 和 k3s master 上原先存儲的不一致。
默認情況下,k3s 啟動 master 節(jié)點也同時具有 worker 角色,是可調(diào)度的,因此可以在它們上啟動工作
解決方案
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--node-taint k3s-controlplane=true:NoExecute" sh -
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--disable-agent" sh -
請參考k3s 網(wǎng)絡(luò)要求檢查主機網(wǎng)絡(luò)或防火墻,查看 vxlan 對應(yīng)的 UDP/8472 端口是否開放。
可以通過--advertise-address設(shè)置 apiserver 向集群成員發(fā)布的 IP 地址,詳細說明參考K3s Server 配置參考
Demo:
主機 | eth0 | eth1 |
---|---|---|
k3s1 | 10.0.2.15/24 (NAT) | 192.168.99.211/24 (Host-Only) |
k3s2 | 10.0.2.15/24 (NAT) | 192.168.99.212/24 (Host-Only) |
K3s1(master):
# curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn \
INSTALL_K3S_EXEC="--advertise-address 192.168.99.211" sh –
K3s2(worker):
# curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn \
INSTALL_K3S_EXEC="--node-ip 192.168.99.212" K3S_URL=https://192.168.99.211:6443 K3S_TOKEN=mynodetoken sh -
K3s 使用 traefik 作為默認的 ingress controller。啟動之后是通過 iptables 轉(zhuǎn)發(fā) 80/443 端口,所以用?netstat
?無法查到對應(yīng)端口,可以通過?iptables
?,?nmap
?等命令去確認端口是否開啟。更多說明請參考k3s 功能擴展之 Helm、Traefik LB、ServiceLB 存儲及 RootFS
這是因為下列默認 Kubernetes 設(shè)置共同產(chǎn)生的效果:
node-status-update-frequency
?:設(shè)置 kubelet 上報節(jié)點信息給 master 的頻率。(默認 10s)node-monitor-period
?:NodeController 中 NodeStatus 的同步周期(默認 5s)node-monitor-grace-period
?:節(jié)點被認定為不健康前,節(jié)點不作響應(yīng)的總的時間。(默認 40s)pod-eviction-timeout
?:優(yōu)雅刪除故障節(jié)點上容器的周期。(默認 5m0s)在 Kubernetes v1.13 版本中,?TaintBasedEvictions
?特性是默認開啟的。
default-not-ready-toleration-seconds
?: 表示 notReady:NoExecute 容忍的容忍時間。notReady:NoExecute 被默認添加到?jīng)]有該容忍的所有 Pod。default-unreachable-toleration-seconds
?: 表示 unreachable:NoExecute 容忍的容忍時間。unreachable:NoExecute 被默認添加到?jīng)]有該容忍的所有 Pod。可以參考下面這個示例調(diào)整?tolerationSeconds
?時間:
kubectl create -f https://raw.githubusercontent.com/kingsd041/rancher-k3s/master/demo-busybox.yaml
k3s crictl rmi --prune
none
?,如何修改?可以通過?kubectl label node ${node} node-role.kubernetes.io/worker=worker
?為節(jié)點增加 worker 角色。
解決方案參考集群訪問章節(jié)。
更多建議: