Kubectl всегда возвращает ошибку: yaml: значения сопоставления недопустимы в этом контексте

Команда 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

находится здесь


person StarLord    schedule 05.11.2016    source источник
comment
Вам следует исправить свой YAML. Возможно, вы используете символы табуляции, удалите их, а затем проверьте правильность отступа. Пожалуйста, замените снимки экрана в своих сообщениях текстом (чтобы его можно было проиндексировать) и включите соответствующие строки вашего файла YAML (от начала до как минимум строки 3).   -  person Anthon    schedule 05.11.2016
comment
как файл yaml влияет на команду версии kubectl   -  person StarLord    schedule 05.11.2016
comment
Вы пробовали эти URL-адреса вручную? Какой из них возвращает что-то похожее на испорченный файл YAML? Что именно содержит поврежденный файл?   -  person Anthon    schedule 05.11.2016
comment
В моем случае кажется, что синтаксическая ошибка yaml, используйте любой онлайн-линтер yaml для проверки ошибок.   -  person Pratik    schedule 12.06.2019


Ответы (5)


То, что команда версии уже выдает ошибку, указывает на то, что загружается какой-то файл YAML по умолчанию.

Вы можете использовать strace kubectl version, чтобы увидеть, какой файл был открыт, надеюсь, это будет сделано незадолго до того, как kubectl выдаст ошибку. Я предполагаю, что есть некоторая глобальная конфигурация, которую он читает (или, альтернативно, файл по умолчанию в вашем текущем каталоге).

Конечно, неаккуратное программирование в кубернетах - не обнаруживать такую ​​ошибку и отображать имя файла, а затем повторно вызывать ошибку.

person Anthon    schedule 05.11.2016
comment
Я прикрепил вывод версии strace kubectl - person StarLord; 05.11.2016
comment
на порту 8080 был запущен gitlab, как только я его остановил, ошибка исчезла. Я действительно не знаю, как это было связано с каким-либо файлом yaml. но поскольку вы сказали попробовать URL-адрес из strace, я смог его решить. - person StarLord; 06.11.2016
comment
@StarLord, @Anthon, то же самое здесь, у меня был контейнер, работающий в фоновом режиме - и ошибка, показанная командой strace kubectl version, на самом деле была первыми буквами оператора console.log, напечатанного запущенным контейнером. Я не понимаю, как связаны эти две вещи, но я удалил контейнер, и он сработал без проблем ... :) - person AIon; 16.05.2017

В большинстве случаев, когда вы получаете такую ​​ошибку (говоря в общих и содержательных терминах), это происходит из-за: -

1). Синтаксическая ошибка (в вашем случае ее нет) в файле yaml.

2). Или как в ошибке говорится, что «значения сопоставления не разрешены в этом контексте». Это означает, что ключи / значения, которые вы использовали в yaml, могут быть синтаксически правильными, но не семантически.

person Suhas Chikkanna    schedule 02.11.2018
comment
В моем случае я пропустил пробел после обозначения массива, что привело к точно такой же ошибке в другом месте. Отчет об ошибках kubectl - один из худших, что я когда-либо видел - person Ashwin Prabhu; 12.08.2019
comment
В моем случае я случайно сделал отступ слева от клавиши, из-за чего все, что под ней, выглядело как ее клавиши. Но сам ключ также имел значение, отсюда и ошибка сопоставления. - person Semih Sezer; 24.09.2019

Поскольку вы получаете сообщение об ошибке даже при запуске kubectl version, я бы сказал, что у вас есть синтаксическая ошибка yaml в вашем файле kubeconfig, который по умолчанию находится в ~/.kube/config.

Вы можете проверить его содержимое, используя валидатор yaml, например этот.

person semekh    schedule 06.11.2016
comment
Я проверил свой файл конфигурации с помощью YAMLlint. Это был действующий YAML. Спасибо за ответ. Но проблема была в другом, чего я до сих пор не могу понять. - person StarLord; 07.11.2016

Просто чтобы добавить ... Я видел эту ошибку сегодня после выполнения операции копирования / вставки в мой файл YAML. В процессе были введены некоторые пробельные символы, которые kubectl не мог расшифровать.

Если вы не уверены, сначала вставьте YAML в текстовый редактор, который покажет все невидимые символы и убедитесь, что они соответствуют остальной части вашего файла YAML.

person JDTLH9    schedule 19.02.2020

Убедитесь, что вы выполнили шаг:

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

Даже как пользователь root.

I also wasn't able to see version from

kubectl version

person Harshavardhan Bugata    schedule 11.09.2019
comment
Этот. Вы получаете эту ошибку, если у вас нет файла $ HOME / .kube / config. - person fifman; 13.12.2019