目前正在学习K8和FastAPI。我想部署一个FastAPI应用程序到我的Minikube集群。如果我运行容器,它工作正常,但我不能通过Minikube IP端口30001访问它。我做错了什么?
FastAPI代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World!"}
@app.get("/hello/{name}")
async def say_hello(name: str):
return {"message": f"Hello, {name}"}
停靠文件
FROM python:3.9
RUN pip install fastapi uvicorn
COPY ./app /app
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
docker-compose.yaml
version: '3'
services:
core-api:
build: .
container_name: "fastapi-runtime-container"
ports:
- "8000:8000"
command: uvicorn app.main:app --host 0.0.0.0 --port 8000
volumes:
- ./app/:/app
K8部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: fastapi-app
spec:
replicas: 1
selector:
matchLabels:
app: fastapi-app
template:
metadata:
labels:
app: fastapi-app
spec:
containers:
- name: fastapi-app
image: luwinkler/fastapi:latest
ports:
- containerPort: 8000
---
apiVersion: v1
kind: Service
metadata:
name: fastapi-service
spec:
type: NodePort
selector:
app: fastapi-app
ports:
- protocol: TCP
port: 8000
targetPort: 8000
nodePort: 30001
根据“kubectl get all”,服务运行良好,Pod也在运行。
我从“minikube ip”+端口30001获取IP地址。
1条答案
按热度按时间shyt4zoc1#
请在本地网络上配置
Port forwarding
,因为这将允许您通过Minikube群集访问FastAPI应用程序。请按照下面的kubectl命令建立端口转发:
上述命令显示了以下输出。
请使用
kubectl proxy
命令建立从本地计算机到群集API服务器的直接连接,以便在特定端口上公开Kubernetes API。上述命令将给予以下响应:
请在浏览器中键入以下信息,以查看Kubernetes群集默认命名空间中所有正在运行的Pod的列表。
要了解更多信息,请查看Lukonde Mwila编写的link。