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

k8s集群安装坑点汇总

前言

由于使用最新的Rocky9.5,导致kubekey一键安装用不了,退回Rocky8麻烦机器都建好了,决定手动安装k8s,结果手动安装过程中遇到各种坑,这里记录下;

k8s安装

k8s具体安装过程可自行搜索,或者deepseek; 也可参考我早期写的文章最精简kubernetes(1.15.1)(k8s)集群部署教程–基于CentOS 7 这片文章虽然版本较老,但新版安装的大致流程是不变的,有参考的价值。

安装后遇到的坑

本文中提到的坑点及解决方案可能仅适用Rocky9.5,请自行判断。

1. kubelet启动失败

kubelet刚安装好还没有加入集群时,是必然会失败的,也就是说,在加入集群前虽然启动了kubelet,但其状态必然是不断重启中,报的错误是找不到配置文件,这个问题不需要解决,等加入集群自然会正常启动,有的文章说上来就要启动正常,这是错误的,这个误导浪费我很多时间;

2. 安装containerd

最初k8s底层容器是基于docker的,但随着技术发展,底层容器也不仅仅局限于docker,产生了很多其他的。安装的时候需要注意,我第一次安装的containerd不是由docker提供的,导致死活跟k8s无法连接报:validate service connection: CRI v1 runtime API is not implemented for endpoint

container runtime is not running: output: time="2025-06-04T14:05:41+08:00" level=fatal msg="validate service connection: CRI v1 runtime API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeServic

这个版本的container其/etc/containerd/config.toml文件内的配置内容特别多;卸载后,使用yum命令重新安装后,其配置文件内容就减少了很多,开头也有docker版权注解;
在这里插入图片描述
为了减少各种莫名其妙的问题,建议先安装docker,这样容器环境自然就有了;这里还要注意,要注掉配置文件中disabled_plugins=["cri"],并重启containerd:systemctl restart containerd

3. failed to pull and unpack image \"registry.k8s.io/pause:3.8

该问题是由于墙的存在,无法下载pause镜像,最直接办法就是下载国内镜像,重新tag一个

# 使用国内镜像源下载并导入
PAUSE_IMAGE="registry.aliyuncs.com/google_containers/pause:3.8"
sudo ctr -n=k8s.io images pull $PAUSE_IMAGE
sudo ctr -n=k8s.io images tag $PAUSE_IMAGE registry.k8s.io/pause:3.8

实时查看kubelet相关的日志信息,有助于排查问题
journalctl -n kubelet -f

4. 墙的问题

阿里把自己的镜像地址改了,初始化集群时,需要使用registry.aliyuncs.com/google_containers作为集群镜像拉取地址,集群初始化最主要设置的就这两个,其他默认即可;网段对应flannel;

kubeadm init  --pod-network-cidr=10.244.0.0/16  --image-repository=registry.aliyuncs.com/google_containers
5. 时间问题

集群中机器一定要设置统一的时区,并同步下时间,否则可能会有未知问题,这个时间需要在安装docker前完成,如果已经安装完docker,需要重新启动下容器;

安装的时候虽然选择了国家,时间也是对的,但实际使用中发现,容器启动日志里的时间是不对的,重新设置时区后正常

timedatectl set-timezone Asia/Shanghai

后续再有问题再追加

http://www.lryc.cn/news/2401369.html

相关文章:

  • Selenium 和playwright 使用场景优缺点对比
  • 从 Stdio 到 HTTP SSE,在 APIPark 托管 MCP Server
  • Python训练营打卡Day43
  • Mysql锁及其分类
  • RabbitMQ实用技巧
  • Postgresql源码(146)二进制文件格式分析
  • spring ai mcp 和现有业务逻辑如何结合,现有项目用的是spring4.3.7
  • 【设计模式-4.11】行为型——解释器模式
  • 【已解决】MACOS M4 芯片使用 Docker Desktop 工具安装 MICROSOFT SQL SERVER
  • Quipus系统的视频知识库的构建原理及使用
  • web3-去中心化金融深度剖析:DEX、AMM及兑换交易传播如何改变世界
  • 国芯思辰|SCS5501/5502芯片组打破技术壁垒,重构车载视频传输链路,兼容MAX9295A/MAX96717
  • 【图像处理3D】:点云图是怎么生成的
  • 压敏电阻的选型都要考虑哪些因素?同时注意事项都有哪些?
  • 用WPDRRC模型,构建企业安全防线
  • 使用 Amazon Q Developer CLI 快速搭建各种场景的 Flink 数据同步管道
  • Java应用服务在Kubernetes集群中的改造与配置
  • Linux 里 su 和 sudo 命令这两个有什么不一样?
  • 「数据分析 - Pandas 函数」【数据分析全栈攻略:爬虫+处理+可视化+报告】
  • JAVASCRIPT 简化版数据库--智能编程——仙盟创梦IDE
  • YAML在自动化测试中的三大核心作用
  • 命名管道实现本地通信
  • iOS上传应用包错误问题 “Invalid bundle. The “UIInterfaceOrientationPortrait”“
  • 【LeetCode】1061. 按字典序排列最小的等效字符串(并查集)
  • 猎板厚铜PCB工艺能力如何?
  • Flutter快速上手,入门教程
  • 算法:前缀和
  • DEVICENET转MODBUS TCP网关与AB数据输出模块的高效融合方案研究
  • 牛客小白月赛113
  • Mac版本Android Studio配置LeetCode插件