YAML - 使用 Yaml 配置文件进行部署时出现验证错误
YAML - Validation error during deployment using Yaml config file
我正在关注本教程的 this Microsoft Tutorial to create a Windows Server container on an Azure Kubernetes Service (AKS) cluster using Azure Cli. In the Run the Application 部分,当 运行 使用以下命令使用 YAML
配置文件部署应用程序时,我收到以下错误:
kubectl apply -f sample.yaml
error: error validating "sample.yaml": error validating data: apiVersion not set; if you choose to ignore these errors, turn validation off with --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
当您使用过时的 kubectl
时会发生这种情况。您可以尝试更新到 1.2.5 或 1.3.0 并再次运行
问题已解决。该问题与 copy/paste 到 Azure Cloud Shell
有关。当您 copy/paste 内容到 Azure Cloud vi
编辑器 Shell 并且如果内容的第一个字母恰好是 a
那么可能会发生以下情况:
当以读取模式打开 vi 时,然后通过粘贴,第一个 a
可能会将用户置于编辑模式并且实际上可能无法将 a
插入到编辑器中。因此,在我的例子中,内容粘贴如下(为简洁起见,我只在此处显示前几行)。所以你注意到这里 a
在下面的第一行 apiVersion: apps/v1
中丢失了:
sample.yaml 文件:
piVersion: apps/v1
kind: Deployment
metadata:
…..
...
我在我的案例中修复了它!如需更多背景信息,请随时访问 .
总结:
如果有任何文件在其中应用 yaml 配置,如下所示:
kubectl apply -f .
然后将其更改为以下内容:
kubectl apply -f namespace.yaml
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f ingress.yaml
基本上,对每个文件单独应用配置。
我正在关注本教程的 this Microsoft Tutorial to create a Windows Server container on an Azure Kubernetes Service (AKS) cluster using Azure Cli. In the Run the Application 部分,当 运行 使用以下命令使用 YAML
配置文件部署应用程序时,我收到以下错误:
kubectl apply -f sample.yaml
error: error validating "sample.yaml": error validating data: apiVersion not set; if you choose to ignore these errors, turn validation off with --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
当您使用过时的 kubectl
时会发生这种情况。您可以尝试更新到 1.2.5 或 1.3.0 并再次运行
问题已解决。该问题与 copy/paste 到 Azure Cloud Shell
有关。当您 copy/paste 内容到 Azure Cloud vi
编辑器 Shell 并且如果内容的第一个字母恰好是 a
那么可能会发生以下情况:
当以读取模式打开 vi 时,然后通过粘贴,第一个 a
可能会将用户置于编辑模式并且实际上可能无法将 a
插入到编辑器中。因此,在我的例子中,内容粘贴如下(为简洁起见,我只在此处显示前几行)。所以你注意到这里 a
在下面的第一行 apiVersion: apps/v1
中丢失了:
sample.yaml 文件:
piVersion: apps/v1
kind: Deployment
metadata:
…..
...
我在我的案例中修复了它!如需更多背景信息,请随时访问
总结:
如果有任何文件在其中应用 yaml 配置,如下所示:
kubectl apply -f .
然后将其更改为以下内容:
kubectl apply -f namespace.yaml
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f ingress.yaml
基本上,对每个文件单独应用配置。