我正在尝试联系一个在k8s pod中启动并运行的Redis容器。
我的容器的部署看起来像这样:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
service: my-app
spec:
hostname: redis
containers:
- name: redis
image: redis:6.0.19
command:
- redis-server
env:
- name: MASTER
value: "true"
ports:
- containerPort: 6379
name: redis
resources:
requests:
cpu: "25m"
memory: "256Mi"
limits:
cpu: "0.1"
在上面有服务:
---
apiVersion: v1
kind: Service
metadata:
labels:
app: my-app
service: my-app
name: my-app
spec:
ports:
- name: redis
port: 6379
protocol: TCP
targetPort: 6379
selector:
app: my-app
我尝试了下面的Ingress:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-app
annotations:
kubernetes.io/ingress.class: internal-nginx-controller-internet
nginx.ingress.kubernetes.io/auth-signin: https://oauth.internal.net/oauth2/start?rd=https://my-app.internal.net$uri
nginx.ingress.kubernetes.io/auth-url: https://oauth.internal.net/oauth2/auth
spec:
rules:
- host: my-app.net
http:
paths:
- path: /
backend:
serviceName: my-app
servicePort: 6379
ingress in place工作正常,因为在Redis容器旁边有另一个旋转my-app示例的容器。我省略了它,以使问题更容易,但重要的是,它有自己的9292端口,在Ingress中也列出了,在相同的path : /
下,也暴露在k8s服务中。我能够通过一个看起来像<k8s-host>.my-app.net
的网址正确地联系到这样的服务。相反,当我试图通过像redis://<k8s-host>.my-app.net/0
这样的连接字符串联系Redis时,它挂起并在最后给我一个连接超时。任何可能的线索?先谢谢你了!
1条答案
按热度按时间mnemlml81#
Ingress在
layer 7
中工作,您正在尝试使用使用layer 4
的redis-client进行连接。不是这样的。您可以使用LoadBalancer
服务。