docker - 应用程序无法在 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
小迷茫现在该怎么办。将不胜感激任何帮助?
解决方案
如果将 type 字段设置为 NodePort,Kubernetes master 将从kube-apiserver--service-node-port-range
中 flag 指定的范围(默认值:30000-32767)分配一个端口
尝试使用此默认范围内的端口,或检查主服务器上的 kube-apiserver 服务以获取特定的自定义范围。
推荐阅读
- javascript - ExpressionChangedAfterItHasBeenCheckedError Angular7
- mysql - 从同一张表中查询两个具有不同关系的键
- android - 如何在没有完成的情况下刷新页面?
- javascript - 按名称对数组数据进行分组
- ruby-on-rails - 通过传递参数数组上传多个文件而没有任何宝石
- sql - 避免 SQL 表中重复的“对”值(两列)
- azure-resource-manager - 未读取 Azure ARM 参数文件中的值
- javascript - 如何将两个json与不同的对象合并但不合并现有对象
- reactjs - React useContext,useRedux子组件不更新
- c# - c# 使用newtonsofts JsonConvert DeserializeObject的通用数据对象