kubernetes - 容器上的端口如何映射到 Pod 上的容器?
问题描述
我现在正在学习 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 上的端口的映射在哪里?
解决方案
我很困惑 POD 是如何知道容器中的应用程序在端口 5000 上运行的?
豆荚不知道这一点。容器中的应用程序,在 pod 中可以响应任何端口上的任何请求。
但是要将其公开到集群外部,您可能会通过服务(可以映射到不同端口)和负载均衡器将流量从特定端口转发到应用程序上的特定端口。
您可以使用网络策略来限制集群中的流量,例如特定端口或服务。
推荐阅读
- firebase - 在 Firebase - WebApp (.NET Core MVC) 之间保持身份验证状态
- java - 在 Android Studio 中更改 ScrollingView 的字体
- sql - 存储过程需要执行时间
- sql-server - SQL Server 2017 安装卡住
- scala - 将 WrappedArray 转换为 DataFrame 中的字符串
- openshift - 下载 OC 二进制版本时出现 Minishift 错误
- javascript - (VueJS) 如何使用 youtube data api v3 从我的频道中过滤视频 ID?
- python - 传递对象 id 以从表单提交中查看
- java - 如何使用扫描仪类将值获取到字符数组中?
- cordova - 添加平台并使用离子科尔多瓦构建时出错?