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 是自己的孩子。
相关推荐
姚不倒3 小时前
Go语言进阶:接口、错误处理与并发编程(goroutine/channel/context)
云原生·golang
仙柒4156 小时前
Docker存储原理
运维·docker·容器
快乐的哈士奇9 小时前
LangFuse 自托管实战:选型理由、Docker 部署与常用配置全解析
运维·人工智能·docker·容器
weixin_4492900110 小时前
Docker + MySQL 在 Windows 11 上的本地安装部署文档
mysql·docker·容器
Ysn071911 小时前
中文乱码:在 Docker 容器中设置中文语言环境
运维·python·docker·容器
米高梅狮子11 小时前
01.CentOS-Stream-8-packstack安装OpenStack
linux·云原生·容器·kubernetes·centos·自动化·openstack
亚空间仓鼠13 小时前
Docker容器化高可用架构部署方案(十三)
docker·容器·架构
米高梅狮子13 小时前
01.mysql的备份与恢复
运维·数据库·mysql·docker·容器·kubernetes·github
云游牧者14 小时前
K8S存储体系全解-从PV-PVC-SC到StatefulSet持久化实战
云原生·容器·kubernetes·pvc·pv·sc·进阶存储卷
古城小栈14 小时前
K8s 认证、授权 系统
云原生·容器·kubernetes