k8s service deployment pod 的 label

service

复制代码
apiVersion: v1
kind: Service
metadata:
  name: archiver-svc
  namespace: archiver
  labels:
    external-dns.alpha.kubernetes.io/controller: dns-controller
    service.beta.kubernetes.io/loadbalancer-controller: hcl
    app.kubernetes.io/app-service-code: archiver
    app.kubernetes.io/app: archiver
spec:
  type: ClusterIP
  ports:
    - port: 8000
      targetPort: 8000
      protocol: TCP
      name: http
  selector:
    app.kubernetes.io/app-service-code: archiver
    app.kubernetes.io/app: archiver
  • 名称:archiver-svc(命名空间 archiver)
  • 类型:ClusterIP(仅集群内可访问,默认自动分配集群内 IP)
  • 端口映射:Service 的 8000 端口映射到 Pod 的 8000 端口(targetPort: 8000)
  • 标签选择器:通过
    app.kubernetes.io/app-service-code: archiver 和 app.kubernetes.io/app:
    archiver 匹配 Pod

Service 本身不提供服务,仅通过标签选择器将流量转发到匹配的 Pod。如果 Service 无法找到对应的 Pod,会出现Endpoint 为空的情况,即使 Service 存在,也无法访问应用。

deployment

复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  # Deployment 名称
  name: nginx-deploy
  # 命名空间(默认 default,可自定义)
  namespace: default
  # 标签(便于筛选和管理)
  labels:
    app: nginx
    env: prod
spec:
  # 副本数
  replicas: 3
  # 标签选择器:匹配 Pod 模板的 labels
  selector:
    matchLabels:
      app: nginx
  # 策略:更新策略(可选,默认 RollingUpdate)
  strategy:
    # 滚动更新(逐步替换旧 Pod)
    type: RollingUpdate
    rollingUpdate:
      # 最多不可用的 Pod 数(百分比或数值)
      maxUnavailable: 1
      # 最多超出期望副本数的 Pod 数
      maxSurge: 1
  # Pod 模板(定义 Pod 的配置)
  template:
    metadata:
      # Pod 的标签(必须与 selector.matchLabels 匹配)
      labels:
        app: nginx
    spec:
      # 容器列表(一个 Pod 可包含多个容器)
      containers:
      - name: nginx
        # 镜像地址(建议指定版本,避免拉取 latest 镜像)
        image: nginx:1.25
        # 镜像拉取策略(Always/Never/IfNotPresent)
        imagePullPolicy: IfNotPresent
        # 容器端口(仅用于声明,不暴露给集群外)
        ports:
        - containerPort: 80
          protocol: TCP
        # 资源限制(推荐配置,避免资源抢占)
        resources:
          requests:
            # 申请的最小资源
            cpu: 100m
            memory: 128Mi
          limits:
            # 允许使用的最大资源
            cpu: 200m
            memory: 256Mi
        # 健康检查(存活探针,可选但推荐)
        livenessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 30
          periodSeconds: 10
        # 就绪探针(可选但推荐)
        readinessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 5
        # 环境变量(可选)
        env:
        - name: TZ
          value: Asia/Shanghai
      # 重启策略(Always/OnFailure/Never,默认 Always)
      restartPolicy: Always
  • Deployment 的 spec.selector.matchLabels 必须与 Pod 模板的标签完全匹配,否则 Deployment 无法识别和管理它创建的 Pod。
    简单说:Deployment 通过这个标签 "认亲",知道哪些 Pod 是自己的孩子。
相关推荐
dyj0954 小时前
Dify - (一)、本地部署Dify+聊天助手/Agent
人工智能·docker·容器
Nice_Fold7 小时前
Kubernetes DaemonSet、StatefulSet与Service(自用笔记)
笔记·容器·kubernetes
AI攻城狮8 小时前
Hermes 下启动 Sub Agent 失败的痛苦教训
云原生
空中海8 小时前
第六篇:架构篇 — 微服务、部署、高并发与专家级能力
微服务·云原生·架构
Java后端的Ai之路12 小时前
Kubernetes是什么?(小白入门版)
云原生·容器·kubernetes·教程
heimeiyingwang12 小时前
【架构实战】编排vs协同:微服务通信架构选型
微服务·云原生·架构
木雷坞13 小时前
视觉算法环境 Docker 镜像拉取失败排查
运维·人工智能·docker·容器
空中海13 小时前
第二篇:注册中心篇 — Nacos 与 Eureka 服务注册发现
spring boot·云原生·eureka
瀚高PG实验室13 小时前
安全版V4.5版本docker容器license过期问题处理步骤
安全·docker·容器·瀚高数据库
007张三丰14 小时前
系统架构设计师范文4:论微服务架构及其应用
微服务·云原生·架构·软考·系统架构设计师