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 小时前
《K8s 自动扩缩容:基于 CPU / 内存的 HPA 配置》
docker·容器·kubernetes
Joren的学习记录3 小时前
【Linux运维大神系列】Kubernetes详解7(k8s技术笔记3)
linux·运维·kubernetes
学到四3 小时前
kubernetes(k8s)
云原生·容器·kubernetes
睡觉的时候不会困3 小时前
Kubernetes Pod 管理全攻略:从基础操作到进阶优化
云原生·容器·kubernetes
落日漫游3 小时前
深入解析K8sCRD:自定义资源定义实战指南
云原生·容器·kubernetes
q_30238195563 小时前
告别kubectl命令地狱!MCP-K8s让AI成为你的智能运维助手
运维·人工智能·语言模型·chatgpt·kubernetes·文心一言·devops
凌晨l3 小时前
Centos7.9部署k8s(详细步骤)
云原生·容器·kubernetes
编码如写诗3 小时前
【k8s】使用containerd 2.1.5运行时离线部署k8s1.31.14+全量KubeSphere4.1.3
云原生·容器·kubernetes
pl4H522a65 小时前
istio初探以及解决http-426的问题
http·kubernetes·istio
zfoo-framework9 小时前
docker compose安装gitea实现公司内部开发git私有仓库
docker·容器·gitea