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

【K8S系列】Kubernetes LoadBalancer 类型的 Service 未分配 IP 地址排查步骤及命令执行结果分析

在这里插入图片描述

在 Kubernetes 中,如果 LoadBalancer 类型的 Service 未分配 IP 地址,以下是详细的故障排查步骤及对应命令的执行结果分析。

一、检查 Service 状态

命令

kubectl get svc <service-name>

执行结果分析

输出示例:

NAME          TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
my-service    LoadBalancer   10.96.0.1      <pending>     80:30000/TCP    5m
  • NAME:Service 的名称。
  • TYPE:Service 的类型(LoadBalancer)。
  • CLUSTER-IP:Service 在集群内的虚拟 IP 地址。
  • EXTERNAL-IP:期望的外部 IP 地址,如果显示 <pending>,表示负载均衡器尚未分配 IP。
  • PORT(S):Service 的端口配置,格式为 外部端口:节点端口/协议
  • AGE:Service 的存在时间。

结论

如果 EXTERNAL-IP 显示为 <pending>,表示负载均衡器尚未创建或未分配 IP 地址,需要进一步排查。

二、查看 Service 详细信息

命令

kubectl describe svc <service-name>

执行结果分析

输出示例:

Name:              my-service
Namespace:         default
Labels:            <none>
Annotations:       cloudprovider.kubernetes.io/external-ip: true
Selector:          app=my-app
Type:              LoadBalancer
IP:                10.96.0.1
Port:              <unnamed>  80/TCP
Endpoints:         10.244.1.2:8080,10.244.1.3:8080
  • Name:Service 的名称和命名空间。
  • Annotations:可能包含影响负载均衡器创建的注释。
  • Selector:确定哪些 Pod 被包括在内,检查是否匹配到正在运行的 Pod。
  • Type:Service 类型,确认为 LoadBalancer。
  • IP:Service 的 Cluster IP。
  • Port:对外暴露的端口和协议。
  • Endpoints:实际后端 Pod 的 IP 地址和端口。

结论

如果 Endpoints 显示为空,表示没有 Pod 可供访问,可能由于选择器匹配错误或 Pod 状态问题。

三、检查 Kubernetes 控制平面日志

命令

kubectl logs -n kube-system <kube-controller-manager-pod>

执行结果分析

输出示例:

I1015 12:34:56.789012 1 service_controller.go:123] Starting service controller
I1015 12:34:57.123456 1 service_controller.go:456] Provisioning load balancer for service my-service
E1015 12:34:58.123456 1 service_controller.go:789] Failed to create load balancer: insufficient permissions
  • I:表示信息日志。
  • E:表示错误日志,后面跟随具体的错误信息。

结论

如果日志中包含 Failed to create load balancer 的错误信息,可能是由于权限不足或其他问题,需检查 IAM 权限或云提供商配置。

四、检查云提供商的控制台

一般情况下,不能通过 Kubernetes 命令直接获取负载均衡器的详细状态。此时,您需要登录到云提供商的管理控制台(如 AWS、GCP、Azure)查看负载均衡器的创建状态和配置。

云控制台检查内容:

  • 负载均衡器列表:确认负载均衡器是否存在。
  • IP 地址:检查是否分配了外部 IP。
  • 健康检查:确认负载均衡器是否通过了健康检查。
  • 安全组/网络 ACL:确保安全组和网络 ACL 允许流量通过。

结论

如果控制台中未找到负载均衡器,可能是 Kubernetes 没有正确创建,需检查配置和权限。

五、检查资源配额

命令

kubectl get resourcequotas

执行结果分析

输出示例:

NAME                 AGE   REQUESTS   LIMITS
loadbalancer-quota   10m   2          5
  • NAME:资源配额的名称。
  • REQUESTSLIMITS:当前请求的负载均衡器数量和最大允许数量。

结论

如果当前请求数量已达到配额限制,则无法创建新的负载均衡器。需要调整配额或释放不再使用的负载均衡器。

六、检查网络配置

如果负载均衡器创建失败,可能是由于 VPC、子网或安全组的问题。

检查步骤:

  • 登录到云提供商控制台,检查 VPC 和子网配置。
  • 确保负载均衡器所在的子网可以路由到外部网络。
  • 检查安全组,确保允许对负载均衡器端口的访问。

结论

如果网络配置存在问题,需调整 VPC 和安全组设置,以允许负载均衡器正常创建和访问。

七、总结

通过执行上述命令并分析结果,可以逐步排查 LoadBalancer 类型 Service 未分配 IP 的原因。确保检查服务状态、详细信息、控制平面日志、云提供商控制台、资源配额和网络配置,能够有效帮助您定位问题并采取相应的解决方案。


http://www.kler.cn/a/374107.html

相关文章:

  • Webserver(2.6)有名管道
  • 迷茫内耗的一天
  • websocket的使用
  • Z 检验和 T 检验之间的区别
  • RNN在训练中存在的问题
  • 记一次:使用使用Dbeaver连接Clickhouse
  • 从壹开始解读Yolov11【源码研读系列】——Data.Augment.py:数据增强模块第四部分——Format标签格式标准化操作
  • C++刷怪笼(9)继承
  • vscode摸鱼学习插件开发
  • Rust 力扣 - 2379. 得到 K 个黑块的最少涂色次数
  • Kubernetes——part8-2 k8s集群存储解决方案 GlusterFS
  • CST软件如何理解Axial Ratio轴比
  • 【论文速读】Optimization-based Prompt Injection Attack to LLM-as-a-Judge
  • 【AI工作流】FastGPT - 深入解析FastGPT工作流编排:从基础到高级应用的全面指南
  • ESP8266 连接 MQTT 服务器EMQX 连接MQTTX
  • 【分布式技术】分布式序列算法Snowflake深入解读
  • (蓝桥杯C/C++)——STL(下)
  • Vue-cli之库模式以及模块化的魅力 - - 【UMD】
  • 【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-9
  • Django后台接口开发
  • 讲一讲 kafka 的 ack 的三种机制?
  • 【全新上线】波克2021天恒系统源码 - 70款娱乐游戏带视频教程支持
  • 分类算法中 XGBoost和LightGBM 的区别简介
  • ubuntu交叉编译zlib库给arm平台使用
  • 校园社团信息管理:Spring Boot技术的最佳实践
  • 自由学习记录(16)