Pod와 그 밖의 쿠버네티스 리소느는 일반적으로 JSON 또는 YAML 매티페스트를 쿠버네티스R EST API 앤드포인트에 게시해 생성
각 리소스 유형의 모든 속성을 구성하려면 쿠버네티스 API 객체의 정의를 알아야 함.
1. Pod의 YAML 디스크립터 검사
[배포된 Pod의 전체 YAML]
$ kubectl get po kubia-zxzij -o yaml
apiVersion: v1
kind: Pod
metadata:
annotations:
kubernetes.io/created-by: ...
creationTimestamp: 2016-03-18T12:37:50Z
generateName: kubia-
labels:
run: kubia
name: kubia-zxzij
namespace: default
resourceVerion: "294"
selfLink: /api/v1/namespaces/default/pods/kubia-zxzij
uid: 3a564c0-ed06-11e5-ba3b-42010af0004
spec:
containers:
- image: luksa/kubia
imagePullPolicy: IfNotPresent
name: kubia
ports:
- containerPort: 8080
protocol: TCP
resources:
requests
cpu: 100m
Type of K
object/re
terminationMessagePath: /dev/termination-log
volumeMounts:
- mountPath: /var/run/secrets/k8s.io/servacc
name: default-token-kvcqa
readOnly: true
dnsPolicy: ClusterFirts
nodeNAme: gke-kubia-e8fe08b8-node-txje
restartPolicy: Always
serviceAccount: default
terminationGracePeriodSeconds: 30
volumes:
- name: default-token-kvcqa
secret:
secretName: default-token-kvcqa
status
conditions:
- lastProbeTiem: null
lastTransitionTime: null
status: "True"
type: Ready
containerStatuses:
- containerID: docker://f0276994322d247ba...
image: luksa/kubia
imageID: docker://4c325bcc640c.....
lastState: {}
name: kubia
ready: true
restartCount: 0
state:
running:
startAt: 2016-03-18T12:46:05Z
hostIP: 10.132.0.4
phase: Running
podIP: 10.0.2.3
startTime: 2016-03-18T12:44:32Z
[Pod 정의의 주요 부분]
- 메타 데이터(Metadata)에는 Pod와 관련된 이름, 네임스페이스, 라벨 그 밖의 정보가 있다.
- 스펙(SPEC)에는 Pod의 컨테이너, 볼륨, 그 밖의 데이터와 같은 Pod 내용의 실제 설명이 있다.
- 상태(Status)에는 Pod의 상태, 각 컨테이너의 설명 및 상태, 포드 내부의 IP 및 그 밖의 기본정보 등 실행중인 포드의 현재 정보가 들어 있다.
2. Pod의 간단한 YAML 디스크립터 만들기
[기본적인 Pod Menifest: kubia-manual.yaml]
apiVersion: v1 # 디스크립터는 쿠버네티스 API의 v1 버전을 따른다.
kind: Pod # Pod 설명
metadata:
name: kubia-manual # Pod의 이름
spec:
containers:
- image: luksa/kubia # 생성할 컨테이너의 컨테이너 이미지
name: kubia
ports:
- containerPort: 8080 # 응답 대기할 애플리케이션의 포트
protocol: TCP
[kubectl explain]
kubernets 사용 가능한 API 객체 찾기
$ kubectl explain pods
DESCRITION:
Pod ~~~
FIELDS:
kind <string>
Kind is a string value representing the REST resource this object represetns ~~
metadata <object>
Standard object's metadata...
spec <object>
Specification of the desired behavior of the pod..
status. <object>
Most recently observed status of the pod. This data may not be up to date...
kubectl은 객체의 설명을 출력하고 객체가 포함할 수 있는 속성을 나열한다. 그 다음 각 속성을 더 자세히 조사할 수 있다.
$ kubectl explain pod.spec
RESOURCE: spec <Object>
DESCRIPTION:
Specification of the desired behaviro of the pod...
podSpec is a descrition of a pod.
FIELDS:
hostPID <boolean>
Use the host's pid namespace. Optional: Default to false.
[컨테이너 포트 지정]
Pod 정의에서 포트를 지정하는 것은 순수하게 정보를 제공하려는 것
포트를 생략해도 클라이언트가 포트를 통해 Pod에 연결 가능 여부에는 영향을 미치지 않음
3. 주요 kubectl 명령어
[kubectl을 사용해 포드 만들기]
$ kubectl create -f kubia-manual.yaml
pod "kubia-manual" created
kubectl create -f 명령은 YAML 또는 JSON 파일에서 포드뿐 아니라 다른 리소스를 생성하는데 사용됨
[실행 중인 포드의 전체 정의 검색]
YAML 파일로 요청할 경우
$ kubectl get po kubias-manual -o yaml
or
JSON 파일로 요청할 경우
$ kubectl get po kubia-manual -o jason
[포드 목록에 새로 생성된 포드 보기]
$ kubectl get pods
[애플리케이션 로그 보기]
- 컨테이너 런타임(docker)는 해당 스트림을 파일로 리다이렉션하고 실행을 통해 컨테이너의 로그를 가져올 수 있다.
- $ docker logs <container id?
쿠버네티스의 경우 더 쉬운 방법을 제공한다.
포드의 로그(포드 안의 컨테이너의 로그)를 보려면 로컬 시스템에서 다음 명령을 실행
$ kubectl logs kubia-manual
Kubia server starting ...
--> 단일 컨테이너만 있으면 쿠버네티스에서 실행되는 애플리케이션의 로그는 바로 검색됨
--> 컨테이너 로그는 매일 로그 파일이 10MB 크기에 도달할 때마다 자동으로 순환됨. kubectl logs 명령은 마지막 순환의 로그 항목만 표시
[컨테이너 이름 지정해 다중 컨테이너 포드의 로그 가져오기]
- 포드에 여러 컨테이너가 있는 경우 kubectl 로그를 실행할 때 -c <컨테이너 이름> 옵션을 포함시켜 컨테이너 이름을 명시적으로 지정
- kubia-manual 포드에서는 컨테이너의 이름을 kubia로 설정했으므로 아래와 같이 진행
$ kubectl logs kubia-manual -c kubia
Kubia server starting ...
[포드의 포트에 local. network Port Forwarding]
- 컴퓨터의 로컬 포트 8888을 kubiamanual pod의 8080 포트로 전달
$ kubectl port-forward kubia-manual 8888:8080
[포트 전달자를 통한 포드 연결]
$ curl localhost:8888
'Kubenetes > Kubernetes Pods' 카테고리의 다른 글
데몬셋 (Daemon Set) (0) | 2021.02.11 |
---|---|
라이브니스 프로브 (Liveness Probe) (0) | 2021.02.10 |
Pod 4 - (Namespace) (0) | 2021.02.10 |
Pod 3 - (Label을 이용한 Pod 구성) (0) | 2021.02.10 |
Pod 1 - (Pod 개요) (0) | 2021.02.10 |