【K8S系列】Kubernetes 中 NodePort 类型的 Service 无法访问的问题【已解决】

news2024/11/7 13:51:32

在这里插入图片描述

在 Kubernetes 中,NodePort 类型的 Service 允许用户通过每个节点的 IP 地址和指定的端口访问应用程序。如果
NodePort 类型的 Service 无法通过节点的 IP
地址和指定端口进行访问,可能会导致用户无法访问应用。本文将详细分析该问题的常见原因及其解决方案。

一、问题描述

NodePort 类型的 Service 允许用户通过以下方式访问服务:

  • http://<node-ip>:<node-port>

如果无法访问,可能会出现以下情况:

  • 请求超时。
  • 返回连接错误。
  • 404 或其他错误代码。

二、故障排查步骤

1. 检查 NodePort Service 的状态

命令
kubectl get svc <service-name>
执行结果分析

输出示例:

NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
my-service    NodePort    10.96.0.1      <none>        80:30007/TCP    10m
  • PORT(S):显示 NodePort 的外部端口(如 30007)。

2. 查看 Service 详细信息

命令
kubectl describe svc <service-name>
执行结果分析

输出示例:

Name:              my-service
Namespace:         default
Selector:          app=my-app
Type:              NodePort
IP:                10.96.0.1
Port:              <unnamed>  80/TCP
NodePort:         30007/TCP
Endpoints:         10.244.1.2:8080,10.244.1.3:8080
  • NodePort:显示分配给 Service 的 NodePort。
  • Endpoints:显示与 Service 关联的 Pod 的 IP 地址和端口。如果此字段为空,则表示没有可用的 Pod。

3. 验证 Pod 状态和标签

命令
kubectl get pods -l app=my-app
执行结果分析

输出示例:

NAME            READY   STATUS    RESTARTS   AGE
my-app-1       1/1     Running   0          5m
my-app-2       1/1     Running   0          5m
  • 确保 Pod 处于 Running 状态,并且 READY 列显示为 1/1

4. 测试 Pod 之间的连接

在集群内部测试从 Pod 到 Service 的连接。

命令
kubectl exec -it <some-pod-name> -- curl http://my-service
执行结果分析
  • 如果返回正常响应,表示 Service 和 Pod 之间的连接正常。
  • 如果出现错误,需要进一步检查 Pod 的健康和配置。

三、常见原因及解决方案

1. NodePort 未正确配置

问题描述:Service 的 NodePort 配置可能存在问题。

解决方案

  • 确认 NodePort 在 30000 到 32767 的范围内(Kubernetes 默认范围)。
  • 如果需要手动设置 NodePort,确保配置正确。
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app: my-app
  ports:
    - port: 80
      targetPort: 8080
      nodePort: 30007  # 确保在允许范围内

2. Pod 未处于 Running 状态

问题描述:与 Service 关联的 Pod 可能未处于正常状态。

解决方案

  • 使用以下命令检查 Pod 状态:
kubectl get pods -l app=my-app
  • 如果 Pod 处于 CrashLoopBackOff 或其他异常状态,查看其日志:
kubectl logs <pod-name>
  • 解决 Pod 的健康问题,确保它们能够正常运行。

3. 防火墙或安全组设置

问题描述:云环境中的防火墙或安全组可能阻止了对 NodePort 的访问。

解决方案

  • 检查云提供商控制台中的安全组设置,确保允许访问 NodePort 所在的端口。
  • 对于在本地环境(如 Minikube)中运行的集群,确保本地防火墙允许访问 NodePort。

4. 节点 IP 地址不正确

问题描述:使用了错误的节点 IP 地址。

解决方案

  • 使用以下命令获取节点的 IP 地址:
kubectl get nodes -o wide

输出示例:

NAME           STATUS   ROLES    AGE   VERSION   INTERNAL-IP      EXTERNAL-IP
kube-node-1    Ready    <none>   10m   v1.21.0   192.168.1.10     <none>
  • 确保使用的节点 IP 地址正确。

5. Network Policies 限制访问

问题描述:可能存在网络策略(Network Policies),限制了 Pod 之间的流量。

解决方案

  • 检查当前命名空间的网络策略:
kubectl get networkpolicy
  • 如果存在限制,更新网络策略以允许流量。

6. Service 的选择器未匹配到 Pod

问题描述:Service 的选择器未正确匹配到 Pod 的标签。

解决方案

  • 检查 Service 的选择器和 Pod 的标签:
kubectl get pods --show-labels
  • 确保选择器 app=my-app 正确匹配到相关的 Pod 标签。

