我现在正在学习 Kubernetes。我已经构建了一个简单的 python 应用程序,它使用 Flask 来公开其余的 API。Flask 默认使用端口 5000 来运行服务器。我的 API 看起来像 -
http://0.0.0.0:5000/api
应用程序内置在 docker 镜像中
FROM python:3.8.6-alpine
COPY . /app
WORKDIR /app
RUN \
apk add --no-cache python3 postgresql-libs && \
apk add --no-cache --virtual .build-deps gcc python3-dev musl-dev postgresql-dev && \
python3 -m pip install -r requirements.txt --no-cache-dir && \
apk --purge del .build-deps
ENTRYPOINT ["python3"]
CMD ["app.py"]
我将它部署在具有 pod 定义的 Kubernetes pod 中
apiVersion: v1
kind: Pod
metadata:
name: python-webapp
labels:
type: web
use: internal
spec:
containers:
- name: python-webapp
image: repo/python-webapp:latest
一切正常,我可以直接通过 Kubernetes 服务访问 pod 上的 api。我很困惑 POD 是如何知道容器中的应用程序在端口 5000 上运行的?容器上的端口到 pod 上的端口的映射在哪里?