는 Kubernetes를 들어 자원 YAML 마크 업 언어, 자기 정의를로드하는 데 사용할 수 있습니다 :
YAML은 (/ jæməl / 꼬리 낙타 낙타와 유사) 매우 읽을 수있는, 직렬화 형식을 표현하는 데 사용되는 데이터입니다. YAML 포함하여 다른 언어, 참조 : C, 파이썬, 펄, 그리고에서 XML, 전자 메일 데이터 형식 (RFC 2822)에서 영감을 얻는다. 클라크 에반스는 2001 년 Ingy은 인터넷 공동 디자이너를 점하고 오렌 벤 - 키키는이 언어 [2]입니다뿐만 아니라 최초의 언어 [1]를 발표했다. 몇 가지 현재의 프로그래밍이나 스크립팅 언어 지원 (또는 해결)이 언어가 있었다. YAML은 "YAML은 마크 업 언어가 아닙니다"입니다 (YAML은 마크 업 언어가 아닙니다) 재귀 적 약어이다. 언어의 개발에, YAML은 사실 의미 : "또 다른 마크 업 언어"(여전히 마크 업 언어) [3]하지만, 같은 마크 업 언어가 아니라, 데이터 센터와 같은 언어를 강조하기 위해 이름을 바꾼 역 약어로 초점을 맞 춥니 다.
사용 YAML은, 당신을 포함하여 어떤 혜택을 줄 것이다 K8S을 정의하는 데 사용됩니다 :
- 편리 성 : 당신은 더 이상 명령을 실행하기 위해 명령 줄 매개 변수를 많이 추가 할 필요가 없습니다
- 유지 보수성 : YAML 파일을 소스 제어를 할 수있다, 당신은 모든 작업을 추적 할 수 있습니다
- 유연성 : 당신은 YAML에 의한 명령 라인 구조보다 더 복잡 만들 수있을 것입니다
YAML은 유효한 JSON 파일도 유효한 YAML 파일을 의미, JSON의 상위 집합입니다. 당신이 JSON을 알고 있다면 그래서 한편으로, 당신은 단지 그것을 가지게 될 수있다 (대신 누군가 다른 사람이 읽는) 자신의 YAML을 작성하는 것입니다. 반면에, 당신이 예를 찾기 위해 온라인으로 시도에도 불구하고, 불행하게도, 덜하지만, 그들은 일반적으로 JSON없는, 그래서 우리는 그것에 익숙해해야 할 수도 있습니다. 그러나, JSON의 경우에 더 편리 할 수 있습니다, 그래서 당신은 당신이 JSON을 알고 매우 행복 할 것이다.
다행히 구조의 YAML 두 종류의 당신은 알 필요가 :
- 기울기
- 나열 YAML 객체의 서열이다
- 지도
- 지도는 당신에게 키 조합을 드릴 것입니다, 당신은 구성 정보를 설정하는 것이 더 편리 할 수 있습니다
자원 포드의 목록보기
[루트 @ KUBE ~] # kubectl GET POD의 nginx-APP-7756966bc9-qrksb -o YAML
//이 kubectl 실행 방법 포드를 통해 실행, 우리는 수동으로 다음로드 구성 파일을 생성이 유사한 YAML을 정의 할 수 있습니다 POD
apiVersion : V1
종류 : 포드
메타 데이터 :
creationTimestamp : "2019-07-16T06 : 39 : 02Z"
generateName : Nginx에-APP-7756966bc9-
레이블 :
POD 해시-템플레이트 : 7756966bc9
RUN : Nginx에 인앱
이름 : Nginx와-APP- qrksb-7756966bc9
네임 스페이스 : 기본
ownerReferences :
- apiVersion : 앱 / V1
blockOwnerDeletion : true로
컨트롤러 : true로
종류 : ReplicaSet의
이름 : Nginx에-APP-7756966bc9
UID : 51997507-0ad5-4f71-86db-3ad6eff70171
resourceVersion : "603 662"
selfLink : / API / V1 / 네임 스페이스 / 기본 / 포드 / nginx를-앱 7756966bc9-qrksb의
UID : 7035cfbd-a8f3-45a9-933c-4ce1cef45183의
사양 :
컨테이너 :
- 이미지 :의 nginx : 고산
imagePullPolicy : IfNotPresent의
이름 : nginx를-응용 프로그램
포트 :
- containerPort : 80
프로토콜 : TCP의
자원 : {}
terminationMessagePath : / dev에는 / 종료 로그
terminationMessagePolicy을 : 파일
volumeMounts을 :
- 경로 (mountpath) : /var/run/secrets/kubernetes.io/serviceaccount
이름 : 기본적으로 토큰 bsthb의
readOnly 인 : 사실
dnsPolicy : ClusterFirst
enableServiceLinks : 사실
여기서 nodeName : kube.node1
우선 순위 : 0
조건 :
restartPolicy : 항상
schedulerName : 기본-스케줄러
SecurityContext에 {}
serviceAccount : 기본
serviceAccountName : 기본
terminationGracePeriodSeconds : 30
tolerations :
- 효과 : NOEXECUTE의
키 : node.kubernetes.io/not-ready
운영자 : 존재
tolerationSeconds을 : 300
- 효과 : NOEXECUTE의
키를 : node.kubernetes.io/unreachable
운영자 : 존재
300 : tolerationSeconds
볼륨을 :
- 이름 : 기본적으로 토큰 bsthb
비밀 :
defaultMode를 : 420
secretName을 기본적-토큰 bsthb의
상태 :
- lastProbeTime : 널 (null)
lastTransitionTime : "2019-07-16T06 : 39 : 02Z"
상태 : "참"
유형 : 초기화
- lastProbeTime : 널 (null)
lastTransitionTime : "2019-07-16T06 : 39 : 36Z"
상태 : "참"
유형 : 준비
- lastProbeTime : 널 (null)
lastTransitionTime : "2019-07-16T06 : 39 : 36Z"
상태 : "참"
유형 : ContainersReady
- lastProbeTime : 널 (null)
lastTransitionTime : "2019-07-16T06 : 39 : 02Z"
상태 : "참"
유형 : PodScheduled
containerStatuses :
- containerID : 고정 표시기 : // 6f50a8038d1f9b484c3af46fa21ef0bdce963b95c4f7f5980302bc70ca46eea6// 6f50a8038d1f9b484c3af46fa21ef0bdce963b95c4f7f5980302bc70ca46eea6
이미지 : nginx를 : 고산
imageID : 고정 표시기 - pullable : //의 nginx @ SHA256 : 17bd1698318e9c0f9ba2c5ed49f53d690684dab7fe3e8019b855c352528d57be의
} {: lastState
이름 : nginx를-응용 프로그램
준비 : 사실
RESTARTCOUNT : 0
상태 :
실행 :
startedAt : "2019-07-16T06 : 39 : 36Z"
hostIP : 10.2.61.22
단계 : 실행
podIP : 10.244.2.7
qosClass : BestEffort
startTime을 : "2019-07-16T06 : 39 : 02Z"
[루트 @의 KUBE ~] #
우리의 분석은 YAML 형식에 대해 수행한다 :
#maps 키입니다 | (-), 목록 키 [인수, 인수, 항목의 복수의 조합] 대시 값의 조합입니다 시작 부분에
apiVersion : //지도 V1의 종류 : // 포드지도 메타 데이터 : 이름 : // RSS 사이트 지도 레이블 : 응용 프로그램 : 웹 /지도 사양 : //지도 컨테이너 : // 목록 이름 - 이름 : 자식 목록 매개 변수가지도를하다 // 프런트 엔드 이미지 : Nginx에 // 목록 매개 변수 하위 키지도입니다 포트 : - containerPort : 80 // 목록 매개 변수지도 하위 키 - 이름 : RSS 판독기 이미지 : nickchase / RSS-PHP-Nginx에 : V1 포트 : - containerPort : 88
간단한 파일 YAML 만들기
루트 @의 KUBE 테스트] # 고양이 포드 demo.yaml apiVersion : V1의 종류 : 포드 메타 데이터 : 이름 : 포드 테스트 네임 스페이스 : 기본 라벨 : 응용 프로그램 : myapp와 계층 : 프론트 엔드 사양 : 컨테이너 : - 이름 : MYTEST 이미지 : nginx를 : 최신 [ 루트 @의 KUBE 테스트] #
[루트 @의 KUBE 테스트] #은 -f 포드 demo.yaml 만들 kubectl
만든 포드 / 포드 테스트를
[루트 @의 KUBE 테스트] # kubectl GET은 포드
NAME READY 상태가 AGE 다시 시작
busy1-78c9f4b47-pm2qx을 0/1 CrashLoopBackOff 22 100m
busy2- 0 2d23h 실행 7f9dbf96d6-2d778 1/1
busy3-9877c76bf-ts5rl 1/1가 실행 0 2d23h
의 nginx-7bb7cd8db5-6sgvp 1/1 실행 0 차원
ContainerCreating의 nginx-앱 54c844949f-6zlmr 0/1 0 41H
의 nginx-앱 54c844949f- 0 2D 실행 n82d6 1/1
의 nginx-앱 54c844949f-xmkb8 1/1 0 2D를 실행
nginx를-앱 7756966bc9-qrksb 1/1 0 2d2h 실행
포드 테스트 0/1 ContainerCreating 0 초
[루트 @의 KUBE 테스트] #
[루트 @의 KUBE 테스트] # 개의 kubectl는 포드 포드 테스트 설명 이름 : 포드 테스트 네임 스페이스 : 기본 우선 순위 : 0 노드 : kube.node1 / 10.2.61.22 시작 시간 : 2019년 7월 18일 (목) 16시 44분 23초 0800 레이블 : 응용 프로그램 = myapp와 계층 = 프론트 엔드 주석 : <없음> 상태 : 실행 IP : 10.244.2.12 컨테이너 : MYTEST : 컨테이너 ID : 고정 표시기 : // 4e40fc5b6cae440881cea707b79c2d17692c47d75df69a571fa0e7d57dff5e3a의 이미지 : nginx를 : 최신 이미지 ID : 고정 표시기 - pullable : //의 nginx @ SHA256 : b4b9b3eee194703fc2fa8afa5b7510c77ae70cfba567af1376a573a967c03dbb 포트 : <없음> 호스트 포트 : <없음> 국가 : 러닝 시작 : 7월 18일 (목)을 2019 16시 44분 46초 0800 준비 : 참 다시 시작 횟수 : 0 환경 : <없음> 마운트 : 기본적으로 토큰 bsthb에서 /var/run/secrets/kubernetes.io/serviceaccount ( RO) 조건 : 유형 상태 초기화 된 진정한 준비 진정한 ContainersReady 사실은 참 PodScheduled : 볼륨 기본 토큰-bsthb : 유형 : 시크릿 (비밀)에 의해 채워 볼륨 SecretName을 기본적-토큰 bsthb 옵션 : 거짓 의 QoS 등급 : BestEffort 노드 선택기 : <없음> Tolerations : node.kubernetes.io/not-ready:NoExecute 300S에 대한 300 번대에 대한 node.kubernetes.io/unreachable:NoExecute 이벤트 : 유형 이유 나이 메시지에서 ---- ------ ---- --- - ------- 일반 예약 62S 기본-스케줄러 성공적으로 할당 된 기본 / 포드 테스트는 kube.node1하는 정상 이겠지 61S kubelet, kube.node1 이미지를 당기기 "를 nginx를 : 최신" 일반 빼서 40 대 kubelet을 성공적으로 뽑아 kube.node1 이미지 "의 nginx : 최신" 정상 만든 40 대 kubelet, kube.node1 만든 용기 MYTEST 일반 시작 39S kubelet, kube.node1 시작 컨테이너 MYTEST [루트 @의 KUBE 테스트] #
[루트 @의 KUBE ~] # 개의 kubectl API를 - 버전 admissionregistration.k8s.io/v1beta1의 apiextensions.k8s.io/v1beta1 apiregistration.k8s.io/v1의 apiregistration.k8s.io/v1beta1의 응용 / V1의 애플 리케이션 / v1beta1의 애플 리케이션 / v1beta2의 인증. k8s.io/v1 authentication.k8s.io/v1beta1 authorization.k8s.io/v1 authorization.k8s.io/v1beta1 오토 스케일링 / V1 오토 스케일링 / v2beta1 오토 스케일링 / v2beta2 배치 / V1 배치 / v1beta1의 certificates.k8s.io/v1beta1의 조정. k8s.io/v1 coordination.k8s.io/v1beta1의 events.k8s.io/v1beta1의 확장 / v1beta1의 networking.k8s.io/v1의 networking.k8s.io/v1beta1 node.k8s.io/v1beta1의 / v1beta1 정책 rbac.authorization.k8s.io/v1의 rbac.authorization.k8s.io/v1beta1의 scheduling.k8s.io/v1의 scheduling.k8s.io/v1beta1의 storage.k8s.io/v1의 저장 .k8s.io / v1beta1의 V1 [루트 @의 KUBE ~] # 개의 kubectl는 포드를 설명 종류 : 포드 버전 : V1의 설명 : 포드는 호스트에서 실행할 수있는 용기의 모음입니다. 이 자원은되고 클라이언트에 의해 만들어지고 호스트에 예정. FIELDS : apiVersion는 <문자열> APIVersion는이 표현의 버전 스키마 정의 객체. 서버는 최신 내부에 스키마를 인식 변환해야합니다 값과 인식 값을 거부 할 수있다. 더 많은 정보는 : https://git.k8s.io/community/contributors/devel/api-conventions.md#resources 종류 <문자열> 종류는이 객체가 REST 자원 나타내는 문자열 값입니다 나타내는입니다. 서버는 클라이언트가 제출하는 엔드 포인트에서이를 추론 할 수있다 요청을. 업데이트 할 수 없습니다. 낙타 표기법합니다. 더 많은 정보 : https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds 메타 데이터 <개체> 표준 객체의 메타 데이터. 더 많은 정보 : https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata 스펙 <개체> 포드의 원하는 동작의 사양. 더 많은 정보: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status 상태 <개체> 포드의 가장 최근에 관찰 된 상태입니다. 이 데이터는 현재 상황을 반영하지 않을 수 있습니다. 시스템에 의해 채워집니다. 읽기 전용입니다. 더 많은 정보 : https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status [루트 @의 KUBE ~] #