Kubernetes Helm Redis Google Cloud MemoryStore - 服务与端点
Kubernetes Helm Redis Google Cloud MemoryStore - Service vs Endpoint
我正在为 K8s 中的 Sidekiq 和 Rails 配置 Redis。使用具有 IP 地址的 Google Cloud Memory Store。
我有一个如下所示的 helm 模板(单独指定了 gcpRedisMemorystore)- 我的问题是服务对象向系统添加了什么?是否有必要或端点是否提供所有需要的访问权限?
charts/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
是的,你仍然需要它。
一般来说,服务是应用程序连接到端点所使用的名称。通常,带有选择器的服务会自动创建一个对应的端点,该端点具有选择器找到的 Pods 的 IP 地址。
当你在没有选择器的情况下定义一个服务时,你需要给相应的同名端点,这样服务才有地方去。这条信息在文档中,但有点隐藏。在 https://kubernetes.io/docs/concepts/services-networking/service/#without-selectors,在没有选择器的无头服务的第二个要点中提到了它:
For headless services that do not define selectors, the endpoints controller does not create Endpoints records. However, the DNS system looks for and configures either:
- CNAME records for ExternalName-type services.
- A records for any Endpoints that share a name with the service, for all other types.
我正在为 K8s 中的 Sidekiq 和 Rails 配置 Redis。使用具有 IP 地址的 Google Cloud Memory Store。
我有一个如下所示的 helm 模板(单独指定了 gcpRedisMemorystore)- 我的问题是服务对象向系统添加了什么?是否有必要或端点是否提供所有需要的访问权限?
charts/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
是的,你仍然需要它。
一般来说,服务是应用程序连接到端点所使用的名称。通常,带有选择器的服务会自动创建一个对应的端点,该端点具有选择器找到的 Pods 的 IP 地址。
当你在没有选择器的情况下定义一个服务时,你需要给相应的同名端点,这样服务才有地方去。这条信息在文档中,但有点隐藏。在 https://kubernetes.io/docs/concepts/services-networking/service/#without-selectors,在没有选择器的无头服务的第二个要点中提到了它:
For headless services that do not define selectors, the endpoints controller does not create Endpoints records. However, the DNS system looks for and configures either:
- CNAME records for ExternalName-type services.
- A records for any Endpoints that share a name with the service, for all other types.