惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
Arctic Wolf
V
V2EX
P
Proofpoint News Feed
The Hacker News
The Hacker News
GbyAI
GbyAI
G
Google Developers Blog
S
Schneier on Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
W
WeLiveSecurity
Security Archives - TechRepublic
Security Archives - TechRepublic
博客园 - Franky
Recent Announcements
Recent Announcements
腾讯CDC
Hacker News - Newest:
Hacker News - Newest: "LLM"
K
Kaspersky official blog
U
Unit 42
Engineering at Meta
Engineering at Meta
J
Java Code Geeks
Google Online Security Blog
Google Online Security Blog
Last Week in AI
Last Week in AI
V
Vulnerabilities – Threatpost
N
News and Events Feed by Topic
O
OpenAI News
量子位
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Y
Y Combinator Blog
博客园 - 【当耐特】
Vercel News
Vercel News
Hacker News: Ask HN
Hacker News: Ask HN
T
Tor Project blog
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Security Blog
Microsoft Security Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
AWS News Blog
AWS News Blog
MongoDB | Blog
MongoDB | Blog
S
Security Affairs
A
About on SuperTechFans
Project Zero
Project Zero
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园 - 聂微东
Webroot Blog
Webroot Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cloudbric
Cloudbric
T
Tenable Blog
月光博客
月光博客
C
Check Point Blog
宝玉的分享
宝玉的分享
V
Visual Studio Blog
T
The Blog of Author Tim Ferriss
NISL@THU
NISL@THU

二叉树的博客

Ray 支持昇腾 NPU 的 KubeRay 对接记录 openEuler 22.03 arm64 离线包适配记录 在线 IDE 的通用容器镜像打包流程 麒麟 V10 安装时配置本地源 containerd 允许 HTTP 镜像仓库拉取 Red Hat 8 amd64 离线依赖适配记录 通用docker容器镜像打包应用的流程 kubevirt初体验 kubevirt初体验 魔改dockur制作可迁移的Windows镜像(单文件) 魔改dockur制作可迁移的Windows镜像(单文件) 通过dockur制作可迁移的Windows镜像(双文件) 通过ProxmoxVE制作kubevirt可用的Windows镜像 通过dockur制作可迁移的Windows镜像(双文件) 通过ProxmoxVE制作kubevirt可用的Windows镜像 基于docker的在线IDE制作(支持浏览器直接访问) 基于docker的在线IDE制作(支持浏览器直接访问) k8s日常问题排障 k8s日常问题排障 jetbrains家的goland项目可用但老爆红 jetbrains家的goland项目可用但老爆红 机房本地服务器自建Gitea并使用 机房本地服务器自建Gitea并使用 nvidia-smi被自动升级无法与GPU通信了怎么办 conda使用GPU时的一些陷阱 给机房的LXD容器配置跳板机进行连接 在Pycharm上连接远程虚拟环境进行使用 给机房的Ubuntu22.04安装LXD共享GPU资源 给机房的Ubuntu22.04的Linux进行内穿映射端口
BKE 与 BMP 部署排障流程
二叉树上的我 · 2025-05-12 · via 二叉树的博客

这篇整理 BKE/BMP 部署和运行阶段的常用排障流程。核心原则是先确认当前处于部署前、部署中还是部署后的集群运行阶段,再选择对应的 bkekubectldocker 或系统服务排查路径。

部署命令排障

执行 bke 开头的命令时,可以打开调试输出:

执行初始化:

bke init 会启动一个 k3s,用于承载 Kubernetes 部署过程中的控制资源。命令执行完成后,先导出 kubeconfig:

1
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

如果部署 YAML 写错,需要重新创建集群,可以先暂停并删除 bc

1
2
3
kubectl edit bc -n bke-cluster bke-cluster --kubeconfig=/etc/rancher/k3s/k3s.yaml
kubectl get bc -A --kubeconfig=/etc/rancher/k3s/k3s.yaml
kubectl delete bc -n bke-cluster bke-cluster --kubeconfig=/etc/rancher/k3s/k3s.yaml

编辑时将 pause 改为 true,等待状态变化后再删除资源,之后即可重新 create 修正后的 YAML。

已部署集群排障

先看所有命名空间的 Pod 状态:

对异常 Pod 先 describe

1
kubectl describe pod license-xq13d -n kube-system

如果镜像能正常 pull,再看日志:

1
2
3
4
kubectl logs license-xq13d -n kube-system
kubectl logs license-xq13d -c controller -n kube-system
kubectl logs license-xq13d -n kube-system --tail 100
kubectl logs license-xq13d -n kube-system -f

如果 Pod 很快被创建又删除,普通 get pods 可能看不到,需要实时观察:

1
2
3
4
kubectl get pods -n kube-system -w
kubectl get jobs -n kube-system
kubectl get events -n kube-system
kubectl get events -n kube-system -w

替换集群中的镜像版本

本地开发完成后,如果已经 kubectl apply -f manifest.yaml,需要替换集群中的镜像版本,可以先查 Deployment:

1
kubectl get deployments -n kube-system

编辑对应 Deployment:

1
kubectl edit deployment <deployment-name> -n kube-system

修改镜像后,观察 Pod 是否被重建:

1
kubectl get pods -n kube-system -w

如果没有按预期替换,可以删除旧 Pod,依赖 Deployment 自动拉起:

1
kubectl delete pod license-xq13d -n kube-system

本地调试 API 或 Controller

如果需要本地启动 apicontroller,先把集群中对应 Deployment 的副本数改成 0,避免调度冲突:

1
kubectl edit deployment <deployment-name> -n kube-system

修改 spec.replicas 后观察:

1
2
kubectl get deployment <deployment-name> -n kube-system -w
kubectl get pods -n kube-system -l app=<app-label> -w

集群断电重启异常

master 节点先查 Node:

1
kubectl get nodes -o wide

如果 kubelet 异常,继续查容器:

1
2
docker ps -a | grep kubelet
docker logs kubelet --tail 100

典型错误:

1
failed to run Kubelet: running with swap on is not supported, please disable swap!

说明机器重启后自动挂载了 swap,导致 kubelet 起不来。处理方式:

1
2
3
4
5
free -g
sed -i '/swapfile/d' /etc/fstab
echo "3" >/proc/sys/vm/drop_caches
swapoff -a
rm -f /swapfile

然后在所有 master 节点上停止 mariadb 容器:

1
2
docker ps -a | grep mariadb
docker stop <mariadb-container>

修改:

1
vi /var/mariadb/data/grastate.dat

将最后一行 safe_to_bootstrap0 改成 1,再启动所有 mariadb 容器,随后删除并重建 license Pod:

1
kubectl get pods -n kube-system

HTTP 仓库 400 Bad Request

纳管仓库是普通非高可用、HTTP 协议时,如果报 400 Bad Request,需要在部署机上修改 registry 配置:

1
vi /etc/docker/bocloud_image_registry/config.yml

注释 TLS 配置:

1
2
3
# tls:
#   certificate: /etc/docker/registry/deploy.bocloud.k8s.crt
#   key: /etc/docker/registry/deploy.bocloud.k8s.key

重启 registry:

1
docker restart bocloud_image_registry

删除 Docker 代理

如果用户修改过 Docker 代理,集群更新镜像时可能被代理污染。检查:

1
/etc/systemd/system/docker.service.d/http-proxy.conf

备份后删除该文件,重载 Docker,再删除失败 Pod 让它重建。

1
2
3
systemctl daemon-reload
systemctl restart docker
kubectl delete pod <pod-name> -n <namespace>