Kubernetes ?
2
• 컨테이너오케스트레이터 (실행 및 관리)
• 다양한 클라우드 및 베어 메탈 환경 지원
• Google Borg에서 시작되어 오픈소스화 됨
• 100% Go 언어로 작성
• 2015년 7월 V1.0이 CNCF
( Cloud Native Computing Foundation )에 기부
• 2018년 3월 6일 CNCF에서 졸업한 첫 번째 프로젝트
Kubernetes is an open-source system for automating deployment, scaling, and
management of containerized applications. https://kubernetes.io/
Kubernetes Architecture example
18
K8S클러스터
Master Node
API Server
Scheduler
Controller
Manager
kubectl
사용자
어드민/운영
자/개발자
etcd
Monitoring/Logging/Alert
Prometheus
Alert manager
Logstash
Elasticsearch
Grafana Kibana
Overlay network
Worker Node Worker Node Worker Node
Kube Proxy Kube Proxy Kube Proxy
POD
cAdvisor
POD POD
NodeJS POD Nginx
cAdvisorPOD
cAdvisor
Web
socket
Kubelet Kubelet Kubelet
Redis
Prometheu
s sidecar
19.
Scheduler
19
• Resource basedscheduling
limit
reservation
usage
Scheduler는 POD가 어떤 Node에 배치될지 결정 함
Node
2GB
2Core
Kubelet
+ cAdvisor
disktype = ssd
Labels
Resources
Disks
• nodeSelector or nodeAffinity based
scheduling
20.
Controller-manager
20
• Node Controller:
-노드의 상태 체크
• Replication Controller:
- 모든 POD가 지정된 갯수 만큼 구동되게 유지
• Endpoints Controller:
- Endpoint 객체 관리 ( Service 와 POD )
• Service Account & Token Controllers:
- 새로운 네임스페이스에 대한 기본 계정 및 API 접속 토큰 발행
21.
Service discovery
21
• POD는Kubernetes Master의 Scheduler에 의해서 배치되고 관리됨
• POD는 고정된 접속 정보 없이 언제든지 클러스터내 서버 들에서 이동 가능함
• POD에 요청을 하기 위한 메커니즘이 필요
Node
Pod 1
labels: app=MyApp
port: 9376
Pod 2
labels: app=MyApp
port: 9376
Pod 3
labels: app=MyApp
port: 9376
kube-proxy
Client
ServiceIP
(iptables)
apiserver
Node 1 Node 2 Node 3
S1 S2 S3 S4
Service Type
• ClusterIP : 클러스터 내부에서만 사용 가능한 주소 (외부에서 호출 불가)
• NodePort: 서비스 생성시 만들어진 포트로 접속가능 (클러스터의 NodeIP:NortPort)
• LoadBalancer : 외부 loadbalancer에 의해 접속 가능한 주소
Kubernetes Service
POD의 논리적 집합과 접속 할 수 있는 정책(Policy)이 정의되어 있는 객체
22.
Kubernetes 가치
22
• 전계층가용성
• 데이터센터, 서버, 네트워크 스토리지 장애에 영향 없는 무중단 서비스 구현
• 계층별 오류/고장에 대한 Fault Tolerant 방법 확인
• 워크로드 이식성
• 특정 데이터 센터, H/W에 종속되지 않는 어플리케이션 실행
• 동적 물리 서버 자원 증설하여 용량 확대
• 자동화 (수작업 최소화)
• 서비스 중지 없이 변경사항 적용 자동화
• 어플리케이션 배포 중 무중단 서비스 제공
• 어플리케이션 독립성
• 외부 부하(CPU, 네트워크)에 영향 받지 않는 실행환경 독립성 검증
• 서비스 탄력성
• CPU 사용률, 응담시간등의 정책에 의한 동적 스케일링
Editor's Notes
#2 Blockchain essentially a database, but traditional databases have central admins, which makes using them to house transaction data involving parties that don’t trust one another problematic and expensive. So, each entity maintains their own database, resulting in duplicate data and, if there are mistakes or malicious behavior, results in expensive and time consuming disputes over what the actual state of the truth is. This is particularly true when exchanging assets. And lots of different institutions recording different assets.