는 Kubernetes 장 YAML

는 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 ~] #

  

 

 

추천

출처www.cnblogs.com/zy09/p/11208338.html