Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubectl始终返回错误:yaml:此上下文中不允许映射值_Yaml_Kubernetes_Kubectl - Fatal编程技术网

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

Kubectl始终返回错误:yaml:此上下文中不允许映射值,yaml,kubernetes,kubectl,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", GitTreeStat

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
我使用的唯一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

如果version命令已经抛出错误,则表明加载了某个默认YAML文件

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


当然,在kubernetes中,如果没有捕捉到这样的错误,并显示文件名,然后重新引发错误,这是草率的编程。

因为即使在运行
kubectl version
时也会出现错误,我想说您的kubeconfig文件中有一个yaml语法错误,默认情况下位于
~/.kube/config


您可以使用yaml验证器来验证其内容,如。

大多数情况下,当您遇到这样的错误时(从一般意义上讲),原因可能是:-

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


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

确保您已完成以下步骤:

mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config mkdir-p$HOME/.kube sudo cp-i/etc/kubernetes/admin.conf$HOME/.kube/config sudochown$(id-u):$(id-g)$HOME/.kube/config 甚至作为root用户

我也无法看到kubectl版本的版本,只是为了添加。。。 kubectl version 在对YAML文件执行复制/粘贴操作后,我今天看到了此错误。该过程引入了一些
kubectl
无法破译的空白字符


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

您应该更正YAML。您可能正在使用制表符,删除这些制表符,然后检查缩进是否正确。请将文章中的截图替换为文本(以便索引),并包含YAML文件的相关行(从开始到至少第3行)。YAML文件如何影响“kubectl版本”命令您是否手动尝试过这些URL?哪一个归还的东西看起来像是一个破碎的YAML文件?损坏文件的具体内容是什么?似乎是yaml语法错误在我的情况下,使用任何在线yaml linter检查错误。我已附加strace kubectl版本的输出。一旦我停止,gitlab在8080端口运行,错误就消失了。我真的不知道这和任何yaml文件有什么关系。但是,既然你让我从strace尝试url,我就能够解决它。@StarLord,@Anthon,这里也是,我在后台运行了一个容器,
strace kubectl version
命令显示的错误实际上是运行的容器打印的
console.log
语句的第一个字母。我不明白这两件事是如何关联的——但我删除了容器,然后它就可以正常工作了……:)我用Yamlint检查了我的配置文件。这是一个有效的YAML。谢谢你的回答。但问题是我仍然无法理解的另一个问题,在我的例子中,我遗漏了一个数组后空格的表示法,这在其他地方导致了完全相同的错误。kubectl的错误报告是我见过的最糟糕的错误之一。在我的案例中,我不小心在左边缩进了一个键,这使得它下面的所有东西看起来都像它的键。但是键本身也有一个值,因此映射错误。如果没有$HOME/.kube/config文件,则会出现此错误。