쿠버네티스의 pod, service, ingress 등을 배포하기 위해서는 아래와 같은 예시 yaml 파일을 배포한다.
apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 8090
특징
띄어쓰기 구분을 잘해야한다.
- 각 셋팅의 하위 셋팅은 종속적이기 때문에 띄어쓰기가 틀리게 되면 적용 실패된다.
- tab보다는 space를 추천원하고자 하는 kind에 따라 apiVersion 종류가 달라진다.
apiVersion 설명
- 스크립트를 실행하기 위한 쿠버네티스 API 버젼
v1
쿠버네티스에서 발행한 첫 stable release API
(대부분의 api가 포함되어 있음)
apps/v1
쿠버네티스의 common API 모음, Deployment, RollingUpdate, ReplicaSet을 포함
autoscaling/v1
pod의 autoscale 기능을 포함하는 API, 현재는 CPU metric을 사용한 scaling만 가능
(추후에 alpha, beta version에서 memory, custom metric으로 scaling 기능 추가예정)
batch/v1
배치 프로세스, job-like task를 위한 배포 api
batch/v1beta1
batch/v1에서 cronJob으로 job을 돌리는 api가 추가
certivicates.k8s.io/v1 beta
클러스터의 secure network function들이 추가된 API
(TLS 등의 기능 추가)
extensions/v1beta
Deployments, DaemonSets, ReplicatSets, Ingress 등 상당수 feature들이 새롭게 정의된 API
그러나 상당수의 api들이 apps/v1과 같은 그룹으로 이동되어서, 쿠버네티스 1.6버젼 이후부터는 deprecated 됨
policy/v1beta1
pod에 대한 security rule이 정의된 API
rbac.authorization.k8s.io/v1
쿠버네티스의 role-based access control이 가능한 function이 정의됨
kind 설명
- 리소스의 종류 정의
Pod
pod을 정의하여 쿠버네티스 선언(아직 배포되지 않은 상태)
ReplicationController(or ReplicaSet)
쿠버네티스에 선언된 pod을 배포하기 위한 선언(replicas 갯수, readiness probe 등 선언)
Service
동적으로 생성된 pod(각각 다른 ip)을 라벨(label)과 라벨 셀렉터(label selector)을 사용하여 하나의 서비스로 묶어주는 역할.
(ex. pod에 라벨이 "wonyoung"이 선언되어 있으면, service는 "wonyoung" label이 붙은 서비스만 골라내서 그 pod간에만 로드벨런싱을 동해 서비스를 외부에 제공)
End of Document
반응형
'DevOps > 쿠버네티스' 카테고리의 다른 글
[쿠버네티스 기초]spring boot rest application POD 배포하기(part1) (1449) | 2018.06.25 |
---|---|
젠킨스(with 쿠버네티스 플러그인)가 쿠버네티스에서 동작하는 원리, 생명주기, 특징 (973) | 2018.06.24 |
쿠버네티스 yaml 선언시 어떤 apiVersion을 사용해야 할까? (1447) | 2018.06.24 |
쿠버네티스 관리자 계정 들어가기 (1101) | 2018.05.03 |
쿠버네티스에서 POD, Node의 리스소 관리(CPU, memory, 등) (1132) | 2018.05.03 |
쿠버네티스 Deployment를 통한 배포 및 롤백 (949) | 2018.05.03 |