다음 파일이 있습니다 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 표시에 필요한 "메타데이터" 및 "사양" 요소는 정의의 최상위 수준에 있습니다. kubectl
Pod 사양을 정의하는 '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) image
및 name
요소는 이미지를 사용하도록 수정되었습니다 bash
. 4) command
및 키를 사용하도록 명령 정의가 변경되었습니다 args
.
YAML은 들여쓰기를 위해 탭 대신 공백을 사용하며 권장되는 YAML 구문은 기존의 4개 공백 대신 들여쓰기 수준당 2개의 공백을 사용하는 것입니다.
더 많은 샘플 YAML 파일을 보려면 다음을 참조하세요.GitHub의 Kubernetes 웹사이트 저장소.