k8s Get http://127.0.0.1:10252/healthz: dial tcp 127.0.0.1:10252: connect: connection refused问题解决

本文介绍了在安装Kubernetes集群后,遇到scheduler和controller-manager健康状态警告的问题,通过修改kube-scheduler.yaml和kube-controller-manager.yaml文件,将默认端口从0改为实际端口,并重启kubelet服务,确保组件正常运行。

安装完k8s集群之后很可能会出现一下情况:

[root@kube-master]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS      MESSAGE                                                                                       ERROR
scheduler            Unhealthy   Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused   
controller-manager   Unhealthy   Get "http://127.0.0.1:10252/healthz": dial tcp 127.0.0.1:10252: connect: connection refused   
etcd-0               Healthy     {
   
   "health":"true"}  

出现这种情况是kube-controller-manager.yaml和kube-scheduler.yaml设置的默认端口是0,在文件中注释掉就可以了。(每台master节点都要执行操作)

  1. 修改kube-scheduler.yaml文件
vim /etc/kubernetes/manifests/kube-scheduler.yaml
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    component: kube-scheduler
    tier: control-plane
  name: kube-scheduler
  namespace: kube-system
spec:
  containers:
  - command:
   
<think> 首先,用户的问题是关于解决Kubernetes集群中scheduler和controller-manager组件报Unhealthy错误的问题,具体错误是连接到127.0.0.1:10251127.0.0.1:10252端口被拒绝。用户提供了几个引用,我需要基于这些引用来构建回答。 引用[1]描述了错误现象:scheduler和controller-manager Unhealthy,连接被拒绝。引用[2]和[3]提供了解决方案:通过修改kube-controller-manager.yaml和kube-scheduler.yaml文件,注释掉port=0的配置。 关键步骤: 1. 定位到/etc/kubernetes/manifests/目录。 2. 编辑kube-controller-manager.yaml文件,找到port: 0的行并注释掉或删除。 3. 同样编辑kube-scheduler.yaml文件,注释掉port: 0的行。 4. 应用更改后,组件会自动重启。 用户要求回答结构清晰,逐步解决问题。另外,系统级指令要求: - 行内数学表达式用$...$格式(但这里可能不涉及)。 - 独立公式用$$...$$(不适用)。 - LaTeX语法正确(这里主要是文本)。 - 使用中文回答。 - 生成相关问题。 - 引用的段落末尾添加引用标识,如[^1]。 在回答中,我需要自然地引用提供的引用内容。 结构: 1. **问题诊断**:简要解释错误原因(根据引用,端口设置为0导致无法连接)。 2. **解决方案步骤**:详细列出步骤,确保清晰可靠。 3. **验证更改**:建议如何验证问题是否解决。 4. **添加相关问题**:在末尾生成相关问题。 相关问题生成: - 基于主题,如Kubernetes故障排除、组件健康检查等。 - 例如: 1. 如何监控Kubernetes组件的健康状况? 2. Kubernetes中其他常见Unhealthy问题解决方法? 3. 如何配置Kubernetes scheduler和controller-manager的安全端口? 确保回答真实可靠:基于提供的引用,解决方案是可行的。 最终回答框架: - 开头:解释问题。 - 步骤:逐步指导修改配置文件。 - 结尾:验证方法。 - 相关问题列表。 </think>### Kubernetes scheduler和controller-manager Unhealthy问题解决方案 在Kubernetes集群中,scheduler和controller-manager组件报告Unhealthy错误(如连接127.0.0.1:10251127.0.0.1:10252端口被拒绝),通常是由于配置文件中的端口设置问题导致的。根本原因是`kube-scheduler.yaml`和`kube-controller-manager.yaml`文件中默认启用了`port=0`(禁用HTTP端口),使得健康检查失败。以下基于可靠经验提供逐步解决方案[^1][^2][^3]。 #### 解决步骤: 1. **登录Master节点**: 确保操作在Kubernetes Master节点上执行,因为配置文件位于此节点。 2. **定位配置文件目录**: 进入Kubernetes manifests目录: ```bash cd /etc/kubernetes/manifests/ ``` 列出文件,确认包含`kube-scheduler.yaml`和`kube-controller-manager.yaml`[^2]。 3. **编辑kube-controller-manager.yaml文件**: 使用文本编辑器(如vim)打开文件: ```bash vim kube-controller-manager.yaml ``` 在`containers`部分找到`command`字段下的`--port=0`行,将其注释掉或删除。修改后示例: ```yaml containers: - command: - kube-controller-manager - --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf - --bind-address=127.0.0.1 # - --port=0 # 注释掉此行 ``` 保存并退出(vim中按`Esc`后输入`:wq`)[^2][^3]。 4. **编辑kube-scheduler.yaml文件**: 同样打开文件: ```bash vim kube-scheduler.yaml ``` 注释掉`--port=0`行: ```yaml containers: - command: - kube-scheduler - --authentication-kubeconfig=/etc/kubernetes/scheduler.conf - --bind-address=127.0.0.1 # - --port=0 # 注释掉此行 ``` 保存并退出[^2][^3]。 5. **应用更改并重启组件**: Kubernetes会自动检测配置变更。如果没有自动重启,手动重启kubelet服务: ```bash systemctl restart kubelet ``` 等待1-2分钟,组件会重建Pod。 6. **验证修复结果**: 检查组件健康状态: ```bash kubectl get componentstatus ``` 正常输出应显示`Healthy`: ``` NAME STATUS MESSAGE ERROR scheduler Healthy ok controller-manager Healthy ok ``` 或查看日志确认无错误: ```bash kubectl logs -n kube-system <scheduler-pod-name> kubectl logs -n kube-system <controller-manager-pod-name> ``` #### 注意事项: - **权限问题**:确保使用`root`用户或`sudo`权限操作配置文件。 - **备份配置**:修改前建议备份文件: ```bash cp /etc/kubernetes/manifests/kube-*.yaml ~/backup/ ``` - **集群版本兼容性**:此方案适用于Kubernetes v1.18+,其他版本配置路径可能略有不同[^3]。 - **根本原因**:`port=0`禁用HTTP服务,导致健康检查失败。注释后,组件会使用默认端口(10251/10252)恢复监听。 如果问题解决,检查防火墙规则是否阻塞端口: ```bash iptables -L | grep 10251 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值