赞
踩
在K3s或任何Kubernetes集群中,Service 用于将访问流量路由到一组 Pod。Kubernetes 提供了几种不同类型的 Service,最常见的是 ClusterIP 和 NodePort。了解它们之间的区别对于正确地配置和访问你的应用程序非常重要。
ClusterIP 是 Kubernetes 中 Service 的默认类型。它在集群内部创建一个虚拟 IP 地址(即 ClusterIP),并将流量路由到关联的 Pod。这种类型的 Service 只能在集群内部访问。
以下是一个 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
在这个示例中,Service 会在集群内部分配一个 IP 地址,并将端口 80 上的流量路由到 Pod 的 8080 端口。
NodePort 类型的 Service 在每个节点上开一个特定端口,并将流量转发到 Service 的 ClusterIP。这种类型的 Service 可以从集群外部访问,通过集群中任意节点的 IP 地址和指定的 NodePort 进行访问。
以下是一个 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
在这个示例中,Service 会在每个节点的 30080 端口上监听,并将流量转发到 Pod 的 8080 端口。你可以通过 <node-ip>:30080
访问这个服务。
特性 | ClusterIP | NodePort |
---|---|---|
访问范围 | 只能在集群内部访问 | 可以从集群外部访问 |
默认类型 | 是 | 否 |
端口范围 | 无特定限制 | 30000-32767(可配置) |
典型使用场景 | 内部服务通信 | 暴露服务给外部用户 |
依赖关系 | 无 | 依赖于 ClusterIP |
选择哪种 Service 类型取决于具体的需求。如果你的服务只需要在集群内部访问,使用 ClusterIP 是最合适的。而如果需要从外部访问服务,NodePort 提供了一种简单的方式来实现这一点。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。