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 是自己的孩子。
相关推荐
分布式存储与RustFS2 小时前
Terraform 状态文件老在本地丢、并发还撞锁:把 state 锁进 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
csdn_aspnet2 小时前
macOS 10 、Docker 玩轉 MySQL
运维·mysql·macos·docker·容器·mac
对象存储与RustFS4 小时前
Jenkins 的构建产物别堆在控制器磁盘:用 RustFS 当它的 S3 工件仓库
后端·docker·云原生
罗小爬EX20 小时前
Helm 从概念到实战:以一个普通 Web 应用为例
云原生·helm
java_logo21 小时前
Docker 部署 DeepSeek Harness(moelin):轻松搭建带登录的本地 AI Agent 平台
运维·docker·容器·ai agent·deepseek·harness·轩辕镜像
xbzb1 天前
容器 IP 每次重建都变?docker network 五种模式与自定义网桥固定地址
网络·docker·容器·ip·network·固定
打工仔折腾 AI1 天前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化
fengkai45451 天前
Prometheus+K8s弹性伸缩综合项目
运维·kubernetes·k8s·prometheus·hpa·vpa
分布式存储与RustFS1 天前
镜像仓库的层别只堆本地盘:用 RustFS 给 Harbor 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
分布式存储与RustFS1 天前
工作流脚本和依赖 JAR 散在各节点本地盘:用 DolphinScheduler 资源中心接到 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准