python - 使用 Kubernetes 部署的 Flask:socket.gaierror: [Errno -2] Name or service not known
问题描述
我正试图用 Kubernetes 包住我的脑袋,所以我写了一个简单的应用程序。它在我的计算机上运行良好,但是在使用 Kubernetes 部署后,该应用程序无法启动。这是代码的样子:
import uuid
import flask
from flask import Flask
hostname = str(uuid.uuid4())
app = Flask(__name__)
@app.route('/index')
@app.route('/')
def hello_world():
return flask.render_template('index.html', hostname=hostname)
if __name__ == '__main__':
app.run(host='0.0.0.0:5000')
使用 docker 部署应用程序:
FROM python:3.9.0a5-buster
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
但是我不断收到以下错误:
kubectl logs flask-debugger-696c587755-d64rg
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
Traceback (most recent call last):
File "/app/app.py", line 17, in <module>
app.run(host='0.0.0.0:5000')
File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 990, in run
run_simple(host, port, self, **options)
File "/usr/local/lib/python3.9/site-packages/werkzeug/serving.py", line 1052, in run_simple
inner()
File "/usr/local/lib/python3.9/site-packages/werkzeug/serving.py", line 996, in inner
srv = make_server(
File "/usr/local/lib/python3.9/site-packages/werkzeug/serving.py", line 847, in make_server
return ThreadedWSGIServer(
File "/usr/local/lib/python3.9/site-packages/werkzeug/serving.py", line 740, in __init__
HTTPServer.__init__(self, server_address, handler)
File "/usr/local/lib/python3.9/socketserver.py", line 452, in __init__
self.server_bind()
File "/usr/local/lib/python3.9/http/server.py", line 138, in server_bind
socketserver.TCPServer.server_bind(self)
File "/usr/local/lib/python3.9/socketserver.py", line 466, in server_bind
self.socket.bind(self.server_address)
socket.gaierror: [Errno -2] Name or service not known
问题是什么?
解决方案
import uuid
import flask
from flask import Flask
hostname = str(uuid.uuid4())
app = Flask(__name__)
@app.route('/index')
@app.route('/')
def hello_world():
return flask.render_template('index.html', hostname=hostname)
if __name__ == '__main__':
app.run(host='0.0.0.0',port=5000)
@iain-shelvington 是对的。它的端口参数问题。
推荐阅读
- android - 运行 react-native run-android 时的一些问题
- react-native - 输入符号后,redux-form 的 React-native Input HOC 失去焦点
- jquery - 有没有办法用里面替换部分文本
?
- c++11 - 将 constexpr const 指针指向嵌入式应用程序的易失性内存位置的现代 C++ 方法是什么?
- c# - 从子类中获取元素名称
- c# - 使用 .NET SDK 的 Dropbox API 应用程序身份验证
- c# - Microsoft.Toolkit.Wpf.UI.Controls.WebView 运行时错误
- c - 上下文保存——如何读取 C 中的段寄存器和指令指针?
- python - 查找每周重复发生的事件
- mobile - 是否可以基于 AppSheet 中的键列嵌套值?