Kubernetes 无法连接服务 Cluster-IP 上的 redis

And*_*ril 0 redis kubernetes

我在谷歌云上进行了这样的设置:

  • Pod 和带有 (php) Web 应用程序的服务
  • Pod 和带有mysql 服务器的服务
  • Pod 和带有Redis 服务器的服务

其中mysql服务器redis服务器的kubernetes配置文件 几乎相同,唯一不同的是名称、端口和镜像。

可以从网络应用程序连接mysql 服务器,但无法连接redis 服务器

另外,我无法从 Web 应用程序在其服务 CLUSTER-IP 上连接Redis 服务器,但我可以在其 pod IP 上连接Redis 服务器

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: redis
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
        - name: redis
          image: launcher.gcr.io/google/redis4
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
          ports:
          - containerPort: 6379
          env:
---
apiVersion: v1
kind: Service
metadata:
  name: redis
  labels:
    app: redis
    role: master
    tier: backend
spec:
  selector:
    app: redis
    role: master
    tier: backend
  ports:
  - port: 6379
    targetPort: 6379
Run Code Online (Sandbox Code Playgroud)

sta*_*cks 5

部署规范缺少一些标签,因此服务未选择它。

当前部署规范:

metadata:
  labels:
    app: redis
Run Code Online (Sandbox Code Playgroud)

包括服务所需的其他标签:

metadata:
  labels:
    app: redis  
    role: metadata  
    tier: backend  
Run Code Online (Sandbox Code Playgroud)

或者根据您想要如何看待它,服务规范正在尝试匹配不存在的标签,您可以从以下位置更改服务:

  selector:
    app: redis
    role: master
    tier: backend
Run Code Online (Sandbox Code Playgroud)

到:

selector:
    app: redis
Run Code Online (Sandbox Code Playgroud)