You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

应用Deployment与Service时出现kubectl注解缺失警告的排查求助

问题描述

应用包含Deployment、Service及ConfigMap的Kubernetes配置文件时,收到两条警告,提示相关资源缺少kubectl.kubernetes.io/last-applied-configuration注解。已确认配置使用test命名空间,ConfigMap名称为nginx-config,Pod运行正常,咨询该警告产生的原因。

警告信息

警告:资源deployments/nginx缺少kubectl apply所需的kubectl.kubernetes.io/last-applied-configuration注解。kubectl apply仅应用于通过kubectl create --save-config或kubectl apply声明式创建的资源。缺失的注解将被自动修补。
deployment.apps/nginx已配置

警告:资源services/nginx缺少kubectl apply所需的kubectl.kubernetes.io/last-applied-configuration注解。kubectl apply仅应用于通过kubectl create --save-config或kubectl apply声明式创建的资源。缺失的注解将被自动修补。

配置代码

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config
  namespace: test
data:
  nginx.conf: '
events {
}
http {
   server {
       listen 80;
       location / {
           return 200 "Hello world 2024!";
       }
   }
}
'
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: test
spec:
  selector:
    matchLabels:
      app: nginx
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:latest
      #- image: registry.gitlab.peruprop.com/root/freetest:1.0
        name: nginx
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
          - name: config-vol
            mountPath: /etc/nginx/
      volumes:
        - name: config-vol
          configMap:
            name: nginx-config
            items:
              - key: nginx.conf
                path: nginx.conf
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: nginx
  namespace: test
spec:
  ports:
  - name: 80-80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: ClusterIP
原因解析

这个警告的核心和Kubernetes声明式管理机制直接相关,具体原因如下:

  • 注解的核心作用:kubectl.kubernetes.io/last-applied-configuration是kubectl apply用来追踪资源最后一次应用的完整配置的注解。当你用kubectl apply更新资源时,它会对比这个注解里的旧配置和当前提交的新配置,只变更有差异的部分,实现增量更新。
  • 资源创建方式不匹配:出现警告说明你的Deployment和Service不是通过kubectl apply或kubectl create --save-config创建的——比如之前可能用kubectl create -f(不带--save-config)、UI工具或者其他方式创建过同名资源,导致这些资源没有带上这个关键注解。现在你用kubectl apply来管理已有资源,工具会自动补上注解并给出提示。
  • ConfigMap无警告的原因:要么这个ConfigMap是第一次用kubectl apply创建的,要么之前创建时已经带上了该注解,所以不会触发警告。
  • 警告不影响运行:正如你观察到的,Pod运行完全正常,这个警告只是提示工具在自动修复注解,后续再用kubectl apply更新这些资源时,就不会再出现该警告。

内容的提问来源于stack exchange,提问作者DDave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 19:46:30