【发布时间】:2018-12-13 08:46:02
【问题描述】:
这可能是一个愚蠢的问题,但我怎样才能让我的 https://localhost:5000 通过我的烧瓶 kuberenetes 应用程序工作以确保它返回正确的信息?
这是我目前的工作流程:
$ eval $(minikube docker-env)
$ docker build ...
$ kubectl apply -f deploy.yaml (contains deployment & service)
$ kubectl set image...
kubectl logs... 在下面返回:我的 pod 也已启动并运行,所以没有任何故障
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: on
* Running on https://0.0.0.0:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 443-461-677
唯一的问题是,当我在浏览器中访问该地址时,它显示无法访问该站点。当我curl https://localhost:5000 或curl https://0.0.0.0:5000/ 出现连接失败错误。我觉得我的环境/设置在某种程度上是错误的。任何提示/建议?
谢谢!
还有我的 deploy.yaml 文件:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: myapp
namespace: test-space
spec:
selector:
matchLabels:
app: myapp
replicas: 3
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myapp
imagePullPolicy: IfNotPresent
volumeMounts:
- name: secret-volume
mountPath: /etc/secret-volume
ports:
- containerPort: 80
env:
- name: "SECRET_KEY"
value: /etc/secret-volume/secret-key
- name: "SECRET_CRT"
value: /etc/secret-volume/secret-crt
volumes:
- name: secret-volume
secret:
secretName: my-secret3
---
apiVersion: v1
kind: Service
metadata:
name: myapp
namespace: test-space
spec:
type: NodePort
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 5000
nodePort: 30000
Dockerfile:
FROM python:2
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY requirements.txt /usr/src/app/
RUN pip install --no-cache-dir -r requirements.txt
COPY . /usr/src/app
EXPOSE 5000
CMD ["python", "app.py"]
【问题讨论】:
-
您是否将主机端口暴露给容器?你的 deploy.yaml 是什么样的?
-
@DavidMaze 我在我的 app.run 中有它,但遗憾的是它仍然无法正常工作:/
-
@Skam 添加了它!我的 nodePort 实际上是 30000,但由于某种原因,卷曲 localhost:30000 或 80 仍然会出现连接失败错误。
-
实际上,忘了提,我在我的 dockerfile 中暴露了 5000 端口
标签: python docker flask kubernetes minikube