Kubectl始终返回错误:yaml:在此上下文中不允许映射值

Sta*_*ord 8 yaml kubernetes kubectl

Kubectl命令总是返回此错误yaml:第2行:在此上下文中不允许映射值.即使我调用普通版本命令,配置命令等,也不确定是什么造成这种情况.

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
Run Code Online (Sandbox Code Playgroud)

我使用的唯一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
Run Code Online (Sandbox Code Playgroud)

无论我尝试使用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
Run Code Online (Sandbox Code Playgroud)

产量:

strace kubectl version
Run Code Online (Sandbox Code Playgroud)

这里

Ant*_*hon 8

版本命令已经抛出错误表示存在一些加载的默认YAML文件.

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

当然,kubernetes中的草率编程不会捕获这样的错误,并显示文件的名称,然后重新引发错误.

  • 一旦我停止它,gitlab 就会在端口 8080 上运行,错误就消失了。我真的不知道这与任何 yaml 文件有什么关系。但是由于您告诉我尝试从 strace 获取 url,因此我能够解决它。 (4认同)

Suh*_*nna 5

在大多数情况下,当您收到这样的错误(以一般意义的术语来讲)时,原因可能是:-

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

2)。或类似错误说“在此上下文中不允许映射值”。这意味着您在Yaml中使用的键/值在语法上可能是正确的,但在语义上可能不是正确的。

  • 就我而言,我不小心将一个键向左缩进,这使得它下面的所有内容看起来都像它的键。但键本身也有一个值,因此会出现映射错误。 (2认同)