Kubernetes服务保持待定状态

6

在暴露部署后,服务显示待处理状态。

packet@ubuntu:/home/gss$ kubectl get services
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP          22h
wms1         LoadBalancer   10.106.19.103   <pending>     8000:32461/TCP   17h

我已安装了带有一个主节点和四个工作节点的kubeadm。使用以下命令创建了部署:

sudo docker run -p 8000:8000 w1

这里的w1是我的图片名称。

使用以下命令创建服务:

kubectl expose deployment wms1 --type=LoadBalancer --port=8000

2
你正在使用任何云服务提供商吗?LoadBalancer仅由云服务提供商支持。您可以尝试将类型更改为NodePort。 - Tim
如果使用NodePort,则外部IP将为<none>。您可以使用<machine IP>:<node_port>访问它。请描述一下您使用NodePort安装的服务。 - Prafull Ladha
packet@ubuntu:/home/gss$ kubectl describe service wms1 名称: wms1 命名空间: 默认 标签: 运行=wms1 注释: <无> 选择器: 运行=wms1 类型: NodePort IP地址: 10.104.28.170 端口: <未设置> 8000/TCP 目标端口: 8000/TCP 节点端口: <未设置> 31245/TCP 终端点: 172.244.1.3:8000,172.244.1.4:8000,172.244.1.5:8000 + 6 more... 会话亲和性: 无 外部流量策略: 集群 - samba
我尝试使用我的IP地址访问,但无法访问。我尝试使用HTTPS和HTTP。 - samba
明白了,我需要使用NodePort(31245)提供的端口访问服务,而不是在创建服务时提供的端口(8000)。我能够使用<nod ip>:31245访问该服务。 - samba
显示剩余6条评论
2个回答

1
要在Kubernetes集群中检索应用程序的外部IP,您必须使用云提供商,如Google Kubernetes Engine或Amazon Web Services。
请查看: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#external-load-balancer-providers 否则,您可以使用Type NodePort,在这种情况下,Kubernetes主节点将从--service-node-port-range标志指定的范围中分配一个端口(默认值为30000-32767),并且每个节点都会将该端口(每个节点上的相同端口号)代理到您的服务中。
有关详细信息,请参见:https://kubernetes.io/docs/concepts/services-networking/service/#nodeport

0
在另一个终端窗口中运行以下命令:
minikube tunnel

重新启动您的服务,您应该会看到外部 IP 地址被填充。


这个可以运行,但如果我想让它在后台运行,我该如何实现? - nguni52
@nguni52 你尝试过这个吗?minikube tunnel &> /dev/null & - HAL9000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接