K3s 幾乎可以勝任 k8s 的所有工作, 它只是一個(gè)更輕量級(jí)的版本。有關(guān)更多詳細(xì)信息,請(qǐng)參見主要文檔頁(yè)面。
只需用?--disable traefik
?啟動(dòng) K3s server,然后部署你需要的 ingress。
目前,K3s 本身不支持 Windows,但是我們對(duì)將來的想法持開放態(tài)度。
請(qǐng)參考 K3s BUILDING.md的說明。
安裝腳本會(huì)自動(dòng)檢測(cè)你的操作系統(tǒng)是 systemd 或 openrc 并啟動(dòng)服務(wù)。
當(dāng)使用 openrc 運(yùn)行時(shí),日志將在?/var/log/k3s.log
?中創(chuàng)建。
當(dāng)使用 systemd 運(yùn)行時(shí),日志將在?/var/log/syslog
?中創(chuàng)建,并使用?journalctl -u k3s
?查看。
執(zhí)行官網(wǎng)提供的安裝腳本安裝 K3s,無(wú)返回:
解決方案:
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
報(bào)錯(cuò):
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ù)日志提示大概的原因是兩個(gè) k3s 節(jié)點(diǎn)主機(jī)名重復(fù),或者?/etc/rancher/node/password
? 與 k3s server 的 node-passwd 不匹配造成。
節(jié)點(diǎn)注冊(cè)到 k3s 集群,會(huì)在節(jié)點(diǎn)的?/etc/rancher/node/password
?生成一串隨機(jī)的 password。如果 agent 首次注冊(cè),master 節(jié)點(diǎn)會(huì)把 agent 發(fā)送的 node-name 和 node-passwd 解析出來存儲(chǔ)到/var/lib/rancher/k3s/server/cred/node-passwd 中。如果 agent 是非首次注冊(cè),k3s master 會(huì)結(jié)合 node-name 和 node-passwd 進(jìn)行比對(duì),如果信息不一致會(huì)拒絕添加節(jié)點(diǎn)請(qǐng)求。
解決方案:
為什么會(huì)出現(xiàn) passwd 不一致呢?正常來說如果用 k3s-agent-uninstall.sh 來清理安裝過的 agent node,并不會(huì)刪除 password 文件(/etc/rancher/node/password),那么問題很可能是 VM 重建或者手動(dòng)操作刪除的這個(gè)文件。因?yàn)?nbsp;agent 上刪除了 password,agent 再次注冊(cè)時(shí)會(huì)重新生成 password,就導(dǎo)致了新的 password 和 k3s master 上原先存儲(chǔ)的不一致。
默認(rèn)情況下,k3s 啟動(dòng) master 節(jié)點(diǎn)也同時(shí)具有 worker 角色,是可調(diào)度的,因此可以在它們上啟動(dòng)工作
解決方案
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 -
請(qǐng)參考k3s 網(wǎng)絡(luò)要求檢查主機(jī)網(wǎng)絡(luò)或防火墻,查看 vxlan 對(duì)應(yīng)的 UDP/8472 端口是否開放。
可以通過--advertise-address設(shè)置 apiserver 向集群成員發(fā)布的 IP 地址,詳細(xì)說明參考K3s Server 配置參考
Demo:
主機(jī) | 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 作為默認(rèn)的 ingress controller。啟動(dòng)之后是通過 iptables 轉(zhuǎn)發(fā) 80/443 端口,所以用?netstat
?無(wú)法查到對(duì)應(yīng)端口,可以通過?iptables
?,?nmap
?等命令去確認(rèn)端口是否開啟。更多說明請(qǐng)參考k3s 功能擴(kuò)展之 Helm、Traefik LB、ServiceLB 存儲(chǔ)及 RootFS
這是因?yàn)橄铝心J(rèn) Kubernetes 設(shè)置共同產(chǎn)生的效果:
node-status-update-frequency
?:設(shè)置 kubelet 上報(bào)節(jié)點(diǎn)信息給 master 的頻率。(默認(rèn) 10s)node-monitor-period
?:NodeController 中 NodeStatus 的同步周期(默認(rèn) 5s)node-monitor-grace-period
?:節(jié)點(diǎn)被認(rèn)定為不健康前,節(jié)點(diǎn)不作響應(yīng)的總的時(shí)間。(默認(rèn) 40s)pod-eviction-timeout
?:優(yōu)雅刪除故障節(jié)點(diǎn)上容器的周期。(默認(rèn) 5m0s)在 Kubernetes v1.13 版本中,?TaintBasedEvictions
?特性是默認(rèn)開啟的。
default-not-ready-toleration-seconds
?: 表示 notReady:NoExecute 容忍的容忍時(shí)間。notReady:NoExecute 被默認(rèn)添加到?jīng)]有該容忍的所有 Pod。default-unreachable-toleration-seconds
?: 表示 unreachable:NoExecute 容忍的容忍時(shí)間。unreachable:NoExecute 被默認(rèn)添加到?jīng)]有該容忍的所有 Pod。可以參考下面這個(gè)示例調(diào)整?tolerationSeconds
?時(shí)間:
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é)點(diǎn)增加 worker 角色。
解決方案參考集群訪問章節(jié)。
更多建議: