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
相关推荐
JOEH601 天前
🚀 数据库插入 1000 万数据?别再傻傻用 for 循环了!实测 5 种方式效率对比
数据库·后端
技术小泽1 天前
MQTT从入门到实战
java·后端·kafka·消息队列·嵌入式
半夏知半秋1 天前
rust学习-Option与Result
开发语言·笔记·后端·学习·rust
独自破碎E1 天前
Spring Boot支持哪些嵌入Web容器?
前端·spring boot·后端
疯狂成瘾者1 天前
后端Spring Boot 核心知识点
java·spring boot·后端
IT 行者1 天前
Spring Boot 4.x 安全监控新篇章:基于 ObservationFilterChainDecorator 的可观测性实践
java·spring boot·后端
pyniu1 天前
Spring Boot租房管理系统
java·spring boot·后端
野生技术架构师1 天前
TokenRetryHelper 详解与 Spring Boot 迁移方案
java·spring boot·后端
IT_陈寒1 天前
Python 3.12性能优化实战:5个让你的代码提速30%的新特性
前端·人工智能·后端