YAML-使用Yaml配置文件进行部署时发生验证错误

时间:2019-12-20 15:53:58

标签: azure kubectl azure-kubernetes yaml-cpp

我正在遵循this Microsoft教程,使用Azure Cli在Azure Kubernetes服务(AKS)群集上创建Windows Server容器。在本教程的Run the Application部分,运行以下命令以使用YAML配置文件部署应用程序时,出现以下错误:

kubectl apply -f sample.yaml
  
    

错误:验证“ sample.yaml”时出错:验证数据时出错:apiVersion未设置;如果您选择忽略这些错误,请使用--validate = false

关闭验证   

问题:如以下sample.yaml文件中所示,apiVersion已设置。那么,这个错误是关于什么的,我们如何解决该问题?

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample
  labels:
    app: sample
spec:
  replicas: 1
  template:
    metadata:
      name: sample
      labels:
        app: sample
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": windows
      containers:
      - name: sample
        image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
        resources:
          limits:
            cpu: 1
            memory: 800M
          requests:
            cpu: .1
            memory: 300M
        ports:
          - containerPort: 80
  selector:
    matchLabels:
      app: sample
---
apiVersion: v1
kind: Service
metadata:
  name: sample
spec:
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 80
  selector:
    app: sample

3 个答案:

答案 0 :(得分:1)

问题已解决。该问题与复制/粘贴到Azure Cloud Shell有关。当您将内容复制/粘贴到Azure Cloud Shell中的vi编辑器时,如果内容的首字母正好是a,则可能会发生以下情况:

在读取模式下打开vi时,然后通过粘贴操作,第一个a可能会将用户置于编辑模式,而实际上可能不会将a插入编辑器。因此,就我而言,内容粘贴如下(为简洁起见,这里仅显示前几行)。因此,您注意到此处的第一行a中缺少apiVersion: apps/v1

sample.yaml文件

piVersion: apps/v1
kind: Deployment
metadata:
…..
...

答案 1 :(得分:0)

当您使用过时的 kubectl 时,会发生这种情况。您能否尝试更新到1.2.5或1.3.0并再次运行

答案 2 :(得分:0)

我在我的情况下修复了它!如需更多背景信息,请随时访问 here

总结:

如果有任何文件在其中应用了 yaml 配置,如下所示:

kubectl apply -f .

然后将其更改为以下内容:

kubectl apply -f namespace.yaml
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f ingress.yaml

基本上,对每个文件分别应用配置。

相关问题