7. Pod 的容器端口未正确暴露

问题描述:Pod 的容器未正确配置暴露端口。

解决方案

  • 确认 Pod 的容器定义中包含正确的 containerPort
containers:
- name: my-container
  image: my-image
  ports:
  - containerPort: 8080  # 必须与 Service 的 targetPort 一致

四、总结

NodePort 类型的 Service 无法通过节点的 IP 地址和指定端口访问的问题可能由多种原因引起,包括配置错误、Pod 状态异常、防火墙设置和网络策略等。通过逐步排查 Service 状态、Pod 状态、网络配置和安全组设置,可以有效定位问题并采取相应的解决方案。确保 Service 和 Pod 之间的配置一致性,以及网络的可用性,是确保服务正常运行的关键。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2228869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用AdsPower指纹浏览器克服爬虫技术限制,安全高效进行爬虫!

随着中国开发者日益成熟&#xff0c;应用质量明显提升&#xff0c;越来越多的开发者选择出海寻找机会扩大市场。但“应用出海”说起来容易&#xff0c;做起来难。其中&#xff0c;最大的困恼就是对海外市场缺乏了解。 很多开发者会选择使用网络爬虫&#xff08;Web Crawling&a…

centos7之LVS-DR模式传统部署

介绍 优缺点以及适用场景 优点&#xff1a;能负载更多的Realserver减轻LB的压力,性能高于tun模式。 缺点&#xff1a;不支持端口转发(VIP:80必须代理RIP:80),Realserver和LVS需要在同一网段下。 适用&#xff1a;适用于大多数公司&#xff0c;也是大多数公司用的最多的模式。…

爬虫+数据保存2

爬取数据保存到MySQL数据库 这篇文章, 我们来讲解如何将我们爬虫爬取到的数据, 进行保存, 而且是把数据保存到MySQL数据库的方式去保存。 目录 1.使用pymysql连接数据库并执行插入数据sql代码(insert) 2.优化pymysql数据库连接以及插入功能代码 3.爬取双色球网站的数据并保…

什么样的工程项目管理软件适合中小施工企业?

工程行业是典型的传统行业&#xff0c;劳动密集&#xff0c;协作频繁&#xff0c;依赖经验传承。在工程项目施工过程中&#xff0c;常见的难题纷繁复杂&#xff0c;其中包括效率低下、材料浪费、数据不实、原材料成本上涨、工期延误、质量缺陷和安全风险等。这些问题不仅阻碍了…

机器学习中的嵌入是什么?

一、说明 嵌入是真实世界对象的数字表示&#xff0c;机器学习&#xff08;ML&#xff09;和人工智能&#xff08;AI&#xff09;系统利用它来像人类一样理解复杂的知识领域。例如&#xff0c;计算算法了解 2 和 3 之间的差为 1&#xff0c;这表明与 2 和 100 相比&#xff0c;2…

NVR设备ONVIF接入平台EasyCVR视频融合平台智慧小区视频监控系统建设方案

一、方案背景 智慧小区构成了“平安城市”建设的基石。随着社会的进步&#xff0c;社区安全问题逐渐成为公众关注的热点。诸如高空抛物、乱丢垃圾、破坏车辆、入室盗窃等不文明行为和违法行为频繁出现。目前&#xff0c;许多小区的物业管理和安全防护系统仍然较为简单和陈旧&a…

Typora一款极简Markdown文档编辑器和阅读器,实时预览,序列号生成!免费!最新可用!

文章目录 一、Typora下载和安装二、Typora序列号生成 Typora是一款Markdown编辑器和阅读器&#xff0c;风格极简&#xff0c;实时预览&#xff0c;所见即所得&#xff0c;支持MacOS、Windows、Linux操作系统&#xff0c;有图片和文字、代码块、数学公式、图表、目录大纲、文件管…

uniapp的video视频属性打包app后层级过高

问题&#xff1a;在使用uniapp开发APP时&#xff0c;使用video标签显示视频发现H5可以正常展示&#xff0c;但是打包到APP后&#xff0c;它的层级过高&#xff0c;把底部导航都盖住了。 官网说明&#xff1a;uni-app官网 官网给了cover-view组件或plus.nativeObj.view、subNVue…

人工智能原理实验一:知识的表示与推理实验

一、实验目的 本实验课程是计算机、智能、物联网等专业学生的一门专业课程&#xff0c;通过实验&#xff0c;帮助学生更好地掌握人工智能相关概念、技术、原理、应用等&#xff1b;通过实验提高学生编写实验报告、总结实验结果的能力&#xff1b;使学生对智能程序、智能算法等有…

