SlideShare une entreprise Scribd logo
1  sur  36
쿠버네티스 소개
게임클라우드개발팀
최용호
쿠버네티스의 등장
• 사용자들은 무정지 배포를 원함
• 수시로 배포가 가능해야함
• 컨테이너화가 되어야 빠르게 다운타임 없이 배포가 가능해짐
• 쿠버네티스는 프로덕션에도 충분히 사용 가능
쿠버네티스란?
● 어플리케이션을 배포하고 확장 및 관리를 자동화
● 컨테이너 오케스트레이션
● 구글에서 관리하는 대규모 오픈 소스 프로젝트
● 주요 클라우드 공급자인 AWS, GCP, Azure 에서 쿠버네티스를
기반으로 한 서비스 제공
● 마이크로 서비스에 이상적
○ 가상 머신을 사용하여 마이크로 서비스를 배포할 때처럼 많은
오버헤드가 발생하지 않음
컨테이너 오케스트레이션이란?
● 컨테이너 배포 관리를 의미
○ 여러 컨테이너를 배포하고 관리하는 프로세스를 최적화 하는 것이
목적
● 오케스트레이션 기능
○ 프로비저닝 : 필요시 시스템을 즉시 사용할 수 있도록 시스템 자원을
미리 할당, 배치, 배포 상태로 준비해두는 것 (여기서는 컨테이너를
통해 이를 수행)
○ 구성 스크립트 : 특정 어플리케이션 구성 정보를 컨테이너에 로드
○ 모니터링 : 컨테이너 상태를 감시하고 로드밸런싱, 장애탐지,
오토스케일링
○ 서비스 탐색 : 컨테이너가 적합한 자원을 찾기 위해 서비스 탐색을
사용하고 외부로 노출
● 대표적으로 도커 스웜, 쿠버네티스, 아파치 메소스가 존재
쿠버네티스 클러스터
• 쿠버네티스가 시스템을 구성하는 다양한 업무를 실행하는데
사용
• 다수의 호스트 저장소와 네트워킹 자원의 집합
• 노드와 마스터를 아우르는 개념
• 최소 3개의 노드 사용 권장
• 도커 이미지를 배포할 수 있는 클러스터
• 쿠버네티스는 호스트들이 의존적이지 않는 구조로 구성
• 의존적이지 않기 때문에 클러스터의 어떤 호스트로든
배포가 되어도 상관 없음
쿠버네티스 클러스터 구성
마스터
• 클러스터를 관리
• 마스터의 구성
• API 서버
• 스케줄러
• 컨트롤 관리자
• 등등
• 마스터의 역할
• Pod 스케줄링 및 이벤트 처리
• 어플리케이션 실행 및 중지
• 어플리케이션 스케일링
• 어플리케이션 업데이트
노드
• 단일 호스트를 의미
• 물리 머신이 될 수도 있고 가상 머신이 될 수도 있음
• Pod를 실행
• kubelet과 kube proxy등 여러 쿠버네티스 컴포넌트를 실행
• 노드는 일반적으로 일하는 노드(과거의 미니온)와 마스터 노드로
구분
노드가 수행하는 것
• Kubelet
• 쿠버네티스 마스터와 노드 간의 통신을 담당
• 머신에서 동작하는 컨테이너들과 Pod들을 관리
• 마스터 밑의 하위 관리자 같은 느낌
• 컨테이너 런타임 (Docker Container)
• 실제 일하는 녀석들
• 마스터 = 본부장님, Kubelet은 팀장님, 컨테이너 런타임은 사원
미니큐브 (Minikube)
• 경량화된 쿠버네티스
• 로컬에서만 사용가능
• 하나의 VM 생성
• 하나의 노드만 사용가능
• Linux/Mac/Windows 지원
• 테스트용으로 좋음
Demo
https://kubernetes.io/docs/tutorials/kubernetes-basics/cluster-interactive/
쿠버네티스 배포
• 배포 설정을 만들어야함
• 배포 설정에는 컨테이너를 어떻게 만들고 업데이트를
수행할지에 대해 정의
• 어플리케이션 인스턴스가 만들어지면 쿠버네티스 Depolyment
Controller는 이 인스턴스를 지속적으로 모니터링
• 노드가 다운되거나 삭제되면 다른 노드에 배포함으로써 유지
• 자동화
Kubectl
• Kubectl을 사용해서 Deployment를 만들고 관리
• Kubectl은 쿠버네티스 API를 사용해서 클러스터와 상호작용
• 마스터와 소통
• Deploy 생성 시 필요 사항
• 컨테이너 이미지명
• 몇 개의 어플리케이션을 만들지
• 스케일은 어떻게 할지
• 업데이트는 어떻게 할지
Demo
https://kubernetes.io/docs/tutorials/kubernetes-basics/deploy-interactive/
Pod
● 쿠버네티스의 작업 단위
● 한개 또는 여러 개의 컨테이너를 포함
● 같은 노드에 포함된 포드들은 함께 스케줄링
● Pod 단위로 IP 주소가 할당되고 포트 공간이 동일
● 필요에 따라 버리고 교체할 수 있으며 짧은 수명을 가지는
일시적인 요소
● 각 Pod는 고유한 ID를 가지고 있으므로 필요시 분별 가능
Node 내 Pod 구성
노드가 죽으면?
• 워커 노드가 죽으면 그 안에서 동작하는 Pod들도 함께 죽음
• 외부에서는 Pod가 제거되었는지 새로 생성되었는지 모르는
상태로 정상적인 서비스를 제공받아야함
• ReplicationController는 이를 감지하여 어플리케이션을
유지하기 위해 다른 노드에 Pod들을 생성하여 복구
Kubectl을 통한 트러블슈팅
• Kubectl get : 리소스 리스트
• Kubectl describe : 리소스에 대한 자세한 정보
• Kubectl logs : pod안의 컨테이너로부터의 로그 출력
• Kubectl exec : pod 안의 컨테이너에 명령 실행
Demo
https://kubernetes.io/docs/tutorials/kubernetes-basics/explore-interactive/
서비스
● 사용자가 외부 자원이나 가상 IP를 통해 서비스에 접근 가능
● OSI 7계층의 3계층(TCP/UDP)에서 동작
● 서비스에 속한 Pod들은 LabelSelect로 판단됨
● 지금까지의 Pod, Node로는 외부에서의 접속이 불가능
● Proxy를 통해서만 접근 가능
● 서비스를 사용해서 쿠버네티스 클러스터 외부로 어플리케이션을 노출
● 로드밸런싱 및 서비스 디스커버리 수행
라벨 (label)
● key-value 쌍의 객체 집합이며 객체의 식별에 사용
● Pod를 그룹화할 때 사용
● 복제 컨트롤러(Replication Controller), 복제 집합(Replica set),
동적 객체 그룹에서 동작
● 라벨 설계의 제한 사항
○ 반드시 고유한 키를 가져야함
○ 접두사와 이름 두 부분으로 구성
■ 접두사는 선택사항
■ 접두사는 슬래시로 이름과 구분
■ 이름은 필수사항
라벨 셀렉터
● 라벨을 기반으로 객체를 선택
● 동일한 라벨이 부여된 객체들을 연산자를 통해 일괄 선택 가능
○ ex) 라벨 키가 role이고 값이 webserver인 객체 선택
■ role = webserver
● = 또는 ==, != 을 통해 라벨에 따른 객체 선택
■ 복수의 조건은 쉼표로 구분
● role = webserver, application != foo
■ 집합은 다양한 값을 기반으로 객체 선택
● role in (webserver, backend)
서비스와 라벨
서비스와 라벨
서비스에서 IP 노출 방법
● ClusterIP : 클러스터 내부에서만 접근 가능
● NodePort : NAT를 사용하여 각 노드의 Port를 오픈
● LoadBalancer : External 로드밸런서를 만들어서 고정된 외부
IP 배정
● ExternalName : DNS 기능을 통해 도메인명(CNAME)으로
외부에서 접근
복제 컨트롤러와 복제 집합
● 라벨 셀렉터로 식별된 Pod 그룹을 관리하고, 특정 수만큼 실행
중인지 항상 확인
● 복제 컨트롤러는 이름의 동일 여부로 구성원을 확인
● 복제 집합은 집합 기반 선택을 사용
● 지정한 수의 Pod가 항상 실행되도록 보장
○ 문제가 발생하여 Pod가 일정 수준 이하로 내려가면 쿠버네티스는
새로운 인스턴스를 시작
Demo
https://kubernetes.io/docs/tutorials/kubernetes-basics/expose-interactive/
스케일링
● kubectl을 사용해서 스케일링
● 트래픽이 증가하면 자동으로 스케일 아웃 수행
● 마스터가 알아서 노드에 Pod 확장 및 축소
Demo
https://kubernetes.io/docs/tutorials/kubernetes-basics/scale-interactive/
롤링 업데이트
• Kubectl을 사용해서 수행
• 무정지 배포
• 점진적으로 Pod를 하나씩 업데이트
Demo
https://kubernetes.io/docs/tutorials/kubernetes-basics/update-interactive/
감사합니다.

