当前位置:   article > 正文

k3s端口映射clusterIP和NodePort的区别_k3s 无法转发到其他节点的流量

k3s 无法转发到其他节点的流量

K3s或任何Kubernetes集群中,Service 用于将访问流量路由到一组 Pod。Kubernetes 提供了几种不同类型的 Service,最常见的是 ClusterIP 和 NodePort。了解它们之间的区别对于正确地配置和访问你的应用程序非常重要。

ClusterIP

ClusterIP 是 Kubernetes 中 Service 的默认类型。它在集群内部创建一个虚拟 IP 地址(即 ClusterIP),并将流量路由到关联的 Pod。这种类型的 Service 只能在集群内部访问。

特点
  • 集群内部访问:只能从集群内的其他 Pod 或节点访问。
  • 默认类型:如果不指定类型,Service 默认就是 ClusterIP。
  • 虚拟 IP:Kubernetes 会分配一个集群内部使用的虚拟 IP 地址。
使用场景
  • 内部服务通信:例如,微服务架构中服务之间的通信。
  • 不需要外部访问的应用程序:例如,数据库或内部 API 服务。
示例

以下是一个 ClusterIP 类型的 Service 配置示例:

apiVersion: v1
kind: Service
metadata:
  name: my-clusterip-service
spec:
  selector:
    app: my-app
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
  type: ClusterIP
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这个示例中,Service 会在集群内部分配一个 IP 地址,并将端口 80 上的流量路由到 Pod 的 8080 端口。

NodePort

NodePort 类型的 Service 在每个节点上开一个特定端口,并将流量转发到 Service 的 ClusterIP。这种类型的 Service 可以从集群外部访问,通过集群中任意节点的 IP 地址和指定的 NodePort 进行访问。

特点
  • 外部访问:可以从集群外部通过节点的 IP 地址和 NodePort 进行访问。
  • 固定端口范围:NodePort 的范围通常在 30000 到 32767 之间,具体取决于 Kubernetes 配置。
  • 依赖 ClusterIP:NodePort 实际上是在 ClusterIP 的基础上增加了外部访问的能力。
使用场景
  • 暴露服务给外部用户:例如,Web 应用程序或 API 服务需要从外部访问。
  • 临时或简单的外部访问方式:适用于开发和测试环境。
示例

以下是一个 NodePort 类型的 Service 配置示例:

apiVersion: v1
kind: Service
metadata:
  name: my-nodeport-service
spec:
  selector:
    app: my-app
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
    nodePort: 30080
  type: NodePort
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这个示例中,Service 会在每个节点的 30080 端口上监听,并将流量转发到 Pod 的 8080 端口。你可以通过 <node-ip>:30080 访问这个服务。

区别总结

特性ClusterIPNodePort
访问范围只能在集群内部访问可以从集群外部访问
默认类型
端口范围无特定限制30000-32767(可配置)
典型使用场景内部服务通信暴露服务给外部用户
依赖关系依赖于 ClusterIP

选择哪种 Service 类型取决于具体的需求。如果你的服务只需要在集群内部访问,使用 ClusterIP 是最合适的。而如果需要从外部访问服务,NodePort 提供了一种简单的方式来实现这一点。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/982028
推荐阅读
  

闽ICP备14008679号