컬쥐네 다락방

Kubernetes | Object 파일 본문

클라우드/K8S

Kubernetes | Object 파일

코딩하는 갱얼쥐 2022. 5. 17. 16:35

Kubernetes Objects

https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/kubernetes-objects/

Object는 리소스를 뜻한다. 오브젝트를 만드는 방법에는 명령 방식yaml 방식이 있는데 보통 yaml 방식을 주로 사용한다.

kubectl -> 클라이언트 도구
어떤 명령을 내리면 API를 통해 API Server에 요청이 간다.

오브젝트 명세(Spec)와 상태(Status)

명세(Spec)을 우리가 오브젝트에 설정해주고 상태(Status)는 현재 상태를 k8s이 알려준다.

  • 오브젝트 파일 구성
apiVersion: apps/v1  #필수 지원하는 오브젝트의 버전
kind: Deployment     #필수 Object의 종류
metadata:            #필수 Data를 설명하는 정보 (이름, 네임스페이스, 레이블, 어노테이션)
  name: nginx-deployment
spec:                #필수(거의 대부분 사용) 오브젝트에 대한 선언
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

리소스 정보 확인

kubectl api-resources

NAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KIND
bindings                                       v1                                     true         Binding
componentstatuses                 cs           v1                                     false        ComponentStatus
configmaps                        cm           v1                                     true         ConfigMap
endpoints                         ep           v1                                     true         Endpoints
kubectl get <오브젝트 종류>
kubectl get nodes
kubectl get services
kubectl get pods

오브젝트의 버전

  • Stable : 안정화된 버전 ex)vX v1, v2..
  • Beta : 충분한 오류 검증. 기능 변경이 있을 수 있음. v1betaX, v2betaX
  • Alpha : 현재 개발중인 API. v1alphaX, v2alphaX

개발 순서는 Dev -> Alpha -> Beta -> Stable

  • 해당하는 오브젝트의 정보를 자세하게 볼 수 있다
    KIND, VERSION, DESCRIPTION, FIELD 등
    Status 정보는 쿠버네티스가 제공하는 정보로 Read Only가 붙어있다.
    계속해서 레이어를 낮춰가며 정보를 자세하게 볼 수 있다.
kubectl explain <오브젝트 종류>
kubectl explain pods
kubectl explain nodes

kubectl explain pods.metadata
kubectl explain pods.spec.containers.ports

오브젝트 관리

  • 명령형 커맨드 : kubectl 명령으로만 구성
kubectl create
kubectl run
kubectl expose
  • 명령형 오브젝트 구성 : yaml 파일을 순서대로 하나씩 실행
kubectl create -f a.yaml
kubectl run -f a.yaml
kubectl expose -f a.yaml
  • 선언형 오브젝트 구성 : yaml 파일의 모음을 한번에 실행
kubectl create -f resources/
kubectl run -f resources/
kubectl expose -f resources/
kubectl run myweb --image httpd
pod/myweb created

kubectl get pods
NAME    READY   STATUS              RESTARTS   AGE
myweb   0/1     ContainerCreating   0          10s

kubectl get pods -o wide
NAME    READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
myweb   1/1     Running   0          18s   10.233.96.1   node2   <none>           <none>

kubectl get pods -o yaml
apiVersion: v1
items:
- apiVersion: v1
  kind: Pod
  metadata:
    annotations:
.
.
.

'클라우드 > K8S' 카테고리의 다른 글

Kubernetes | Namespace  (0) 2022.05.17
Kubernetes | Workload - Pod  (0) 2022.05.17
Kubernetes | Kubespray 설치 방법  (2) 2022.05.17
Kubernetes | 클러스터 업그레이드 방법  (0) 2022.05.17
Kubernetes | Worker Node와 Join 방법  (0) 2022.05.17
Comments