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 是自己的孩子。
相关推荐
BullSmall3 小时前
Anolis OS 8.10 Docker 部署 PostgreSQL 15 完整实操
docker·postgresql·容器
java_logo7 小时前
Docker 部署 CUPS Web:浏览器即可管理打印机与打印任务
docker·容器·打印机·轩辕镜像·cups web·cups web 镜像部署·cups web 部署教程
数据知道9 小时前
容器安全入门:Docker 逃逸原理与 5 个经典 CVE
安全·网络安全·docker·容器
run21professional10 小时前
Windows 11 + WSL + Docker Desktop 开发环境设置
运维·docker·容器
张忠琳11 小时前
【NPU】Ascend Docker Runtime v26.0.1 之三 runtime/dcmi/ — 超深度逐行分析
云原生·容器·kubernetes·npu·docker-runtime
giaming02312 小时前
告别Docker Desktop!一款轻量级原生开发环境管理工具:FlyEnv
运维·docker·容器
自强的小白13 小时前
Docker命令
java·docker·容器
沉迷学习 日益消瘦15 小时前
13-Ingress 生产实战
运维·kubernetes
暗影凋落15 小时前
docker-image 工具展示更详细镜像层内容
运维·docker·容器
极客先躯15 小时前
高级java每日一道面试题-2026年05月11日-实战篇[Docker]-如何容器化金融产品推荐系统?
java·运维·docker·容器·金融·高级面试·金融产品推荐系统