含糊不清的警告:“部署未使用WARN [0064]映像[gcr.io/wired-benefit-XXXXX/demoapp]” 预期行为实际行为信息重现行为的步骤

问题描述

预期行为

不应显示已警告。

实际行为

每次我进行更改并触发重新部署时,都会收到类似以下错误

部署未使用WARN [0064]映像[gcr.io/wired-benefit-XXXXX/demoapp]

但是图像已使用更新后的更改进行了修改,所以我不确定错误指示的是什么

信息

  • 脚手架版本:版本... v1.15.0
  • 操作系统:... MacOS Catilina 10.15.16
  • skaffold.yaml的内容
apiVersion: skaffold/v2beta8
kind: Config
Metadata:
  name: demoapp
build:
  artifacts:
  - image: gcr.io/wired-benefit-293406/demoapp
deploy:
  kubectl:
    manifests:
    - k8*.yml

K8清单的内容

apiVersion: apps/v1
kind: Deployment
Metadata:
  labels:
    app: demoapp
  name: demoapp
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demoapp
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    Metadata:
      labels:
        app: demoapp
    spec:
      containers:
      - image: gcr.io/wired-benefit-293406/demoapp
        imagePullPolicy: IfNotPresent
        name: demoapp
      restartPolicy: Always

apiVersion: v1
kind: Service
Metadata:
  labels:
    app: demoapp
  name: demoapp-svc
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 3000
  selector:
    app: demoapp
  type: LoadBalancer

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
Metadata:
  name: demoapp
spec:
  maxReplicas: 5
  minReplicas: 1
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: demoapp
  targetcpuutilizationPercentage: 80

重现行为的步骤

  1. 一个非常基本的入门演示应用程序
  2. skaffold dev
  3. 任何更改... skaffold甚至可以推送到注册表都可以成功构建docker

但是,变化没有被反映出来。可能是标签相关的问题。当我手动将映像名称设置为最新以进行部署时,则可以进行应用更改。

解决方法

正如我在评论中所说:

您的K8S manifests是单个文件,其中包含DeploymentServiceHPA吗?我完全按照您粘贴的方式运行(遇到相同的警告),并且在资源之间缺少---

专门讨论Content of K8s manifests中包含的内容,该文件在资源之间缺少三个破折号(---)

可以通过以下方式修复它:

  • 将资源拆分为多个文件(遵循skaffold.yaml及其模板k8*.yml):
    • k8s-deployment.yaml
    • k8s-service.yaml
    • k8s-hpa.yaml
  • ---中的每个资源之间添加Content of K8s manifests(示例):
DEPLOYMENT
---
SERVICE
--- 
HPA

通过遵循以下StackOverflow答案,您可以在YAML文件中阅读有关---的更多信息:


关于复制。我使用了官方的入门指南:

我将Content of K8s manifests复制到k8s-pod.yaml并更改了这一行(此文件在资源之间没有---

      - image: gcr.io/PROJECT-NAME/demoapp

使用以下命令运行以下命令:

  • $ skaffold dev
Listing files to watch...
 - gcr.io/PROJECT-NAME/demoapp
Generating tags...
 - gcr.io/PROJECT-NAME/demoapp -> gcr.io/PROJECT-NAME/demoapp:<--REDACTED-->
Checking cache...
 - gcr.io/PROJECT-NAME/demoapp: Not found. Building
Building [gcr.io/PROJECT-NAME/demoapp]...
Sending build context to Docker daemon  3.072kB
<--REDACTED-->
<--REDACTED-->: Pushed 
<--REDACTED-->: Layer already exists 
<--REDACTED-->: digest: <--REDACTED--> size: 739
Tags used in deployment:
 - gcr.io/PROJECT-NAME/demoapp -> gcr.io/PROJECT-NAME/demoapp:<--REDACTED-->
Starting deploy...
WARN[0023] image [gcr.io/PROJECT-NAME/demoapp] is not used by the deployment 
 - horizontalpodautoscaler.autoscaling/demoapp created
Waiting for deployments to stabilize...
Deployments stabilized in 198.216977ms
Press Ctrl+C to exit
Watching for changes...

关注于:

WARN[0023] image [gcr.io/PROJECT-NAME/demoapp] is not used by the deployment 
 - horizontalpodautoscaler.autoscaling/demoapp created

如您所见,仅创建了HPA对象。 DeploymentService未创建。它也显示与您相同的警告。

运行$ kubectl apply -f k8s-pod.yaml将产生相同的结果!

编辑k8s-pod.yaml文件以包含---并再次运行$ skaffold dev会产生类似于以下内容的输出:

Listing files to watch...
 - gcr.io/PROJECT-NAME/demoapp
Generating tags...
 - gcr.io/PROJECT-NAME/demoapp -> gcr.io/PROJECT-NAME/<--REDACTED-->
Checking cache...
 - gcr.io/PROJECT-NAME/demoapp: Not found. Building
<--REDACTED-->
<--REDACTED-->: Pushed 
<--REDACTED-->: Layer already exists 
<--REDACTED-->: digest: <--REDACTED--> size: 739
Tags used in deployment:
 - gcr.io/PROJECT-NAME/demoapp -> gcr.io/PROJECT-NAME/demoapp:<--REDACTED-->
Starting deploy...
 - deployment.apps/demoapp created
 - service/demoapp-svc created
 - horizontalpodautoscaler.autoscaling/demoapp created
Waiting for deployments to stabilize...
 - deployment/demoapp is ready.
Deployments stabilized in 5.450197785s
Press Ctrl+C to exit
Watching for changes...
[demoapp] Hello World with ---!
[demoapp] Hello World with ---!
[demoapp] Hello World with ---!

如您所见,所有资源均已创建,没有关于部署不使用映像的警告,并且应用程序也已响应。


其他资源:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...