首页 > 解决方案 > 应用程序无法在 Kubernetes 的 3000 端口上访问

问题描述

我已经在我的 docker hub https://hub.docker.com/r/leexha/nodejsapp/上部署了一个 docker 应用程序。

我通过 docker pull 验证了这一点并做了一个docker run docker run -p 8000:3000 index.docker.io/leexha/nodejsapp:latest

我正在尝试将其部署到 kubernetes 中。这是我的deploy.yml文件:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: secondapp
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: webapp
    spec:
      containers:
      - name: webapp
        image: index.docker.io/leexha/nodejsapp
        ports:
        - containerPort: 3000
        resources:
          requests: 
            memory: 500Mi
            cpu: 0.5
          limits:
            memory: 500Mi
            cpu: 0.5
        imagePullPolicy: Always

然后我将部署公开为服务:

C:\Users\adrlee\Desktop\oracle\Web_projects>kubectl get nodes
NAME              STATUS     ROLES     AGE       VERSION
xxxxxxxxxxx   Ready      node      1d        v1.8.11
yyyyyyyyyyy    NotReady   node      1d        v1.8.11
zzzzzzzzzzz    Ready      node      1d        v1.8.11

C:\Users\adrlee\Desktop\oracle\Web_projects>kubectl get deployments
NAME       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
firstapp   3         3         3            3           6m

C:\Users\adrlee\Desktop\oracle\Web_projects>kubectl expose deployment/firstapp --type="NodePort" --port 3000
service "firstapp" exposed

C:\Users\adrlee\Desktop\oracle\Web_projects>kubectl get services
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
firstapp     NodePort    10.96.156.3   <none>        3000:31872/TCP   10s
kubernetes   ClusterIP   10.96.0.1     <none>        443/TCP          1d

似乎一切都井井有条,但是当我尝试访问集群上的应用程序(:3000)时,它无法访问。

所以我试着做一些调试。

我做了:

export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}                                       {{.metadata.name}}{{"\n"}}{{end}}')

我做了一个卷曲

curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/

我注意到这个回应:

}
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0cu                                       rl: (6) Could not resolve host: firstapp-f85d8f76c-bqsst
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0cu                                       rl: (6) Could not resolve host: firstapp-f85d8f76c-txlng

小迷茫现在该怎么办。将不胜感激任何帮助?

标签: dockerkubernetes

解决方案


如果将 type 字段设置为 NodePort,Kubernetes master 将从kube-apiserver--service-node-port-range中 flag 指定的范围(默认值:30000-32767)分配一个端口

尝试使用此默认范围内的端口,或检查主服务器上的 kube-apiserver 服务以获取特定的自定义范围。


推荐阅读