我在kubernetes中部署了一个python fastapi api,它运行正常,为此我使用了如下配置:
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: mynamespace
name: myapi-deployment
labels:
app: myapi-deployment
spec:
revisionHistoryLimit: 0
replicas: 1
selector:
matchLabels:
app: myapi
tier: backend
template:
metadata:
labels:
app: myapi
tier: backend
spec:
containers:
- name: myapi
image: path_to_my_container_repo
imagePullPolicy: Always
ports:
- containerPort: 80
imagePullSecrets:
- name: registry-secret
---
apiVersion: v1
kind: Service
metadata:
name: myapi-service
namespace: mynamespace
spec:
selector:
app: myapi
tier: backend
ports:
- protocol: "TCP"
port: 80
targetPort: 80
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: mynamespace
name: mynamespace-ingress-all
annotations:
...
spec:
ingressClassName: nginx
rules:
- host: somedomain
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapi-service
port:
number: 80
项目的需求在不断变化,所以我必须在那里添加redis。我已经在localhost上正常工作了,但是当我试图将其移动到kubernetes时遇到了一些问题。
我可以使用以下命令正确创建Redis部署:
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: mynamespace
name: myapiredis-deployment
labels:
app: myapiredis-deployment
spec:
revisionHistoryLimit: 0
replicas: 1
selector:
matchLabels:
app: myapiredis
template:
metadata:
labels:
app: myapiredis
spec:
containers:
- name: myapiredis
image: redis:7.0.6-alpine
imagePullPolicy: Always
ports:
- containerPort: 6379
当然,这两个部署无法看到对方,当fastapi尝试连接到redis时,我收到了一个“错误111连接到localhost:6379。连接被拒绝”的错误。
我一直在尝试配置服务来添加新的redis-deployment,但是我在互联网上找到的所有例子都使用了另一种类型的服务(节点端口,负载平衡器)。我甚至不确定这是否可以用我的ClusterIP类型来实现。
我如何使用“localhost:6379”配置我的redis部署对fastapi可见?
1条答案
按热度按时间t98cgbkg1#
正如@大卫迷宫所建议的,Redis安装应该有自己的Service,您需要更改应用程序的配置以使用Service名称作为主机名(可能使用环境变量),其他Kubernetes Pod通常不会是localhost。
有关详细信息,请参阅此link。