当前位置: 首页 > article >正文

(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 不断重启的问题。

http://www.kler.cn/a/472572.html

相关文章:

  • 监听器与RBAC权限模型
  • 25上软考中级【软件设计师】易混淆知识点
  • 后台管理系统引导功能的实现
  • 【微服务】SpringBoot 国际化适配方案使用详解
  • 【AJAX详解】
  • Linux部署web项目【保姆级别详解,Ubuntu,mysql8.0,tomcat9,jdk8 附有图文】
  • 代码随想录算法训练营第二十七天-贪心算法-455. 分发饼干
  • 技术速递|通过 .NET Aspire 使用本地 AI 模型
  • 【大模型+本地自建知识图谱/GraphRAG/neo4j/ollama+Qwen千问(或llama3)】 python实战(中)
  • 支持各大平台账单处理,支持复杂业财数据的精细化对账|商派OMS
  • 将java前后端项目和使用了conda虚拟环境的python项目添加到ubuntu服务
  • python中的列表推导式详解
  • 华灯已上:夜色跌宕绘情谱
  • 【AI日记】25.01.08
  • PLC实现HTTP协议JSON格式数据上报对接的参数配置说明
  • OBS Zoom to Mouse 脚本安装与使用指南
  • MySQL UDF提权
  • 1-【选修】逻辑回归
  • 2025新春烟花代码(二)HTML实现孔明灯和烟花效果
  • SpringBoot 使用 Cache 集成 Redis做缓存保姆教程
  • 能不能在家部署一个硬件实现远程唤醒局域网内所有电脑?
  • 从零手写实现redis(三)内存数据如何重启不丢失?
  • Spring Boot 项目自定义加解密实现配置文件的加密
  • ceph集群配置
  • IDEA的常用设置
  • LabVIEW软件Bug的定义与修改