在AWS Elastic Kubernetes Service (EKS) 部署的 Pod 使用 NodePort 类型服务进行暴露时,确保以下几点:
确认集群的网络配置正确,确保节点 (Node) 节点可以访问到 NodePort。
确认服务的类型为 NodePort,并且定义了正确的端口范围。
确认 Pod 的标签和服务的选择器匹配。
下面是一个示例解决方案,假设你已经在 EKS 集群中部署了一个名为 my-app
的 Pod,并使用 NodePort 类型服务来暴露它。
首先,确认你的 Pod 定义文件中包含正确的标签:
apiVersion: v1
kind: Pod
metadata:
name: my-app
labels:
app: my-app
接下来,定义一个 Service,类型为 NodePort,并指定一个正确的端口范围:
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
type: NodePort
selector:
app: my-app
ports:
- port: 80
targetPort: 8080
nodePort: 30000
确保 selector
与 Pod 的标签匹配,并且 nodePort
的值在正确的端口范围内。
最后,你可以使用 kubectl
命令来应用这些配置文件并检查 Service 的状态:
$ kubectl apply -f my-app-pod.yaml
$ kubectl apply -f my-app-service.yaml
$ kubectl get services
在输出结果中,你应该能够看到 my-app-service
的 EXTERNAL-IP
列显示为
。请注意,这可能需要一些时间来分配一个外部 IP 地址。
一旦你看到 EXTERNAL-IP
列显示一个有效的 IP 地址,你就可以使用
的格式访问服务。