21

Kubectl 命令总是返回这个错误 yaml: line 2: mapping values are not allowed in this context。即使我调用普通版本命令、配置命令等。不确定是什么原因造成的。

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

这里

4

5 回答 5

12

version 命令已经抛出错误表明有一些默认的 YAML 文件被加载。

您可以使用strace kubectl version查看打开的文件,希望这是在kubectl引发错误之前完成的。我假设它读取了一些全局配置(或者您当前目录中的默认文件)。

不捕捉这样的错误,并显示文件名,然后重新引发错误,当然是kubernetes中的马虎编程。

于 2016-11-05T09:43:52.887 回答
8

大多数情况下,当您遇到这样的错误(笼统地讲有意义的术语)时,要么是因为:-

1)。yaml 文件中的语法错误(在您的情况下不是)。

2)。或者就像错误所说的“在这种情况下不允许映射值”。这意味着您在 yaml 中使用的键/值可能在语法上是正确的,但在语义上可能不正确。

于 2018-11-02T12:50:10.827 回答
4

确保您已完成以下步骤:

mkdir -p $HOME/.kube  
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

即使作为root用户。

我也无法从

kubectl 版本

于 2019-09-11T08:07:58.557 回答
4

只是补充一下......我今天在我的 YAML 文件中执行复制/粘贴操作后看到了这个错误。该过程引入了一些kubectl无法破译的空白字符。

如果您不确定,请先将 YAML 粘贴到文本编辑器中,该编辑器将显示所有不可见字符,并确保它们与 YAML 文件的其余部分一致。

于 2020-02-19T12:19:44.770 回答
3

由于即使在运行时也会出现错误kubectl version,所以我会说您的 kubeconfig 文件中存在 yaml 语法错误,~/.kube/config默认位于。

您可以使用像这样的 yaml 验证器来验证其内容。

于 2016-11-06T11:33:27.150 回答