YAML을 JSON으로 변환하는 중 오류가 발생했습니다. yaml: 10행: 예상 키를 찾을 수 없습니다.

YAML을 JSON으로 변환하는 중 오류가 발생했습니다. yaml: 10행: 예상 키를 찾을 수 없습니다.

다음 파일이 있습니다 yaml.

---
apiVersion: v1
kind: pod
metadata:
    name: Tesing_for_Image_pull -----------> 1
    spec:
        containers:
        - name: mysql ------------------------> 2
          image: mysql ----------> 3
          imagePullPolicy: Always ------------->4
          command: ["echo", "SUCCESS"]  -------------------> 5

실행 후 kubectl create -f my_yaml.yaml다음 오류가 발생합니다.

error: error converting YAML to JSON: yaml: line 10: did not find expected key

고쳐 쓰다: yamllint다음과 같은 오류가 발생합니다.

root@debian:~# yamllint my_yaml.yaml
my_yaml.yaml
  8:9       error    wrong indentation: expected 12 but found 8  (indentation)
  11:41     error    syntax error: expected <block end>, but found '<scalar>'

내 문제는 무엇이며 어떻게 해결합니까?

답변1

이것간단한 포드 예시 YAMLKubernetes 표시에 필요한 "메타데이터" 및 "사양" 요소는 정의의 최상위 수준에 있습니다. kubectlPod 사양을 정의하는 'spec' 요소를 찾을 수 없기 때문에 명령어가 실패할 가능성이 높습니다 .

echo SUCCESS이미지 가져오기 구성을 테스트하고 컨테이너 내부에서만 실행 하도록 지정한 것 같습니다 . 이 두 가지 조건을 고려하면 bash이미지 대신 이미지를 드롭다운하는 것이 좋습니다 mysql.

다음 대체 YAML이 귀하의 요구 사항을 충족해야 합니다.

---
apiVersion: v1
kind: Pod
metadata:
  name: testing-for-image-pull
spec:
  containers:
  - name: bash
    image: bash
    imagePullPolicy: Always
    command: ["echo"]
    args: ["SUCCESS"]

원본 YAML 파일에 다음 변경 사항이 적용되었습니다. 1) kind요소가 값으로 수정되었습니다 Pod. 2) Kubernetes 요구 사항을 충족하도록 Pod 이름이 변경되었습니다(DNS와 유사한 소문자 이름). 3) imagename요소는 이미지를 사용하도록 수정되었습니다 bash. 4) command및 키를 사용하도록 명령 정의가 변경되었습니다 args.

YAML은 들여쓰기를 위해 탭 대신 공백을 사용하며 권장되는 YAML 구문은 기존의 4개 공백 대신 들여쓰기 수준당 2개의 공백을 사용하는 것입니다.

더 많은 샘플 YAML 파일을 보려면 다음을 참조하세요.GitHub의 Kubernetes 웹사이트 저장소.

관련 정보