从本地连接到通过Ingress暴露的kubernetes集群上的Redis

iqih9akk  于 2023-04-29  发布在  Redis
关注(0)|答案(1)|浏览(240)

我正在尝试联系一个在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时,它挂起并在最后给我一个连接超时。任何可能的线索?先谢谢你了!

mnemlml8

mnemlml81#

Ingress在layer 7中工作,您正在尝试使用使用layer 4的redis-client进行连接。不是这样的。您可以使用LoadBalancer服务。

相关问题