Contenu connexe

Tendances

MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?VMware Tanzu Korea
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
Kubernetes - introduction
Kubernetes - introductionKubernetes - introduction
Kubernetes - introductionSparkbit
 
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdfssuserf8b8bd1
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 introTerry Cho
 
Kubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideKubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideBytemark
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes IntroductionPeng Xiao
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes IntroductionEric Gustafson
 
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
Kubernetes
KubernetesKubernetes
Kuberneteserialc_w
 
[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개
[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개
[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개OpenStack Korea Community
 
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - WebinarNAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
Understanding Kubernetes
Understanding KubernetesUnderstanding Kubernetes
Understanding KubernetesTu Pham
 
Kubernetes: A Short Introduction (2019)
Kubernetes: A Short Introduction (2019)Kubernetes: A Short Introduction (2019)
Kubernetes: A Short Introduction (2019)Megan O'Keefe
 

Tendances (20)

Autoscaling in Kubernetes
Autoscaling in KubernetesAutoscaling in Kubernetes
Autoscaling in Kubernetes
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 
Kubernetes - introduction
Kubernetes - introductionKubernetes - introduction
Kubernetes - introduction
 
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 intro
 
AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기
 
Kubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory GuideKubernetes for Beginners: An Introductory Guide
Kubernetes for Beginners: An Introductory Guide
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개
[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개
[OpenStack Days Korea 2016] Track2 - 아리스타 OpenStack 연동 및 CloudVision 솔루션 소개
 
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
 
Understanding Kubernetes
Understanding KubernetesUnderstanding Kubernetes
Understanding Kubernetes
 
Kubernetes: A Short Introduction (2019)
Kubernetes: A Short Introduction (2019)Kubernetes: A Short Introduction (2019)
Kubernetes: A Short Introduction (2019)
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 

Similaire à [넥슨] kubernetes 소개 (2018)

[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...OpenStack Korea Community
 
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 KubernetesTommy Lee
 
세션3_데보션테크데이_gitopsinfra_v1.1.pdf
세션3_데보션테크데이_gitopsinfra_v1.1.pdf세션3_데보션테크데이_gitopsinfra_v1.1.pdf
세션3_데보션테크데이_gitopsinfra_v1.1.pdfJaesuk Ahn
 
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기Hyperledger Korea User Group
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호용호 최
 
[제3회 스포카콘] Kubernetes in Spoqa
[제3회 스포카콘] Kubernetes in Spoqa[제3회 스포카콘] Kubernetes in Spoqa
[제3회 스포카콘] Kubernetes in SpoqaKangwook Lee
 
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 애플리케이션 실행환경 통합 관리 (CB-Ladybug)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 애플리케이션 실행환경 통합 관리 (CB-Ladybug)Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 애플리케이션 실행환경 통합 관리 (CB-Ladybug)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 애플리케이션 실행환경 통합 관리 (CB-Ladybug)Cloud-Barista Community
 
Backend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker PrincipalBackend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker PrincipalKyunghun Jeon
 
Kubernetes in action
Kubernetes in actionKubernetes in action
Kubernetes in actionBingu Shim
 
An overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demoAn overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demoGwan-Taek Lee
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestrationNAVER D2
 
MySQL operator for_kubernetes
MySQL operator for_kubernetesMySQL operator for_kubernetes
MySQL operator for_kubernetesrockplace
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without DockerfileWon-Chon Jung
 
Toward kubernetes native data center
Toward kubernetes native data centerToward kubernetes native data center
Toward kubernetes native data center어형 이
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8sHyoungjun Kim
 
Devfair kubernetes 101
Devfair kubernetes 101Devfair kubernetes 101
Devfair kubernetes 101Daegwon Kim
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetesNAVER D2
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideChan Shik Lim
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos uEngine Solutions
 

Similaire à [넥슨] kubernetes 소개 (2018) (20)

[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
 
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
 
세션3_데보션테크데이_gitopsinfra_v1.1.pdf
세션3_데보션테크데이_gitopsinfra_v1.1.pdf세션3_데보션테크데이_gitopsinfra_v1.1.pdf
세션3_데보션테크데이_gitopsinfra_v1.1.pdf
 
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
[제3회 스포카콘] Kubernetes in Spoqa
[제3회 스포카콘] Kubernetes in Spoqa[제3회 스포카콘] Kubernetes in Spoqa
[제3회 스포카콘] Kubernetes in Spoqa
 
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 애플리케이션 실행환경 통합 관리 (CB-Ladybug)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 애플리케이션 실행환경 통합 관리 (CB-Ladybug)Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 애플리케이션 실행환경 통합 관리 (CB-Ladybug)
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 애플리케이션 실행환경 통합 관리 (CB-Ladybug)
 
Backend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker PrincipalBackend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker Principal
 
Kubernetes in action
Kubernetes in actionKubernetes in action
Kubernetes in action
 
An overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demoAn overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demo
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestration
 
MySQL operator for_kubernetes
MySQL operator for_kubernetesMySQL operator for_kubernetes
MySQL operator for_kubernetes
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without Dockerfile
 
Toward kubernetes native data center
Toward kubernetes native data centerToward kubernetes native data center
Toward kubernetes native data center
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8s
 
Devfair kubernetes 101
Devfair kubernetes 101Devfair kubernetes 101
Devfair kubernetes 101
 
Kubernetes
Kubernetes Kubernetes
Kubernetes
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical Guide
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 

Plus de 용호 최

작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스
작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스
작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스용호 최
 
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD용호 최
 
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처용호 최
 
빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호
빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호
빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호용호 최
 
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호용호 최
 
개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호용호 최
 
Terraform 입문 - 최용호
Terraform 입문 - 최용호Terraform 입문 - 최용호
Terraform 입문 - 최용호용호 최
 
ElasticStack으로 다양한 수집 아키텍처 구성하기
ElasticStack으로 다양한 수집 아키텍처 구성하기ElasticStack으로 다양한 수집 아키텍처 구성하기
ElasticStack으로 다양한 수집 아키텍처 구성하기용호 최
 
데이터 수집부터 시각화까지
데이터 수집부터 시각화까지데이터 수집부터 시각화까지
데이터 수집부터 시각화까지용호 최
 
[For.D] 개발자 경력을 위한 소프트 스킬 (2019)
[For.D] 개발자 경력을 위한 소프트 스킬 (2019)[For.D] 개발자 경력을 위한 소프트 스킬 (2019)
[For.D] 개발자 경력을 위한 소프트 스킬 (2019)용호 최
 
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)용호 최
 
[자바카페] Elasticsearch Aggregation (2018)
[자바카페] Elasticsearch Aggregation (2018)[자바카페] Elasticsearch Aggregation (2018)
[자바카페] Elasticsearch Aggregation (2018)용호 최
 
[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP
[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP
[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP용호 최
 
[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기
[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기
[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기용호 최
 
[넥슨토크] 모바일게임 하이브 런칭기 (2018)
[넥슨토크] 모바일게임 하이브 런칭기 (2018)[넥슨토크] 모바일게임 하이브 런칭기 (2018)
[넥슨토크] 모바일게임 하이브 런칭기 (2018)용호 최
 
[자바카페] Infra CI (2018)
[자바카페] Infra CI (2018)[자바카페] Infra CI (2018)
[자바카페] Infra CI (2018)용호 최
 
[AWSKRUG] 모바일게임 하이브 런칭기 (2018)
[AWSKRUG] 모바일게임 하이브 런칭기 (2018)[AWSKRUG] 모바일게임 하이브 런칭기 (2018)
[AWSKRUG] 모바일게임 하이브 런칭기 (2018)용호 최
 
[자바카페] 람다 아키텍처, 더 깊이 살펴보기
[자바카페] 람다 아키텍처, 더 깊이 살펴보기[자바카페] 람다 아키텍처, 더 깊이 살펴보기
[자바카페] 람다 아키텍처, 더 깊이 살펴보기용호 최
 
[자바카페] 람다 일괄처리 계층 사례
[자바카페] 람다 일괄처리 계층 사례[자바카페] 람다 일괄처리 계층 사례
[자바카페] 람다 일괄처리 계층 사례용호 최
 
[자바카페] 람다 일괄처리 계층
[자바카페] 람다 일괄처리 계층[자바카페] 람다 일괄처리 계층
[자바카페] 람다 일괄처리 계층용호 최
 

Plus de 용호 최 (20)

작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스
작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스
작업공간 - 나만을 위한 카페를 찾는 카페 유목민을 위한 서비스
 
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
 
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - 백엔드 아키텍처
 
빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호
빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호
빠르고 안정적인 게임 시장 진출을 위한 클라우드 전략 - 최용호
 
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
 
개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호
 
Terraform 입문 - 최용호
Terraform 입문 - 최용호Terraform 입문 - 최용호
Terraform 입문 - 최용호
 
ElasticStack으로 다양한 수집 아키텍처 구성하기
ElasticStack으로 다양한 수집 아키텍처 구성하기ElasticStack으로 다양한 수집 아키텍처 구성하기
ElasticStack으로 다양한 수집 아키텍처 구성하기
 
데이터 수집부터 시각화까지
데이터 수집부터 시각화까지데이터 수집부터 시각화까지
데이터 수집부터 시각화까지
 
[For.D] 개발자 경력을 위한 소프트 스킬 (2019)
[For.D] 개발자 경력을 위한 소프트 스킬 (2019)[For.D] 개발자 경력을 위한 소프트 스킬 (2019)
[For.D] 개발자 경력을 위한 소프트 스킬 (2019)
 
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
 
[자바카페] Elasticsearch Aggregation (2018)
[자바카페] Elasticsearch Aggregation (2018)[자바카페] Elasticsearch Aggregation (2018)
[자바카페] Elasticsearch Aggregation (2018)
 
[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP
[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP
[GCP Summit 2018] Kubernetes with Nginx and Elasticsearch on GCP
 
[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기
[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기
[AWS Summit 2018] 모바일 게임을 만들기 위한 AWS 고군분투기
 
[넥슨토크] 모바일게임 하이브 런칭기 (2018)
[넥슨토크] 모바일게임 하이브 런칭기 (2018)[넥슨토크] 모바일게임 하이브 런칭기 (2018)
[넥슨토크] 모바일게임 하이브 런칭기 (2018)
 
[자바카페] Infra CI (2018)
[자바카페] Infra CI (2018)[자바카페] Infra CI (2018)
[자바카페] Infra CI (2018)
 
[AWSKRUG] 모바일게임 하이브 런칭기 (2018)
[AWSKRUG] 모바일게임 하이브 런칭기 (2018)[AWSKRUG] 모바일게임 하이브 런칭기 (2018)
[AWSKRUG] 모바일게임 하이브 런칭기 (2018)
 
[자바카페] 람다 아키텍처, 더 깊이 살펴보기
[자바카페] 람다 아키텍처, 더 깊이 살펴보기[자바카페] 람다 아키텍처, 더 깊이 살펴보기
[자바카페] 람다 아키텍처, 더 깊이 살펴보기
 
[자바카페] 람다 일괄처리 계층 사례
[자바카페] 람다 일괄처리 계층 사례[자바카페] 람다 일괄처리 계층 사례
[자바카페] 람다 일괄처리 계층 사례
 
[자바카페] 람다 일괄처리 계층
[자바카페] 람다 일괄처리 계층[자바카페] 람다 일괄처리 계층
[자바카페] 람다 일괄처리 계층
 

[넥슨] kubernetes 소개 (2018)

  • 2. 쿠버네티스의 등장 • 사용자들은 무정지 배포를 원함 • 수시로 배포가 가능해야함 • 컨테이너화가 되어야 빠르게 다운타임 없이 배포가 가능해짐 • 쿠버네티스는 프로덕션에도 충분히 사용 가능
  • 3. 쿠버네티스란? ● 어플리케이션을 배포하고 확장 및 관리를 자동화 ● 컨테이너 오케스트레이션 ● 구글에서 관리하는 대규모 오픈 소스 프로젝트 ● 주요 클라우드 공급자인 AWS, GCP, Azure 에서 쿠버네티스를 기반으로 한 서비스 제공 ● 마이크로 서비스에 이상적 ○ 가상 머신을 사용하여 마이크로 서비스를 배포할 때처럼 많은 오버헤드가 발생하지 않음
  • 4. 컨테이너 오케스트레이션이란? ● 컨테이너 배포 관리를 의미 ○ 여러 컨테이너를 배포하고 관리하는 프로세스를 최적화 하는 것이 목적 ● 오케스트레이션 기능 ○ 프로비저닝 : 필요시 시스템을 즉시 사용할 수 있도록 시스템 자원을 미리 할당, 배치, 배포 상태로 준비해두는 것 (여기서는 컨테이너를 통해 이를 수행) ○ 구성 스크립트 : 특정 어플리케이션 구성 정보를 컨테이너에 로드 ○ 모니터링 : 컨테이너 상태를 감시하고 로드밸런싱, 장애탐지, 오토스케일링 ○ 서비스 탐색 : 컨테이너가 적합한 자원을 찾기 위해 서비스 탐색을 사용하고 외부로 노출 ● 대표적으로 도커 스웜, 쿠버네티스, 아파치 메소스가 존재
  • 5. 쿠버네티스 클러스터 • 쿠버네티스가 시스템을 구성하는 다양한 업무를 실행하는데 사용 • 다수의 호스트 저장소와 네트워킹 자원의 집합 • 노드와 마스터를 아우르는 개념 • 최소 3개의 노드 사용 권장 • 도커 이미지를 배포할 수 있는 클러스터 • 쿠버네티스는 호스트들이 의존적이지 않는 구조로 구성 • 의존적이지 않기 때문에 클러스터의 어떤 호스트로든 배포가 되어도 상관 없음
  • 7. 마스터 • 클러스터를 관리 • 마스터의 구성 • API 서버 • 스케줄러 • 컨트롤 관리자 • 등등 • 마스터의 역할 • Pod 스케줄링 및 이벤트 처리 • 어플리케이션 실행 및 중지 • 어플리케이션 스케일링 • 어플리케이션 업데이트
  • 8. 노드 • 단일 호스트를 의미 • 물리 머신이 될 수도 있고 가상 머신이 될 수도 있음 • Pod를 실행 • kubelet과 kube proxy등 여러 쿠버네티스 컴포넌트를 실행 • 노드는 일반적으로 일하는 노드(과거의 미니온)와 마스터 노드로 구분
  • 9. 노드가 수행하는 것 • Kubelet • 쿠버네티스 마스터와 노드 간의 통신을 담당 • 머신에서 동작하는 컨테이너들과 Pod들을 관리 • 마스터 밑의 하위 관리자 같은 느낌 • 컨테이너 런타임 (Docker Container) • 실제 일하는 녀석들 • 마스터 = 본부장님, Kubelet은 팀장님, 컨테이너 런타임은 사원
  • 10. 미니큐브 (Minikube) • 경량화된 쿠버네티스 • 로컬에서만 사용가능 • 하나의 VM 생성 • 하나의 노드만 사용가능 • Linux/Mac/Windows 지원 • 테스트용으로 좋음
  • 12. 쿠버네티스 배포 • 배포 설정을 만들어야함 • 배포 설정에는 컨테이너를 어떻게 만들고 업데이트를 수행할지에 대해 정의 • 어플리케이션 인스턴스가 만들어지면 쿠버네티스 Depolyment Controller는 이 인스턴스를 지속적으로 모니터링 • 노드가 다운되거나 삭제되면 다른 노드에 배포함으로써 유지 • 자동화
  • 13. Kubectl • Kubectl을 사용해서 Deployment를 만들고 관리 • Kubectl은 쿠버네티스 API를 사용해서 클러스터와 상호작용 • 마스터와 소통 • Deploy 생성 시 필요 사항 • 컨테이너 이미지명 • 몇 개의 어플리케이션을 만들지 • 스케일은 어떻게 할지 • 업데이트는 어떻게 할지
  • 15. Pod ● 쿠버네티스의 작업 단위 ● 한개 또는 여러 개의 컨테이너를 포함 ● 같은 노드에 포함된 포드들은 함께 스케줄링 ● Pod 단위로 IP 주소가 할당되고 포트 공간이 동일 ● 필요에 따라 버리고 교체할 수 있으며 짧은 수명을 가지는 일시적인 요소 ● 각 Pod는 고유한 ID를 가지고 있으므로 필요시 분별 가능
  • 16. Node 내 Pod 구성
  • 17. 노드가 죽으면? • 워커 노드가 죽으면 그 안에서 동작하는 Pod들도 함께 죽음 • 외부에서는 Pod가 제거되었는지 새로 생성되었는지 모르는 상태로 정상적인 서비스를 제공받아야함 • ReplicationController는 이를 감지하여 어플리케이션을 유지하기 위해 다른 노드에 Pod들을 생성하여 복구
  • 18. Kubectl을 통한 트러블슈팅 • Kubectl get : 리소스 리스트 • Kubectl describe : 리소스에 대한 자세한 정보 • Kubectl logs : pod안의 컨테이너로부터의 로그 출력 • Kubectl exec : pod 안의 컨테이너에 명령 실행
  • 20. 서비스 ● 사용자가 외부 자원이나 가상 IP를 통해 서비스에 접근 가능 ● OSI 7계층의 3계층(TCP/UDP)에서 동작 ● 서비스에 속한 Pod들은 LabelSelect로 판단됨 ● 지금까지의 Pod, Node로는 외부에서의 접속이 불가능 ● Proxy를 통해서만 접근 가능 ● 서비스를 사용해서 쿠버네티스 클러스터 외부로 어플리케이션을 노출 ● 로드밸런싱 및 서비스 디스커버리 수행
  • 21. 라벨 (label) ● key-value 쌍의 객체 집합이며 객체의 식별에 사용 ● Pod를 그룹화할 때 사용 ● 복제 컨트롤러(Replication Controller), 복제 집합(Replica set), 동적 객체 그룹에서 동작 ● 라벨 설계의 제한 사항 ○ 반드시 고유한 키를 가져야함 ○ 접두사와 이름 두 부분으로 구성 ■ 접두사는 선택사항 ■ 접두사는 슬래시로 이름과 구분 ■ 이름은 필수사항
  • 22. 라벨 셀렉터 ● 라벨을 기반으로 객체를 선택 ● 동일한 라벨이 부여된 객체들을 연산자를 통해 일괄 선택 가능 ○ ex) 라벨 키가 role이고 값이 webserver인 객체 선택 ■ role = webserver ● = 또는 ==, != 을 통해 라벨에 따른 객체 선택 ■ 복수의 조건은 쉼표로 구분 ● role = webserver, application != foo ■ 집합은 다양한 값을 기반으로 객체 선택 ● role in (webserver, backend)
  • 25. 서비스에서 IP 노출 방법 ● ClusterIP : 클러스터 내부에서만 접근 가능 ● NodePort : NAT를 사용하여 각 노드의 Port를 오픈 ● LoadBalancer : External 로드밸런서를 만들어서 고정된 외부 IP 배정 ● ExternalName : DNS 기능을 통해 도메인명(CNAME)으로 외부에서 접근
  • 26. 복제 컨트롤러와 복제 집합 ● 라벨 셀렉터로 식별된 Pod 그룹을 관리하고, 특정 수만큼 실행 중인지 항상 확인 ● 복제 컨트롤러는 이름의 동일 여부로 구성원을 확인 ● 복제 집합은 집합 기반 선택을 사용 ● 지정한 수의 Pod가 항상 실행되도록 보장 ○ 문제가 발생하여 Pod가 일정 수준 이하로 내려가면 쿠버네티스는 새로운 인스턴스를 시작
  • 28. 스케일링 ● kubectl을 사용해서 스케일링 ● 트래픽이 증가하면 자동으로 스케일 아웃 수행 ● 마스터가 알아서 노드에 Pod 확장 및 축소
  • 30. 롤링 업데이트 • Kubectl을 사용해서 수행 • 무정지 배포 • 점진적으로 Pod를 하나씩 업데이트
  • 31.
  • 32.
  • 33.
  • 34.