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

个人备案网站服务内容排名第一的网络游戏

个人备案网站服务内容,排名第一的网络游戏,新洲建设局网站,wordpress更知鸟文章目录1. 正常情况(能恢复)1.1、场景1.2、过程分析1.3、恢复情况2. 异常情况(需要手动干预)2.1、Master 启动失败2.2、Node 节点 kubelet 失败3. 和宕机时间关系3.1、短期宕机(几小时 ~ 几天)3.2、长期宕…

文章目录

    • 1. 正常情况(能恢复)
      • 1.1、场景
      • 1.2、过程分析
      • 1.3、恢复情况
    • 2. 异常情况(需要手动干预)
      • 2.1、Master 启动失败
      • 2.2、Node 节点 kubelet 失败
    • 3. 和宕机时间关系
      • 3.1、短期宕机(几小时 ~ 几天)
      • 3.2、长期宕机(几周 ~ 几个月)
    • 4. 建议做法(保证恢复能力)
    • 5、总结
    • 6、K8s 宕机后自检/自愈脚本
      • 6.1、脚本示例 /usr/local/bin/k8s-self-heal.sh
      • 6.2、使用方法
      • 6.3、功能总结

虚拟机中kubeadim部署的k8s集群,虚拟机关机多久,宕机多长时间,重新开机,能否恢复?等等问题。

上述问题分两种情况来看,跟虚拟机宕机时间长短关系不大,关键看关机前集群状态、etcd 数据、节点启动顺序。

1. 正常情况(能恢复)

1.1、场景

虚拟机(Master、Node)只是关机或宿主机重启,没有人为执行 kubeadm reset,也没损坏 etcd 数据。

1.2、过程分析

etcd 数据保存在 /var/lib/etcd/,关机不会丢失。

kubelet、kube-apiserver、controller-manager、scheduler、etcd 等组件以 systemd 服务或 容器形式运行,重启后会随 Docker/containerd 自动拉起。

节点 kubelet 会自动向 apiserver 注册,Pod 也会按原状态恢复(除了部分临时容器、emptyDir 卷的数据会丢失)。

1.3、恢复情况

Master 节点正常启动 → 集群 API 可用。

Node 节点正常启动 → Pod 重新调度或继续运行。

⏱ 无论关机几分钟还是几天,只要 etcd 数据没损坏,就能恢复。

2. 异常情况(需要手动干预)

以下情况可能导致集群不能“自动恢复”:

2.1、Master 启动失败

原因:etcd 数据损坏、容器运行时未启动、证书过期(一般一年)。

解决:恢复 etcd 备份,或重新 kubeadm init 再加节点。

2.2、Node 节点 kubelet 失败

原因:容器运行时没起来、kubelet 配置错误。

解决:systemctl status kubelet -l 检查日志,手动修复。

多 Master 集群,部分 Master 挂掉

etcd 失去 quorum(多数派),整个集群 API 不可用。

必须恢复大多数 etcd 成员,集群才能运转。

3. 和宕机时间关系

3.1、短期宕机(几小时 ~ 几天)

一般完全可恢复,只是业务 Pod 会因为重启而中断。

3.2、长期宕机(几周 ~ 几个月)

证书过期风险(默认 1 年有效期,部分 bootstrap token 只有 24h)。

etcd 数据可能还在,但 kubeadm init 时生成的证书过期后,需要 kubeadm cert renew。

4. 建议做法(保证恢复能力)

etcd 备份

ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-$(date +%F).db

定期检查证书

kubeadm cert check-expiration

提前续期:

kubeadm cert renew all

保证容器运行时开机自启


systemctl enable containerd
systemctl enable kubelet

5、总结

只要 etcd 数据还在、证书没过期,虚拟机关机 再长时间也能恢复。

如果 etcd 损坏、证书过期,那就需要人工修复或重新初始化。

6、K8s 宕机后自检/自愈脚本

K8s 宕机后自检/自愈脚本,用于虚拟机重启或宕机恢复后,自动检测 Master 节点的关键组件(etcd、证书、kube-apiserver、RBAC),并在发现问题时给出修复建议或自动处理。

脚本适用于 kubeadm 部署的集群,运行在 Master 节点 上。

6.1、脚本示例 /usr/local/bin/k8s-self-heal.sh

