Kubernetes 中的 Service 是一种抽象,它定义了一个逻辑应用程序组件,这些组件可以被访问,并且通常与 StatefulSet 或 Deployment 相关联。Service 通过标签选择器来确定应该将请求转发给哪个 Pod。在指定 StatefulSet 时,需要将其名称指定为 Service 的“selector”字段。
以下是一个示例 yaml 文件,其中 Service 被指定为 StatefulSet:
apiVersion: v1
kind: Service
metadata:
name: my-statefulset-service
spec:
selector:
app: my-statefulset
ports:
- name: http
port: 80
targetPort: 8080
clusterIP: None
selector
是一个标签选择器,用于确定要与 Service 关联的 Podports
指定 Service 要监听的端口以及将流量路由到的目标端口clusterIP
需要设置为None
,因为 StatefulSet 已经有自己的网络标识符
在这个例子中,我们创建了一个 Service,并将它与名为“my-statefulset”的 StatefulSet 相关联。Service 监听端口 80,并将流量路由到正在运行的 StatefulSet Pod 的端口 8080。注意,我们使用 ClusterIP 类型的 Service,不会为 Service 分配任何 IP 地址,而是使用 StatefulSet 自己的 DNS 域名来提供服务。