k3s常见故障处理
1、更换IP
描述:k3s集群搭建完成后,且运行一段时间后,用户调整网络,想更改管理IP .
参考 K3s 迁移后,IP变更,导致服务无法启动 - K3s - Rancher 中文论坛
K3s 更换ip与agent改server - K3s - Rancher 中文论坛
经验证,在部署k3s集群后,如果改变节点IP,只需要执行以下步骤即可恢复集群状态
1)、修改文件/etc/systemd/system/k3s.service
,把里面的3个设置为改变之前的IP变更为现在的IP
--advertise-address=x.x.x.x
--node-external-ip=x.x.x.x
--tls-san=x.x.x.x
2)、然后执行以下命令让k3s使用最新的ip
systemctl daemon-reload
systemctl restart k3s
3)、验证集群状态
kubectl get node -o wide
kubectl get pod -A -o wide
2、更换主机名称
参考 How to change a node name to another? · k3s-io/k3s · Discussion #6547 (github.com)
单节点改变主机名称
1)改变节点hostname
hostnamectl set-hostname xxxx-new
2)重启k3s服务,并且删除旧节点名称的实体
systemctl restart k3s
kubectl delete node xxxx-old
等待几分钟,pod会自动重启采用新的节点名称.
3、磁盘占满
删除一下不再使用的文件,释放磁盘空间,直到k3s重启可用.
systemctl restart k3s
4、更换calico为开源flannel
首先卸载calico
cd k3sappdeploy && kubectl delete -f calicov23273.yaml
#清理node上calico的配置
rm -rf /etc/cni/net.d/10-calico.conflist
rm -rf /etc/cni/net.d/calico-kubeconfig
rm -rf /var/lib/cni/results
重启k3s,并部署开源flannel。重启节点或者删除每个pod自建使用新的网络插件。
systemctl restart k3s
cd flannel && ./flannel_install.sh
开源flannel切换为calico
首先卸载flannel
cd flannel && kubectl delete -f kube-flannel.yml
# 清理节点上的flannel配置
rm -rf /etc/cni/net.d/10-flannel.conflist
rm -rf /var/lib/cni/results
重启k3s,并部署开源calico。
systemctl restart k3s
cd k3sappdeploy && kubectl apply -f calicov23273.yaml
重启节点或者删除每个pod自建使用新的网络插件。
5、更改节点时间超前 或者超后
参考
处理过期时间(朝后)如下
注意顺序:因为如果设置系统时间已经过期,是无法调用kubectl 删除 证书的,必须要在有效期内(这个可以手动设置一下时间在有效期内)操作
1、关闭时间同步
timedatectl set-ntp no
2、查看k3s过期时间
for i in `ls /var/lib/rancher/k3s/server/tls/*.crt`; do echo $i; openssl x509 -enddate -noout -in $i; done
3、删除 secret k3s-serving
kubectl --insecure-skip-tls-verify -n kube-system delete secrets k3s-serving
4、删除系统中的文件dynamic-cert.json
rm -f /var/lib/rancher/k3s/server/tls/dynamic-cert.json
3、设置时间系统时间到 2050-01-01
date -s 20500101
6、重启k3s
systemctl restart k3s
7、查看过期时间
for i in `ls /var/lib/rancher/k3s/server/tls/*.crt`; do echo $i; openssl x509 -enddate -noout -in $i; done
8、打开时间同步
timedatectl set-ntp yes
执行后,再查看证书过期时间
for i in `ls /var/lib/rancher/k3s/server/tls/*.crt`; do echo $i; openssl x509 -enddate -noout -in $i; done
搞定!
时间超前的话,无解(或者等着时间慢慢流逝到k3s部署时间之后吧),或者卸载重装k3s集群!!!
时间超前的话,无解(或者等着时间慢慢流逝到k3s部署时间之后吧),或者卸载重装k3s集群!!!
时间超前的话,无解(或者等着时间慢慢流逝到k3s部署时间之后吧),或者卸载重装k3s集群!!!
6、系统盘重装操作系统,恢复k3s集群应用的数据信息
参考 https://docs.k3s.io/zh/datastore/backup-restore
容器化应用的救命稻草:K3s 备份和恢复中文指南-优快云博客
13-K3S 备份和恢复_k3s "remote-peer-urls-优快云博客
k3s常见问题-liangyuanpeng 的博客 | liangyuanpeng’s Blog
参考kubekey etcd的定时备份方案,定时备份嵌入sqlite数据库文件到数据盘的目录。
此外,还需要备份/var/lib/rancher/k3s/server/token
文件。
恢复
需要删除原来的token
配置文件/etc/systemd/system/k3s.service.env
。以及以原来的token为基础生成的证书文件和配置文件
rm -rf /etc/systemd/system/k3s.service.env
rm -rf /var/lib/rancher/k3s/server/tls #(指定的文件)
rm -rf /var/lib/rancher/k3s/server/cred #(指定的文件)
# 轮换证书
k3s certificate rotate
启动k3s
systemctl restart k3s