포스트

Kubernetes 기초 및 사용법

Kubernetes 의 기초 내용과 구성내용


Kubernetes

Kubernetes (k8s) 란

  • 컨테이너 오케스트레이션 플랫폼
  • 컨테이너를 쉽고 빠르게 배포 및 확장하고, 관리를 자동화 해주는 오픈소스 플랫폼

Kubernetes 의 특징

1) 자동화된 컨테이너 배포 및 스케일링

  • 애플리케이션을 중단시키지 않고 업데이트 가능
  • 오토스케일링을 통한 서버 자원의 효율적인 사용

2) 로드 밸런싱

  • 하나의 서비스에 여러 개의 컨테이너 인스턴스가 있을 때, 들어오는 요청을 균등하게 분배하여 부하를 분산

3) 롤아웃 롤백

  • 애플리케이션을 지속적으로 모니터링 하며, 어떤 노드나 컨테이너가 장애 발생시 자동으로 해당 컨테이너 복구

Kubernetes 기본 오브젝트

  1. Pod : 쿠버네티스에서 실행되는 최소 단위
  2. Namespace (ns) : 쿠버네티스 클러스터에서 사용되는 리소스 구분
  3. Volume : 파드가 사라져도 저장 가능한 디렉토리 제공
  4. Service : 파드들을 통해 실행되고 있는 애플리케이션 네트워크에 노출

그 외 오브젝트 (컨트롤러)

  1. Replica Set : 파드를 여러 개 복제하여 관리하는 오브젝트
  2. Deployment : 파드와 레플리카셋에 대한 선언적 업데이트 제공
  3. Ingress : 클러스터 외부에서 클러스터 내부 pod로 서비스 접근 시 필요

K9s

  • 쿠버네티스 작업을 정말 쉽고 빠르고 안전하게 만들어주는 오픈 소스 명령줄 도구
  • 터미널 기반으로 UI를 통해 kubectl 명렁어를 입력하지 않아도 직관적으로 작업 수행 가능

주요 사용법

기본 yaml 파일 구조

  1. apiVersion : 오브젝트를 생서하기 위해서 사용할 쿠버네티스 API 버전
    • apps/v1 : Deployment, ReplicaSet, RollingUpdate 등
    • v1 : Pod, Namespace, Service 등 ..
  2. kind : 생성할 object 타입
    • Deployment, Service, Ingress, Pod, Namespace 등등..
  3. metadata : name , labels 등을 포함하는 기본적인 정보
    • name, labels 등등
  4. spec : 오브젝트의 상태 정의
    • spec 내의 정의할 요소는 정의하고자 하는 오브젝트의 종류에 따라 다름
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
apiVersion: apps/v1
kind: Deployment
metadata:
  name: aitest-jupyter-1004
spec:
  selector:
    matchLabels:
      app: aitest-jupyter-1004
  template:
    metadata:
      name: aitest-jupyter-1004-pod
      labels:
        app: aitest-jupyter-1004
    spec:
      containers:
        - name: aitest-jupyter-1004
          command: ["/bin/bash", "-c", "while ture; do sleep 60000; done"]
          image: aitest_minsu:v0
          imagePullPolicy: Never
          volumeMounts:
            - name: projects
              mountPath: /data
      volumes:
        - name: projects
          hostPath:
            path: /data/sms
            type: Directory
      hostIPC: true
---
apiVersion: v1
kind: Service
metadata:
  name: aitest-jupyter-1004-service
  namespace: default
spec:
  ports:
    - port: 1004
      targetPort: 8888
      name: jupyter
  selector:
    app: aitest-jupyter-1004
  type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: jupyter-29011-ing
  namespace: default
spec:
  ingressClassName: nginx
  rules:
    - host: host_ip_address
      http:
        paths:
          - backend:
              service:
                name: aitest-jupyter-1004-service
                port:
                  number: 1004
            path: /
            pathType: Prefix
  • nginx Pod 생성 예시
1
2
3
4
5
6
7
8
apiVersion: v1
kind: Pod
metadata:
	name: myweb-pod
	labels:
		app: myweb
		type: fronted
spec
Google AdSense — Post Ad
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

Comments powered by Disqus.