我已经创建了一个示例node.js应用程序和其他必需文件(deployment.yml,service.yml),但是我无法访问该服务的外部IP。
#kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.7.240.1 <none> 443/TCP 23h
node-api LoadBalancer 10.7.254.32 35.193.227.250 8000:30164/TCP 4m37s
#kubectl get pods
NAME READY STATUS RESTARTS AGE
node-api-6b9c8b4479-nclgl 1/1 Running 0 5m55s
#kubectl describe svc node-api
Name: node-api
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=node-api
Type: LoadBalancer
IP: 10.7.254.32
LoadBalancer Ingress: 35.193.227.250
Port: <unset> 8000/TCP
TargetPort: 8000/TCP
NodePort: <unset> 30164/TCP
Endpoints: 10.4.0.12:8000
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal EnsuringLoadBalancer 6m19s service-controller Ensuring load balancer
Normal EnsuredLoadBalancer 5m25s service-controller Ensured load balancer
当我尝试在外部ip上卷曲时,它会拒绝连接
curl 35.193.227.250:8000
curl: (7) Failed to connect to 35.193.227.250 port 8000: Connection refused
我也在Dockerfile中公开了端口8000。让我知道我是否想念任何东西。
答案 0 :(得分:1)
看看您对此线程的描述,似乎一切都很好。 您可以尝试以下方法:
SSH到运行Pod的GKE节点。您可以通过运行与“ -o wide”标志相同的命令来获取节点名称。
$ kubectl获得豆荚-o宽
在执行SSH之后,尝试对Cluster和Service IP进行卷曲,以查看是否得到响应。
尝试通过SSH到Pod
$ kubectl exec -it-/ bin / bash
之后,运行本地主机以查看是否得到响应
$ curl localhost
因此,如果您尝试上述故障排除步骤后得到响应,则可能是GKE潜在的问题。您可以提交缺陷报告here。
如果在尝试上述步骤时未得到任何响应,则可能是您在某个地方配置了错误的集群。
在我看来,这是对您的用例进行故障诊断的一个很好的起点。