#!/bin/bash
# K8s 宕机后自检/自愈脚本
# 适用:kubeadm 部署的集群(Master 节点执行)LOGFILE="/var/log/k8s-self-heal.log"
DATE=$(date "+%F %T")
echo -e "\n==== K8s 自检开始: $DATE ====\n" | tee -a $LOGFILE# 检查服务状态函数
check_service() {local svc=$1systemctl is-active --quiet $svcif [ $? -ne 0 ]; thenecho "[WARN] $svc 未运行,尝试拉起..." | tee -a $LOGFILEsystemctl restart $svcsleep 5systemctl is-active --quiet $svc && \echo "[OK] $svc 已恢复" | tee -a $LOGFILE || \echo "[ERROR] $svc 无法恢复,请手动排查" | tee -a $LOGFILEelseecho "[OK] $svc 正常运行" | tee -a $LOGFILEfi
}# 1. 检查关键服务
for svc in containerd kubelet; docheck_service $svc
done# 2. 检查 etcd 健康
echo "[CHECK] 检查 etcd 健康..." | tee -a $LOGFILE
if command -v etcdctl >/dev/null 2>&1; thenexport ETCDCTL_API=3etcdctl --endpoints=https://127.0.0.1:2379 \--cacert=/etc/kubernetes/pki/etcd/ca.crt \--cert=/etc/kubernetes/pki/etcd/server.crt \--key=/etc/kubernetes/pki/etcd/server.key endpoint health 2>>$LOGFILEif [ $? -ne 0 ]; thenecho "[ERROR] etcd 不健康,可能需要从快照恢复" | tee -a $LOGFILEelseecho "[OK] etcd 正常" | tee -a $LOGFILEfi
elseecho "[WARN] etcdctl 未安装,跳过 etcd 检查" | tee -a $LOGFILE
fi# 3. 检查 kube-apiserver 健康
echo "[CHECK] 检查 kube-apiserver..." | tee -a $LOGFILE
if [ -f /etc/kubernetes/admin.conf ]; thenexport KUBECONFIG=/etc/kubernetes/admin.confkubectl get --raw=/healthz &>/dev/nullif [ $? -eq 0 ]; thenecho "[OK] kube-apiserver 健康" | tee -a $LOGFILEelseecho "[ERROR] kube-apiserver 无法访问,尝试重启 kubelet..." | tee -a $LOGFILEsystemctl restart kubeletfi
elseecho "[ERROR] admin.conf 缺失,可能需要重新 kubeadm init" | tee -a $LOGFILE
fi# 4. 检查证书有效期
echo "[CHECK] 检查证书有效期..." | tee -a $LOGFILE
if command -v kubeadm >/dev/null 2>&1; thenEXP=$(kubeadm cert check-expiration | grep "expire" | grep -v "CA" | grep -Eo "[0-9]+d" | sed 's/d//' | sort -n | head -1)if [ "$EXP" != "" ] && [ $EXP -lt 30 ]; thenecho "[WARN] 证书不足 30 天即将过期,尝试自动续期..." | tee -a $LOGFILEkubeadm cert renew all && systemctl restart kubeletelseecho "[OK] 证书有效期正常" | tee -a $LOGFILEfi
elseecho "[WARN] kubeadm 未安装,跳过证书检查" | tee -a $LOGFILE
fi# 5. 检查 RBAC (system:admin 权限)
echo "[CHECK] 检查 RBAC..." | tee -a $LOGFILE
kubectl auth can-i get pods --all-namespaces --as=system:admin &>/dev/null
if [ $? -eq 0 ]; thenecho "[OK] RBAC 权限正常" | tee -a $LOGFILE
elseecho "[ERROR] RBAC 异常,system:admin 无法操作集群" | tee -a $LOGFILE
fiecho -e "\n==== K8s 自检结束: $(date "+%F %T") ====\n" | tee -a $LOGFILE

6.2、使用方法

保存脚本:

vim /usr/local/bin/k8s-self-heal.sh
chmod +x /usr/local/bin/k8s-self-heal.sh

开机自动执行:

cat >/etc/systemd/system/k8s-self-heal.service <<EOF
[Unit]
Description=K8s 自检/自愈服务
After=network-online.target[Service]
Type=oneshot
ExecStart=/usr/local/bin/k8s-self-heal.sh
StandardOutput=journal
StandardError=journal[Install]
WantedBy=multi-user.target
EOF
systemctl enable k8s-self-heal.service

手动运行也可以:

/usr/local/bin/k8s-self-heal.sh

6.3、功能总结

  • 自动检测并恢复:containerd、kubelet

  • 检查 etcd 健康

  • 检查 kube-apiserver 状态

  • 检查并自动续期证书

  • 检查 RBAC 权限

  • 运行日志存放在 /var/log/k8s-self-heal.log

在这里插入图片描述


“人的一生会经历很多痛苦,但回头想想,都是传奇”。


http://www.dtcms.com/a/434172.html

相关文章:

  • 义乌网站制作多少钱wordpress 换主题 打开慢
  • 做房产网站小程序源码下载网
  • 在设计赚钱的网站oj网站开发
  • 杭州网页模板建站百度seo优化包含哪几项
  • 建站后角度是不是0wordpress 评论 编辑器
  • 拆分盘网站建设最热门的网页游戏排行
  • qq钓鱼网站怎么制作360免费wifi老是掉线怎么办
  • 户外保险网站装修平台哪个好
  • 化妆品网站下载展厅设计公司成都
  • 张家界网站制作公司手机wordpress上传失败
  • 网站的设计流程是怎么样的?dw网页设计源代码
  • 建站公司推广如何建双注册网站
  • 做搜狗pc网站优化快速代加工厂找订单的网站
  • 网站开发新加坡网页设计代码链接怎么写
  • 网站重构案例wordpress响应式加后台
  • 做基础销量的网站什么是网站栏目标题
  • 商城网站制作公司地址苏州营销型网站开发公司
  • 1个月能学好网站开发吗wordpress搜索小工具
  • 科技节小发明小制作营销网站的专业性诊断评价和优化
  • 做任务兼职赚钱的网站有哪些网站建设的流程与思路
  • 铜仁市网站建设情况浙江seo公司
  • 哪个网站专做民宿科普网站建设
  • 蜜淘app在那个网站做的济南网站建设网站制作
  • 北京网站制作 建设推广网站需求定制表单
  • 袜子的网站建设方案贵州省住房和城乡建设厅网站
  • 网站建设无锡海之睿文化馆互联网站建设方案
  • php网站作业模版正规的关键词优化软件
  • 仪征做网站阿里云域名注册查询
  • 有哪几个平台做网站情侣博客 wordpress
  • 360免费视频网站建设做本地的分类信息网站