Kubectl命令总是返回这个错误yaml:行2:在此上下文中不允许Map值。甚至当我调用普通版本命令、配置命令等时。不知道是什么导致了这一点。
tessact@tessact-sys-1:~$ kubectl version
Client Version: version.Info{Major:"1", Minor:"4",
GitVersion:"v1.4.4",
GitCommit:"3b417cc4ccd1b8f38ff9ec96bb50a81ca0ea9d56",
GitTreeState:"clean", BuildDate:"2016-10-21T02:48:38Z",
GoVersion:"go1.6.3", Compiler:"gc", Platform:"linux/amd64"}
error: yaml: line 2: mapping values are not allowed in this context
tessact@tessact-sys-1:~/[some path]$ kubectl create -f kubernetes_configs/frontend.yaml
error: yaml: line 2: mapping values are not allowed in this context
我唯一使用的yaml文件是
apiVersion: v1
kind: ReplicationController
metadata:
name: frontend
labels:
name: frontend
spec:
replicas: 3
template:
metadata:
labels:
name: frontend
spec:
containers:
- name: trigger
# Replace with your project ID or use `make template`
image: asia.gcr.io/trigger-backend/trigger-backend
# This setting makes nodes pull the docker image every time before
# starting the pod. This is useful when debugging, but should be turned
# off in production.
imagePullPolicy: Always
ports:
- containerPort: 8080
apiVersion: v1
kind: Service
metadata:
name: frontend
labels:
name: frontend
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 8080
selector:
name: frontend
无论我用kubectl做什么,它都会返回这个错误。我该怎么做才能解决这个问题?
> tessact@tessact-sys-1:~/developer/trigger-backend-dev/trigger-backend$
> kubectl get service error: yaml: line 2: mapping values are not
> allowed in this context
产出:
strace kubectl version
是here
7条答案
按热度按时间owfi6suc1#
version命令已经抛出一个错误,表明加载了一些默认的YAML文件。
您可以使用
strace kubectl version
查看打开了什么文件,希望这是在kubectl
抛出错误之前完成的。我假设它会读取一些全局配置(或者当前目录中的默认文件)。当然,在kubernetes中编程是草率的,没有捕捉到这样的错误,并显示文件的名称,然后重新引发错误。
lh80um4z2#
大多数时候,当你得到这样的错误(一般来说和有意义的术语),它要么是因为:
1). yaml文件中的语法错误(在您的情况下不是)。
2).或者像错误说“在此上下文中不允许Map值”。这意味着您在yaml中使用的键/值可能在语法上是正确的,但在语义上不是正确的。
nmpmafwu3#
因为你甚至在运行
kubectl version
时也会得到这个错误,我认为你的kubeconfig文件中有一个yaml语法错误,默认情况下位于~/.kube/config
。您可以使用yaml验证器(如this one)验证其内容。
ss2ws0br4#
确保您已完成以下步骤:
作为root用户。
我也无法看到版本
hfyxw5xn5#
只是想补充一下...我今天看到这个错误后执行复制/粘贴操作到我的YAML文件。这个过程引入了一些
kubectl
无法破译的空白字符。如果您不确定,请先将YAML粘贴到文本编辑器中,该编辑器将显示所有不可见字符,并确保它们与YAML文件的其余部分一致。
pepwfjgg6#
我在执行一些Kubernetes基本命令时也遇到了同样的问题。kubectl get ns,kubectl get pods,etc.
解决方案:
尝试停止minikube集群,然后重新启动
wswtfjt77#
只要按照这些步骤,为我工作,并发现他们作为最快的解决方案:
如果您是普通用户(非root用户):
或者,如果您是root用户,则可以运行: