Kubernetes 中的 Redis - 连接被拒绝

Ale*_*don 1 redis kubernetes google-kubernetes-engine

我正在尝试部署一个redis pod,以允许我的暂存应用程序连接到它(以避免在暂存 ENV 中使用 Redis 托管服务)。

我正在使用Google Cloud PlatformGKE,因此托管 k8s 集群...

但是,当我尝试建立连接(仅从另一个 redis pod 进行测试)时,我收到此消息:

Could not connect to Redis at redis-cip.redis.svc.cluster.local:6379: Connection refused
Run Code Online (Sandbox Code Playgroud)

我用来进行测试的命令是这样的:

redis-cli -h redis-cip.redis.svc.cluster.local -p 6379 
Run Code Online (Sandbox Code Playgroud)

URL 由以下部分组成:

  • redis-cip:是我用来允许连接到我的 redis POD 的服务 ClusterIP
  • redis :是托管 redis POD 的命名空间

此外,正如 StackOverflow 上的一些问题中已经写的那样,我使用此 redis 配置:

protected-mode no
maxmemory 32mb
maxmemory-policy allkeys-lru
Run Code Online (Sandbox Code Playgroud)

附上完整的 k8s 映射:

配置映射:

apiVersion: v1
kind: ConfigMap
metadata:
  name: redis-configmap
  namespace: redis
data:
  redis.conf: |
    protected-mode no
    maxmemory 32mb
    maxmemory-policy allkeys-lru
Run Code Online (Sandbox Code Playgroud)

Redis部署:

apiVersion: v1
kind: Pod
metadata:
  name: redis
  namespace: redis
spec:
  containers:
    - name: redis
      image: redis
      command:
        - redis-server
        - /usr/local/etc/redis/redis.conf
      env:
        - name: MASTER
          value: "true"
      ports:
        - containerPort: 6379
      volumeMounts:
        - mountPath: /redis-master-data
          name: data
        - mountPath: /usr/local/etc/redis/
          name: redis-configmap
      resources:
        requests:
          memory: {{ .Values.resources.requests.memory }}
          cpu: {{ .Values.resources.requests.cpu }}
        limits:
          memory: {{ .Values.resources.limits.memory }}
          cpu: {{ .Values.resources.limits.cpu }}
  volumes:
    - name: data
      emptyDir: {}
    - name: redis-configmap
      configMap:
        name: redis-configmap
Run Code Online (Sandbox Code Playgroud)

集群IP服务:

apiVersion: v1
kind: Service
metadata:
  name: redis-cip
  namespace: redis
  labels:
    app: redis
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
  type: ClusterIP
Run Code Online (Sandbox Code Playgroud)

sai*_*ati 6

连接被拒绝,因为没有带有 label 的 pod app:redis。向您的 pod 添加与服务相同的标签spec.selector

apiVersion: v1
kind: Pod
metadata:
  name: redis
  namespace: redis
  labels:
     app:redis
spec:
  containers:
    - name: redis
      image: redis
Run Code Online (Sandbox Code Playgroud)