0

我希望在 k8s 中为 Sidekiq 和 Rails 配置 Redis。使用带有 IP 地址的 Google Cloud Memory Store。

我有一个如下所示的 helm 模板(单独指定 gcpRedisMemorystore)-我的问题是 Service 对象向系统添加了什么?是否有必要或端点是否提供所有需要的访问权限?

图表/app/templates/app-memorystore.service.yaml

kind: Service
apiVersion: v1
metadata:
  name: app-memorystore
spec:
  type: ClusterIP
  clusterIP: None
  ports:
  - name: redis
    port: {{ .Values.gcpredis.port }}
    protocol: TCP
---
kind: Endpoints
apiVersion: v1
metadata:
  name: app-memorystore
subsets:
- addresses:
  - ip: {{ .Values.gcpredis.ip }}
  ports:
  - port: {{ .Values.gcpredis.port }}
    name: redis
    protocol: TCP
4

1 回答 1

3

是的,你仍然需要它。

一般来说,服务是应用程序连接到端点时使用的名称。通常,带有选择器的 Service 会自动创建一个对应的端点,其中包含选择器找到的 Pod 的 IP 地址。

当您在没有选择器的情况下定义服务时,您需要提供相应的同名端点,以便服务可以去某个地方。这一点信息在文档中,但有点隐藏。在https://kubernetes.io/docs/concepts/services-networking/service/#without-selectors在第二个要点中提到了没有选择器的无头服务:

对于没有定义选择器的无头服务,端点控制器不会创建端点记录。但是,DNS 系统会查找并配置:

  • ExternalName 类型服务的 CNAME 记录。
  • 与服务共享名称的所有其他类型的任何端点的记录。
于 2019-07-02T17:38:02.920 回答