混凝土裂缝图像分割系统:快速图像识别

混凝土裂缝图像分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-RFAConv&#xff06;yolov8-seg-C2f-SCConv等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Glo…

不再输入单号查快递,批量查快递单号信息的新方法,智能排序快递时效并查找时效相同的单号,一站式物流查询解决方案

厌倦了逐个输入快递单号查询物流信息的繁琐过程&#xff1f;想要一键就能批量查询快递单号&#xff0c;并且智能排序快递时效&#xff0c;轻松查找时效相同的单号&#xff1f;那么&#xff0c;恭喜你&#xff0c;你即将解锁快递查询的新境界&#xff01;快递批量查询高手软件&a…

国标GB28181设备管理软件EasyGBS国标GB28181公网平台应用到“雪亮工程”

随着信息技术的飞速发展&#xff0c;视频监控领域正经历从传统安防向智能化、网络化安防的深刻转变。在这一变革中&#xff0c;国标GB28181设备管理软件EasyGBS凭借其强大的功能和广泛的应用场景&#xff0c;成为推动这一转变的重要力量。特别是在“雪亮工程”这一重要的群众性…

Redis 哨兵 总结

前言 相关系列 《Redis & 目录》《Redis & 哨兵 & 源码》《Redis & 哨兵 & 总结》《Redis & 哨兵 & 问题》 参考文献 《Redis的主从复制和哨兵机制详解》《Redis中的哨兵&#xff08;Sentinel&#xff09;》《【Redis实现系列】Sentinel自动故…

springboot使用配置类从 application.yml 或 application.properties 文件中读取静态属性

springboot使用配置类从 application.yml 或 application.properties 文件中读取静态属性 1. 配置类定义 通过 ConfigurationProperties(prefix “data-base-check”)&#xff0c;Spring Boot 将带有 data-base-check 前缀的属性从 application.yml 或 application.propertie…

Java 中的微服务架构与 Spring Boot 集成(30/30)

目录 Java 中的微服务架构与 Spring Boot 集成 1. 微服务架构概述 2. Spring Boot 简介 2.1 Spring Boot 的特点 3. 使用 Spring Boot 构建微服务 3.1 构建一个简单的微服务 4. 服务发现与注册中心 4.1 使用 Eureka 实现服务注册和发现 5. 使用 Spring Cloud Gateway …

ssm020基于ssm的人才招聘网站+jsp(论文+源码)_kaic

摘 要 随着科技的发展&#xff0c;人才招聘的方式也发生着改变。本基于ssm的人才招聘网站正是采用计算机技术和网络设计的新型系统&#xff0c;可以有效的把招聘信息与网络相结合&#xff0c;为用户提供工作帮助和管理需求。本系统采用mysql数据库存储数据&#xff0c;兼容性…

Servlet 3.0 新特性全解

文章目录 Servlet3.0新特性全解Servlet 3.0 新增特性Servlet3.0的注解Servlet3.0的Web模块支持servlet3.0提供的异步处理提供异步原因实现异步原理配置servlet类成为异步的servlet类具体实现异步监听器改进的ServletAPI(上传文件) Servlet3.0新特性全解 tomcat 7以上的版本都支…

全球最大开源系统遭“绑架”,华为携国产系统冲出国门,优势尽显

被“绑架”的Linux 在科技飞速发展的今天&#xff0c;开源软件已成为全球技术合作与创新的重要基石。其中大家熟知的开源系统Linux内核项目&#xff0c;自1991年由芬兰学生Linus Torvalds创建以来&#xff0c;一直以其开放性、协作性和透明性著称。它鼓励全球各地的开发者共同…

一体化运维监控管理平台:构建高效、可靠的IT运维体系

在当今数字化转型的浪潮中&#xff0c;企业的IT系统日益复杂&#xff0c;运维工作面临着前所未有的挑战。如何确保IT基础设施的稳定运行&#xff0c;提高运维效率&#xff0c;成为每个企业关注的焦点。为此&#xff0c;我们推出了一体化运维监控管理平台&#xff0c;旨在通过全…

操作系统笔记(五)信号量,经典的IPC问题(读写者问题...)

信号量 一个信号量是一个包含两部分内容的数据结构&#xff1a; (a) 一个整数计数器, COUNT (b) 一个记录阻塞进程ID的队列, Q 信号量有两个原子操作&#xff1a; UP(V操作&#xff09; 和 DOWN (P操作) DOWN(S): if (S.count > 0) S.count …