无法使用NodePort服务从浏览器访问Microk8s服务

时间:2020-07-15 15:08:13

标签: kubernetes kubernetes-ingress kubernetes-pod microk8s

我根据此处的https://ubuntu.com/kubernetes/install#single-node

步骤在我的ubuntu机器上安装了microk8s。

然后,我遵循kubernetes官方教程,创建并公开了这样的部署

microk8s.kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1

microk8s.kubectl expose deployment/kubernetes-bootcamp --type=NodePort --port 8083

这是我的kubectl get services输出

akila@ubuntu:~$ microk8s.kubectl get services
NAME                  TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes            ClusterIP   10.152.183.1    <none>        443/TCP          25h
kubernetes-bootcamp   NodePort    10.152.183.11   <none>        8083:31695/TCP   17s

这是我的kubectl get pods输出

akila@ubuntu:~$ microk8s.kubectl get pods
NAME                                   READY   STATUS    RESTARTS   AGE
kubernetes-bootcamp-6f6656d949-rllgt   1/1     Running   0          51m

但是我无法使用http://localhost:8083http://10.152.183.11:31695从浏览器访问服务

当我尝试http:// localhost:31695时,我收到ERR_CONNECTION_REFUSED。

如何从浏览器访问此“ kubernetes-bootcamp”服务? 我有误会吗?

2 个答案:

答案 0 :(得分:2)

IP 10.152.183.11CLUSTER-IP,无法从群集外部(即,无法从浏览器)访问。您应该使用http://localhost:31695,其中31695是在主机系统上打开的NodePort

gcr.io/google-samples/kubernetes-bootcamp:v1图像的容器需要在端口8083上侦听,因为您将其暴露在该端口上。仔细检查,否则会导致ERR_CONNECTION_REFUSED错误。

如果容器正在监听端口8080,请使用以下命令公开该端口

microk8s.kubectl expose deployment/kubernetes-bootcamp --type=NodePort --port 8080

答案 1 :(得分:0)

尝试一下

kubectl port-forward <pod_name> <local_port>:<pod_port> 

然后访问http://localhost:<local_port>