我似乎找不到为什么无法连接到我通过NodePort公开的端点。当运行kubectl logs <pod>
时,容器按预期运行,我无法访问:http://<node ip>:30100/<valid endpoint form container>
其中<node ip>
是在INTERNAL IP
下运行kubectl get nodes -o wide
的ip。
我不确定问题是否存在于部署yaml中。下面是我应用到集群的单个部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: auth-app-deployment
labels:
app: auth-app
spec:
replicas: 1
selector:
matchLabels:
app: auth-app
template:
metadata:
labels:
app: auth-app
spec:
containers:
- name: auth-app
image: <working image>
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: auth-app-service
spec:
type: NodePort
selector:
app: auth-app
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30100
下面是运行kubectl get all
的结果:
NAME READY STATUS RESTARTS AGE
pod/auth-app-deployment-58cd68d8cf-mjpph 1/1 Running 0 29m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/auth-app-service NodePort 10.104.172.176 <none> 80:30100/TCP 138m
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 150m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/auth-app-deployment 1/1 1 1 138m
NAME DESIRED CURRENT READY AGE
replicaset.apps/auth-app-deployment-58cd68d8cf 1 1 1 29m
PS:我用的是minikube
。
2条答案
按热度按时间9nvpjoqh1#
由于您使用的是NodePort服务,因此无法使用群集IP,因为群集IP与节点IP不同。假设你只有一个有1个节点(因为你使用的是minikube),你需要使用从地址部分下的
kubectl describe nodes
获得的IP,使用InternalIP值。您的URL将是
http://<node_ip>:30100/<valid endpoint form container>
ffscu2ro2#
如果有人在minikube上遇到同样的问题,你可以使用I fixed the by using
minikube service <service>
命令将服务暴露给localhost,就像kubectl中的port forward命令一样。在我的例子中,命令看起来像这样: