在 Kubernetes 中,NodePort 和 Service 是两个不同的概念。
NodePort是一种 Kubernetes Service 类型,它将一个随机端口映射到每个节点上的固定端口。这使得可以从集群外部访问 Service,并且可以使用任何节点 IP 地址和 NodePort 端口号来访问服务。例如:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
上述配置会创建一个名为 my-service
的 Kubernetes Service,并将其类型设置为 NodePort
。这个服务的默认端口为 80
,并将流量转发到容器中的端口号 8080
。此外,Kubernetes 将自动分配一个大于30000小于32767的随机端口号作为 NodePort 端口。
Service 是一种抽象层次高于 Pod 的 Kubernetes 资源类型,它提供了一种统一的方式来访问与多个 Pod 相关联的逻辑应用程序。Service 可以公开固定 IP 或 DNS 名称,并根据需要负载均衡流量到多个 Pod 上。例如:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- port: 80
targetPort: http-server-port
上述配置会创建一个名为 my-service
的 Kubernetes Service,并将其与标签为 app: my-app
的 Pod 相关联。这个服务的默认端口为 80
,并将流量转发到 Pod 中的名为 http-server-port
的容器端口。
总的来说,NodePort 提供了一种让外部客户端直接访问 Kubernetes Service 和运行在其中 Pod 的方式。而 Service 可以用于跨多个 Pod 负载均衡和管理网络流量。