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 等方式暴露应用程序,使其可以从集群内部或外部访问。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