问题描述
电脑蓝屏,虚拟机中的k8s集群不可用。
1、systemctl status kubelet
发现出现error,master节点not found
尝试重启kubelet,没用。。。
2、cat /etc/kubernetes/manifests/kube-apiserver.yaml
查看api-server的配置是否正确,是否是master节点ip,端口是否正确
3、查看kube报错日志
journalctl -u kubelet -n 100 --no-pager -a
确定是api的问题
3、查看是否是kube-apiserver的容器没启动起来
docker ps -a | grep kube-apiserver
容器没启动,docker logs 37e90eb2e90d查看docker日志
错误:dial tcp 127.0.0.1:2379: connect: connection refused
ETCD 连接错误。。。
ETCD 默认端口:ETCD 服务默认通过 2379 端口提供客户端(如 Kubernetes API Server)通信服务,通过 2380 端口处理节点间通信。
连接被拒绝:客户端无法连接到 ETCD 的 2379 端口,通常是因为 ETCD 服务未运行、端口未监听 或 配置错误。
4、查看ETCD是否正常
docker ps -a | grep etcd
docker logs fb4fa2c40e52
问题:panic: freepages: failed to get all reachable pages (page 1084: multiple references)
磁盘损坏。。。
解决方式——重新配置一下
1、可以先备份一下
cp -r /var/lib/etcd ~/etcd-backup
2、停止 kubelet 和 ETCD 容器
systemctl stop kubelet
docker stop $(sudo docker ps -a | grep etcd | awk '{print $1}')
3、清除目录
rm -rf /var/lib/etcd/*
4、重启 kubelet 并重建 ETCD
kubelet 会自动重新创建静态 Pod(包括 ETCD)
systemctl start kubelet
docker ps -a | grep etcd# 检查 ETCD 容器状态
5、重新初始化 Kubernetes 集群
kubeadm reset -f
kubeadm init \
--apiserver-advertise-address=192.168.30.100 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.6 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
6、恢复网络和组件
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
7、查看结果
主节点好了。从节点需要再join一遍
node节点
sudo kubeadm reset -f#清除之前的记录
主节点
执行:kubeadm token create --print-join-command
执行结果再在各node节点运行一遍。