Kubernetes 기초 및 사용법
Kubernetes 의 기초 내용과 구성내용
Kubernetes
Kubernetes (k8s) 란
- 컨테이너 오케스트레이션 플랫폼
- 컨테이너를 쉽고 빠르게 배포 및 확장하고, 관리를 자동화 해주는 오픈소스 플랫폼
Kubernetes 의 특징
1) 자동화된 컨테이너 배포 및 스케일링
- 애플리케이션을 중단시키지 않고 업데이트 가능
- 오토스케일링을 통한 서버 자원의 효율적인 사용
2) 로드 밸런싱
- 하나의 서비스에 여러 개의 컨테이너 인스턴스가 있을 때, 들어오는 요청을 균등하게 분배하여 부하를 분산
3) 롤아웃 롤백
- 애플리케이션을 지속적으로 모니터링 하며, 어떤 노드나 컨테이너가 장애 발생시 자동으로 해당 컨테이너 복구
Kubernetes 기본 오브젝트
- Pod : 쿠버네티스에서 실행되는 최소 단위
- Namespace (ns) : 쿠버네티스 클러스터에서 사용되는 리소스 구분
- Volume : 파드가 사라져도 저장 가능한 디렉토리 제공
- Service : 파드들을 통해 실행되고 있는 애플리케이션 네트워크에 노출
그 외 오브젝트 (컨트롤러)
- Replica Set : 파드를 여러 개 복제하여 관리하는 오브젝트
- Deployment : 파드와 레플리카셋에 대한 선언적 업데이트 제공
- Ingress : 클러스터 외부에서 클러스터 내부 pod로 서비스 접근 시 필요
K9s
- 쿠버네티스 작업을 정말 쉽고 빠르고 안전하게 만들어주는 오픈 소스 명령줄 도구
- 터미널 기반으로 UI를 통해 kubectl 명렁어를 입력하지 않아도 직관적으로 작업 수행 가능
주요 사용법
기본 yaml 파일 구조
- apiVersion : 오브젝트를 생서하기 위해서 사용할 쿠버네티스 API 버전
- apps/v1 : Deployment, ReplicaSet, RollingUpdate 등
- v1 : Pod, Namespace, Service 등 ..
- kind : 생성할 object 타입
- Deployment, Service, Ingress, Pod, Namespace 등등..
- metadata : name , labels 등을 포함하는 기본적인 정보
- name, labels 등등
- 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.