部署 "nodejs-deployment" 无效 spec.template.metadata.labels:无效值

The Deployment "nodejs-deployment" is invalid spec.template.metadata.labels: Invalid value

我是 Kubernetes 的新手,我正在尝试将 nodejs 服务部署到 kubernetes。为此,我创建了一个 docker 图像并将其上传到 dockerhub,最后我创建了一个部署文件,其中包含完成部署所需的所有配置。 部署文件如上所示。然后我执行了命令 'kubectl apply -f deployment_local.yaml' 并遇到了这个错误:“*spec.template.metadata.labels:Invalid value map[string]string{"app":"nodejs\u00a0\u00a0"}:selector 不匹配模板 labels"

我正在尝试修复这个错误,但我无法修复它。请帮助理解这个错误,因为我挣扎了很多时间。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nodejs-deployment
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nodejs
  template:
    metadata:
      labels:
        app: nodejs  
    spec:
      containers:
      - name: nodeapp
        image: lucasseabra/nodejs-starter
---
apiVersion: v1
kind: Service
metadata:
  name: nodejs-entrypoint
  namespace: default
spec:
  type: NodePort
  selector:
    app: nodejs
  ports:
  - port: 3000
    targetPort: 3000
    nodePort: 30001

正如错误消息试图告诉您的那样,在 nodejs 之后有两个 "non-breaking space" charactersmap[string]string{"app":"nodejs\u00a0\u00a0"}

我猜这是从网页复制粘贴的副作用

如果您甚至对此处发布的问题执行“select all”,您会看到 SO 已将两个字符转换为普通空格,但它们确实出现在 selection 扩展超过“nodejs”文本

如果您的编辑器无法向您显示字符,请手动重新输入标签,或尝试复制此标签(这只是您的标签,但删除了尾随空格)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nodejs-deployment
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nodejs
  template:
    metadata:
      labels:
        app: nodejs
    spec:
      containers:
      - name: nodeapp
        image: lucasseabra/nodejs-starter
---
apiVersion: v1
kind: Service
metadata:
  name: nodejs-entrypoint
  namespace: default
spec:
  type: NodePort
  selector:
    app: nodejs
  ports:
  - port: 3000
    targetPort: 3000
    nodePort: 30001