(k8s)kubectl不断重启问题解决!

1.问题描述:

在服务器上安装完k8s之后,会出现kubectl有时候连得上,等之后再去连接的时候又断开,同时节点出现了NotReady的情况,

出现了这两种双重症状

2.解决问题

自己的思路:查看日志,检查报错地方,一共经历了下面几个阶段

1.先检查kubelet的日志,日志提示网络连接问题

复制代码
systemctl status kubelet

2.根据日志找到是网络的问题,检查conf是否有问题,结果很正常

复制代码
cat /etc/kubernetes/kubelet.conf

root@worker:~# cat /etc/kubernetes/kubelet.conf
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data:*****
    server: https://10.3.4.4:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: system:node:master
  name: system:node:master@kubernetes
current-context: system:node:master@kubernetes
kind: Config
preferences: {}
users:
- name: system:node:master
  user:
    client-certificate: /var/lib/kubelet/pki/kubelet-client-current.pem
    client-key: /var/lib/kubelet/pki/kubelet-client-current.pem

3.会不会是证书的原因,检查证书有没有过期,检查结果是没得,证书有效期甚至可以到明年

复制代码
openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text

4.这些都没问题,会不会是因为没有安装网络插件才导致的网络问题?又安装了flannel,结果

复制代码
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml```

现在成功从两个问题变成三个问题了..........其实前面两个问题和flannel没有关系,它是另外的问题,我们一会再来解决。

现在我们的尝试不得行(还有很多个检查都显示没问题,这里就不再水字数了),去看看网络上是怎么解决的。

网络上的思路:

这里要感谢**OleksandrTimoshenko**老哥提供了我们解决方法

The connection to the server 10.0.2.15:6443 was refused - did you specify the right host or port? · Issue #17859 · kubernetes/minikube

其中提到主要的问题是出在containerd上,在之前的检查中显示它是没有问题的,现在让我们回去看看,是否是漏了什么,

这里提到需要将SystemdCgroup设置为true,然后重启,成功!!!!!!!!

复制代码
systemctl restart containerd

3.没有提到的地方

如果资源不足也会启动失败,我使用的服务器主要是2h4g,资源十分受限,我把之前一直运行在docker上的各种服务都关闭了,节约了不少,

同时我还以为是端口的问题,将ipv6-ipv4 tcp udp的6443全部开启,实际上只需要开启ipv4 tcp即可,不需要开放其他地方

4.为什么?

  • SystemdCgroup 设置控制 containerd 如何使用 cgroup(控制组)。cgroup 是 Linux 内核提供的资源管理机制,用于限制、监控和隔离进程组使用的资源(如 CPU、内存等)。
  • SystemdCgroup 设置为 false 时,containerd 使用自己的方式来管理 cgroup。而当设置为 true 时,containerd 会让 systemd 来管理 cgroup,这与许多现代 Kubernetes 环境的配置一致,因为 systemd 是大多数 Linux 系统的默认初始化系统。
  • 使用 SystemdCgroup = true 可以确保容器运行时正确与 systemd 配合,避免因为容器的资源管理配置问题而导致 Kubernetes 的稳定性问题。

为什么这样做能解决问题?

  • Kubernetes 在运行时依赖容器运行时(如 containerd)来启动和管理容器。如果 containerd 的配置文件存在问题(比如 cgroup 配置不兼容),会导致容器无法正常启动,从而影响 Kubernetes 组件,最终可能导致 kubectl 等命令出现连接问题或不断重启。
  • 通过生成默认配置并调整 cgroup 设置,你保证了容器运行时和系统管理工具(如 systemd)之间的兼容性,确保了资源管理的正确性,从而解决了 kubectl 不断重启的问题。
相关推荐
万里侯9 小时前
云原生数据备份与恢复:保障数据安全的最佳实践
微服务·容器·k8s
llrraa201010 小时前
配置docker国内镜像源
运维·docker·容器
2301_7807896611 小时前
手游遇到攻击为什么要用SDK游戏盾手游遇到攻击为什么要用 SDK 游戏盾?
安全·web安全·游戏·架构·kubernetes·ddos
华为云开发者联盟12 小时前
告别繁琐操作,华为云码道 + Docker重塑远程开发体验
人工智能·学习·docker·华为云·软件开发·华为云码道
m_1368712 小时前
Docker Desktop WSL2 启动失败:ext4.vhdx 拒绝访问(E_ACCESSDENIED)完整解决方案
docker
珂玥c12 小时前
k8s集群ingress碎碎念
云原生·容器·kubernetes
佳杰云星12 小时前
如何给大模型集群选“大脑”?智算调度与管理平台 10 维选型指南(附选型评分表)
人工智能·kubernetes·大模型·云计算·gpu·算力调度·智算中心
米高梅狮子13 小时前
Ceph 分布式存储 部署
linux·运维·数据库·分布式·ceph·docker·华为云
比特森林探险记14 小时前
context 在 gRPC / Gin / K8s 中的实战
容器·kubernetes·gin
米高梅狮子14 小时前
Redis
数据库·redis·mysql·缓存·docker·容器·github