티스토리 뷰
Kubernetes의 이해
Kubernetes 설명ㅇ Kubernetes Fact 정리
- (과거)
-
1주일에 20억개의 컨테이너를 생성하는 google이 컨테이너 배포 시스템으로 사용하던 borg를 기반으로 만든 오픈소스
-
Google에서 만들어서 Cloud Native Computing Foundation(CNCF) 재단에 기부했다.
-
Kubernetes는 다른 컨테이너 오케스트레이션 도구보다 비교적 늦게 등장 (AWS ECS, 하시코프 Nomad ...)
-
- (현재)
-
쿠버네티스가 현재 컨테이너 오케스트레이션 도구의 표준이라고 볼 수 있다.
-
구글의 노하우와 강력한 확장성, MS, Red Hat, IBM 등 수 많은 기업의 참여가 쿠버네티스의 발전에 기여했다.
-
Rancher 2.0, Openshift(Redhat) 등은 Kubernetes 기반으로 플랫폼을 만들었고, Public Cloud 사업자들도 관리형 서비스를 내놓았다.
-
ㅇ Kubernetes 정의
-
쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼
-
kubernetes가 너무 길어서 k8s(케이에이츠) or kube(큐브) 로 줄여서 부름
ㅇ 기본 기능
-
상태관리 : 상태를 선언하고 선언한 상태를 유지 / 노드가 죽거나 컨테이너 응답이 없을 경우 자동으로 복구
-
스케줄링 : 클러스터의 여러 노드 중 조건에 맞는 노드를 찾아 컨테이너를 배치
-
클러스터 : 가상 네트워크를 통해 하나의 서버에 있는 것처럼 통신
-
서비스 디스커버리 : 서로 다른 서비스를 쉽게 찾고 통신할 수 있음
-
리소스 모니터링 : cAdvisor를 통한 리소스 모니터링
-
스케일링 : 리소스에 따라 자동으로 서비스를 조정함
-
RollOut/RollBack : 배포/롤백 및 버전 관리
ㅇ Kubernetes 특징
-
Eco Systemd
- CNCF Trail Map
- 단순한 컨테이너 플랫폼이 아닌 마이크로서비스, 클라우드 플랫폼을 지향하고 컨테이너로 이루어진 것들을 손쉽게 담고 관리할 수 있는 그릇 역할을 합니다. 서버리스, CI/CD, 머신러닝 등 다양한 기능이 쿠버네티스 플랫폼 위에서 동작
-
- 다양한 배포 방식
-
쿠버네티스는 위 5가지 배포 방식을 지원한다
-
Deployment : 새로운 버전의 애플리케이션을 다양한 전략으로 배포가 가능.
-
StatefulSets : 실행 순서를 보장하여 순서나 데이터가 중요한 경우에 사용
-
Damon Set : 로그나 모니터링 등 모든 노드에 설치가 필요한 경우에 사용
-
Job / CronJob : 배치성 작업에 사용
-
- 다양한 클라우드 지원
- Cloud Controller Manager(CCM)
- 클라우드 벤더에 특화된 코드와 쿠버네티스 코어가 상호 독립적으로 진화할 수 있도록 해주기 위해 생성
- 다른 마스터 컴포넌트와 함께 동작
- 클라우드 컨트롤러 매니저의 디자인은 새로운 클라우드 제공사업자가 플러그인을 이용하여 쉽게 쿠버네티스와 함께 통합하도록 허용해 주는 플러그인 메커니즘을 토대로 한다.
- Cloud Controller Manager(CCM)
- Namespace & Label
- Namespace와 Label을 통해서 논리적으로 구분하여 사용할 수 있습니다.
- CRD (Custom Resource Definition)
- Federation, Multi Cluster
ㅇ Kubernetes 단점
-
Kubernetes는 확실히 복잡하고 초반에 개념을 이해하기 어렵다.
ㅇ Kubernetes 기본 개념
-
Desired State
-
Current state : 현재상태
-
Desired state : 서버 관리자가 원하는 상태
-
서버 관리자가 원하는 상태로 현재상태를 변화시키는 과정
-
명령(imperative) vs 선언(declarative)
- 명령(imperative) : $ docker run # 명령
- 선언(declarative) : $ kubectl create # 상태 생성 (kubectl run도 있지만 잘 사용하지 않는다.)
ㅇ Kubernetes Object
-
종류 : Pod, Service, Volume, namespace
- POD
- 쿠버네티스에서 배포할 수 있는 가장 작은 단위
- Service
- 네트워크와 관련된 오브젝트로, Pod를 외부 네트워크와 연결해주고 여러 개의 Pod를 바라보는 내부 로드 밸런서를 생성할 때 사용한다. 내부 DNS에 서버스 이름을 도메인으로 등록하기 때문에 서비스 디스커버리 역할도 한다
- Replica Set
- Pod을 여러 개 복제하여 관리하는 오브젝트입니다.
- Pod를 생성하고 개수를 유지하려면 반드시 ReplicaSet을 사용해야 합니다.
- Object Spec - YAML
- 상태를 이런 YAML 파일로 관리한다.
apiVersion: v1
kind: Pod
metadata:
name: ubuntu-example
spec:
containers:
- name: ubuntu
image: ubuntu:latest
ㅇ Kubernetes 아키텍처
-
마스터 - 노드 구조
-
- Master - 마스터 서버는 다양한 모듈이 확장성을 고려하여 기능별로 쪼개져 있는 것이 특징. 관리자만 접근할 수 있게 보안 설정을 해야 하고 마스터 서버가 죽으면 클러스터를 관리할 수 없기 때문에 보통 3중화로 구성한다.
- Node - 노드 서버는 마스터 서버와 통신하면서 필요한 Pod를 생성한다.
- Kubelet - 명령 도구
-
- Master 구성 요소
-
- API server (kube-apiserver)
- 모든 요청을 처리하는 마스터의 핵심 모듈이다. desired state를 key-value 저장소에 저장하고, 저장된 상태를 조회하는 역할
- etcd
- 분산 데이터 저장소로 단순히 값을 저장하고 읽는 기능뿐만 아니라 watch 기능이 있어 어떤 상태가 변경되면 바로 체크하여 로직을 실행시킬 수 있다.
- 클러스터의 모든 설정, 상태 데이터는 여기 저장되므로 etcd만 잘 백업해두면 언제든지 클러스터를 복구할 수 있다.
- etcd는 api-server와만 통신
- kube-scheduler
- 스케줄러는 할당되지 않은 Pod를 필요한 자원,라벨에 따라 적절한 노드 서버에 할당해준다.
- kube-controller
- kubernetes에 있는 거의 모든 object 상태를 관리한다.
- 오브젝트별로 철저하게 분업화되어 Deployment는 ReplicaSet을 생성하고 ReplicaSet은 Pod를 생성하고 Pod는 스케줄러가 관리하는 식이다.
- API server (kube-apiserver)
-
Kubernetes 실습 내용
'3. 쿠버네티스의 모든것' 카테고리의 다른 글
nosql VS NEW sql 차이 (0) | 2020.04.06 |
---|---|
9탄!! 쿠버네티스 오토스케일링(kubernetes autoscaling) (0) | 2020.04.02 |
7탄!! 쿠버네티스에 pod 올리자! pod? 뭐에요? (0) | 2020.03.22 |
6탄 !! 도커 컴포즈 VS 쿠버네티스 컴포즈 (0) | 2020.03.22 |
#부록!! 쿠버네티스 트러블 슈팅!!~ (0) | 2020.03.21 |
- Total
- Today
- Yesterday
- 커널
- 설치하기(HP-UX)
- 튜닝
- K8s
- pod 상태
- 우분투
- 5.4.0.1072
- [오라클 튜닝] instance 튜닝2
- 여러서버 컨트롤
- (InstantClient) 설치하기(HP-UX)
- 트리이스
- MSA
- 코로나19
- [오라클 튜닝] sql 튜닝
- ORACLE 트러블 슈팅(성능 고도화 원리와 해법!)
- 쿠버네티스
- 오라클
- 스토리지 클레스
- 테라폼
- ubuntu
- 오라클 인스턴트클라이언트(InstantClient) 설치하기(HP-UX)
- 앤시블
- Oracle
- 버쳐박스
- 오라클 트러블 슈팅(성능 고도화 원리와 해법!)
- 오라클 홈디렉토리 copy 후 startup 에러
- 키알리
- directory copy 후 startup 에러
- startup 에러
- CVE 취약점 점검
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |