(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 不断重启的问题。
相关推荐
yanjieliyun11 小时前
家庭服务器从入门到精通 · 第 5 篇 · NPM反向代理从安装到起飞:一条命令搞定HTTPS
docker
Zhu75811 小时前
在k8s环境部署Apache Kafka 集群架构,combined模式,无SSL配置
kafka·kubernetes·apache
天狼啸月199011 小时前
RagSEDE复现: Docker and Ragflow 关系
docker·容器·ragflow·ragsede
java_logo12 小时前
Docker 部署 SamWaf 完整教程:开源 Web 应用防火墙实测
docker·开源·防火墙·waf·samwaf·轩辕镜像·docker部署waf
C137的本贾尼12 小时前
第十篇:Docker & K8s——标准化应用的“集装箱“和“码头调度中心“
docker·容器·kubernetes
增量星球13 小时前
《持续交付2.0系列一》从技术交付到业务引领
java·docker·容器·devops
Zhu75813 小时前
在k8s环境部署Apache kafka4.3.1
容器·kubernetes·apache
探索云原生1 天前
终于搞懂 Kueue:5 个核心对象一次讲透
linux·docker·ai·云原生·kubernetes
众人皆醒我独醉1 天前
etcd,其实不是你以为的"数据库"——Kubernetes 大脑的六个反直觉真相
面试·kubernetes
AI服务老曹1 天前
Docker部署AI视频分析平台参数配置说明与调优指南
人工智能·docker·音视频