k8s集群重启后相关服务组件无法启动的问题解决

K8s集群重启后kubelet未启动的解决方法
在执行kubectl命令时遇到服务器连接拒绝的问题,通过检查发现kubelet服务未启动。解决方法包括关闭交换内存和设置kubelet开机不启动。具体操作为注释掉/etc/fstab中关于swap的行,确保swap被关闭。

执行kubectl命令,比如kubectl get nodes等命令的时候,出现The connection to the server xxx.xxx.xxx.xxx:6443 was refused - did you specify the right host or port?
在这里插入图片描述
输入 systemctl status kubelet 命令,发现kubelet没有启动
在这里插入图片描述

解决问题:

关闭交换内存

swapoff -a

设置开机不启动
详情参考(http://www.525.life/article?id=1510739742331)
修改修改/etc/fstab文件

vim /etc/fstab

将文件中的/dev/mapper/centos-swap swap swap defaults 0 0这一行注释掉
在这里插入图片描述

输入命令free -m

### Kubernetes 集群的安全重启操作指南 #### 一、理解 Kubernetes 的事件机制 Kubernetes 提供了一种强大的工具——事件(Events),用于跟踪集群内的活动时间线。这些事件记录了诸如 Pod 调度失败、容器重启以及各种错误等重要信息,能够帮助管理员更好地理解和诊断问题的根本原因[^1]。 #### 二、配置主机文件以确保网络一致性 为了防止因 DNS 解析问题而导致的服务中断,在执行任何大规模操作之前,请确认 `/etc/hosts` 文件中的条目已正确定义所有节点的 IP 地址映射关系。例如: ```bash vi /etc/hosts 192.168.56.200 master 192.168.56.201 node1 192.168.56.202 node2 ``` 这一步骤对于保障服务连通性和减少潜在冲突至关重要[^2]。 #### 三、关闭不必要的防护措施 在准备进行维护工作前,建议临时禁用防火墙功能来避免其干扰正常通信流程。可以通过运行命令 `systemctl stop firewalld.service && systemctl disable firewalld.service` 来实现此目的。 #### 四、利用 kubeadm 工具完成版本更新与节点重置 当计划实施涉及整个系统的变更时(比如升级到新版本或者修复某些特定缺陷),可以借助官方推荐的方法—即通过 **kubeadm** 命令行界面来进行管理。具体步骤如下: - 获取当前部署环境下的 ClusterConfiguration 数据; - (可选项)保存现有 kube-apiserver 所使用的 SSL/TLS 凭证副本以防丢失敏感资料; - 替换旧版控制面组件定义为最新可用模板; - 修改本地 Kubelet 参数设置使之匹配新的需求标准;最后记得暂停目标机器上的资源分配过程以便平稳过渡期间不会受到影响[^3]。 #### 五、实际执行安全重启策略 以下是几个关键要点用来指导如何有效地重新启动您的 Kubernetes 集群而最小化风险: 1. **逐步下线节点**: 使用kubectl drain命令优雅地驱逐选定服务器上的负载,并将其标记为不可调度状态直到恢复为止。 ```bash kubectl cordon <node-name> kubectl drain --ignore-daemonsets <node-name> --delete-local-data ``` 2. **监控健康状况**: 利用仪表盘插件或其他第三方解决方案持续观察整体性能指标变化趋势,及时发现异常情况作出响应。 3. **验证核心服务稳定性**: 确认 API Server, Scheduler 和 Controller Manager 这些基础架构单元均已成功上线并无报错日志输出后再继续下一步动作。 4. **回滚预案制定**: 如果遇到无法预料的技术难题,则应迅速切换至先前稳定的状态组合直至找到根本解决办法为止。 --- ### 示例脚本:自动化部分常规任务 下面给出一段简单的 Bash Shell Script 实现上述提到的部分逻辑片段作为参考用途: ```bash #!/bin/bash NODES=("master" "node1" "node2") for NODE in "${NODES[@]}"; do echo "Processing $NODE..." # Step 1: Cordon the Node kubectl cordon "$NODE" # Step 2: Drain the Node (Graceful Eviction) kubectl drain "$NODE" --ignore-daemonsets --delete-emptydir-data # Optional: Perform Maintenance Tasks Here... # Step 3: Uncordon after completion sleep 10 # Simulate wait time during maintenance window. kubectl uncordon "$NODE" done ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值