kubeadm 部署问题排查

text 复制代码
# helm 下载
wget -q https://get.helm.sh/helm-v3.14.3-linux-amd64.tar.gz
shell 复制代码
#k8s镜像导出
ctr -n k8s.io images export --skip-manifest-json kube-apiserver:v1.29.3.tar registry.k8s.io/kube-apiserver:v1.29.3
ctr -n k8s.io images export --skip-manifest-json kube-controller-manager:v1.29.3.tar registry.k8s.io/kube-controller-manager:v1.29.3
ctr -n k8s.io images export --skip-manifest-json kube-scheduler:v1.29.3.tar registry.k8s.io/kube-scheduler:v1.29.3
ctr -n k8s.io images export --skip-manifest-json kube-proxy:v1.29.3.tar registry.k8s.io/kube-proxy:v1.29.3
ctr -n k8s.io images export --skip-manifest-json coredns:v1.11.1.tar registry.k8s.io/coredns/coredns:v1.11.1
ctr -n k8s.io images export --skip-manifest-json pause:3.9.tar registry.k8s.io/pause:3.9
ctr -n k8s.io images export --skip-manifest-json etcd:3.5.12-0.tar registry.k8s.io/etcd:3.5.12-0
ctr -n k8s.io images export --skip-manifest-json flannel-cni-plugin.tar docker.io/flannel/flannel-cni-plugin:v1.4.0-flannel1
ctr -n k8s.io images export --skip-manifest-json flannel:v0.24.4.tar docker.io/flannel/flannel:v0.24.4

k8s 环境部署出错

bash 复制代码
# 查看kubeadm 需要的镜像文件
$ kubeadm config image list
registry.k8s.io/kube-apiserver:v1.29.3
registry.k8s.io/kube-controller-manager:v1.29.3
registry.k8s.io/kube-scheduler:v1.29.3
registry.k8s.io/kube-proxy:v1.29.3
registry.k8s.io/coredns/coredns:v1.11.1
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.12-0

1. 检查 containerd 部署是否正常

containerd 配置文件位置 /etc/containerd/config.toml

shell 复制代码
# 查看 containerd 版本
$ containerd -v 或者 ctr -v

# 查看 containerd 状态
$ systemctl status containerd

# 查看 containerd 的启停沙箱
$ grep sandbox_image /etc/containerd/config.toml
>    sandbox_image = "registry.k8s.io/pause:3.9"

# 查看 containerd 是否启用系统调度
$ grep SystemdCgroup /etc/containerd/config.toml
>             SystemdCgroup = true

containerd 重启

shell 复制代码
systemctl daemon-reload
systemctl disable containerd
systemctl enable containerd
systemctl restart containerd

2. 检查镜像加载是否正常

shell 复制代码
$ ctr -n k8s.io images ls|awk '{print $1}'|grep -v sha256
REF
docker.io/flannel/flannel-cni-plugin:v1.4.0-flannel1
docker.io/flannel/flannel:v0.24.4
registry.k8s.io/coredns/coredns:v1.11.1
registry.k8s.io/etcd:3.5.12-0
registry.k8s.io/kube-apiserver:v1.29.3
registry.k8s.io/kube-controller-manager:v1.29.3
registry.k8s.io/kube-proxy:v1.29.3
registry.k8s.io/kube-scheduler:v1.29.3
registry.k8s.io/pause:3.8
registry.k8s.io/pause:3.9

3. 检查 crictl 环境是否正常

bash 复制代码
# 查看crictl version
$ crictl --version
>crictl version v1.28.0

# 查看 crictl 配置
cat /etc/crictl.yaml
>runtime-endpoint: unix:///run/containerd/containerd.sock
>image-endpoint: unix:///run/containerd/containerd.sock
>timeout: 10
>debug: false
>pull-image-on-create: false

# 查看是否能连接到 containerd
$ crictl --image-endpoint=unix:///run/containerd/containerd.sock images ls
IMAGE                                     TAG                 IMAGE ID            SIZE
docker.io/flannel/flannel-cni-plugin      v1.4.0-flannel1     77c1250c26d96       4.5MB
docker.io/flannel/flannel                 v0.24.4             c9fe3bce8a6d8       32.7MB
registry.k8s.io/coredns/coredns           v1.11.1             cbb01a7bd410d       18.2MB
registry.k8s.io/etcd                      3.5.12-0            3861cfcd7c04c       57.2MB
registry.k8s.io/kube-apiserver            v1.29.3             39f995c9f1996       35.1MB
registry.k8s.io/kube-controller-manager   v1.29.3             6052a25da3f97       33.5MB
registry.k8s.io/kube-proxy                v1.29.3             a1d263b5dc5b0       28.4MB
registry.k8s.io/kube-scheduler            v1.29.3             8c390d98f50c0       18.6MB
registry.k8s.io/pause                     3.8                 4873874c08efc       311kB
registry.k8s.io/pause                     3.9                 e6f1816883972       322kB

4. 检查 kubelet 日志问题

kubelet 重启

shell 复制代码
systemctl daemon-reload
systemctl disable kubelet
systemctl enable kubelet
systemctl restart kubelet

5. 检查发布失败的 kubeadm 配置信息

shell 复制代码
$ cat /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS="--container-runtime-endpoint=unix:///run/containerd/containerd.sock --hostname-override=k8s-master --pod-infra-container-image=registry.k8s.io/pause:3.9"

异常问题记载及解决办法

kubelet 启动失败

查看进程日志

shell 复制代码
journalctl -u kubelet # 查看Unit日志
或者
grep SandboxImage /var/log/messages
或者
less /var/log/message

服务Pod 一直处于pending

查看服务启动确定原因

shell 复制代码
 kubectl -n bdtp describe pod/bdtp-portal-86b7789c75-ffqf6
bash 复制代码
# 查看节点信息
kubectl get nodes --show-labels

kubectl describe nodes k8s-slave1 | grep Taints
Taints:             drunk=true:NoSchedule

# 删除k8s污点信息
kubectl taint node k8s-master node.kubernetes.io/not-ready-
kubectl taint node k8s-master node-role.kubernetes.io/control-plane-

网络问题引起的容器无法调度或者访问

需要重新安装flannal

shell 复制代码
kubectl apply -f ./kube-flannel.yml
相关推荐
㳺三才人子6 小时前
初探 Flask
后端·python·flask·html
星栈独行6 小时前
我在 Rust 全栈项目里用 JWT 做无状态认证
开发语言·后端·rust·前端框架·开源·github·web
Java爱好狂.6 小时前
Java程序员体系化学习路线(2026最新版)
java·后端·java面试·java架构师·java程序员·java八股文·java学习路线
陈随易7 小时前
Redis 8.8发布,一定要更新
前端·后端·程序员
装不满的克莱因瓶7 小时前
SpringBoot 如何将 lib 目录中jar包打包进最终的jar包里面
spring boot·后端·maven·jar·mvn
ltl8 小时前
Transformer 原论文实验结果:为什么 28.4 BLEU 足以改写路线图
后端
excel8 小时前
为什么我推荐使用 Termius:现代 SSH 工具的完整体验
前端·后端
卷毛的技术笔记9 小时前
Java后端硬核实战:用Spring AI Alibaba+Redis给LLM装上“超强记忆中枢”
java·人工智能·redis·后端·spring·ai·系统架构
IT_陈寒10 小时前
Java的Optional差点让我掉坑里,这几个坑你别踩
前端·人工智能·后端
子兮曰10 小时前
Harness 驾驭工程深度教程:从 AGENTS.md 到全链路 AI 编码基础设施
前端·后端·ai编程