deployment 用于配置副本数,和 pods。 service 用于暴露服务,以提供 pod 间的访问与对外提供访问。 关联:
deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app-image:latest
ports:
- containerPort: 8080
service:
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer
在 Service 的 selector 字段中指定与 Deployment 中的 template.metadata.labels 匹配的标签,从而将 Service 关联到 Deployment。例如上面的示例中,Service 的 selector 使用 app: my-app,与 Deployment 中的 template.metadata.labels 匹配。
这样,当 Deployment 创建并运行 Pod 时,Service 将根据其 selector 将请求路由到相应的 Pod,从而实现应用程序的访问。Service 可以通过 ClusterIP、NodePort、LoadBalancer 等方式暴露应用程序,使其可以从集群内部或外部访问。