SlideShare a Scribd company logo
1 of 69
Download to read offline
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1
th
강인호
inho.kang@oracle.com
Kubernetes : from Beginner
to Advanced
2019.03.16
9th Oracle
Developer
Meetup
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Safe Harbor Statement
The following is intended to outline our general product direction. It is intended for
information purposes only, and may not be incorporated into any contract. It is not a
commitment to deliver any material, code, or functionality, and should not be relied upon
in making purchasing decisions. The development, release, and timing of any features or
functionality described for Oracle’s products remains at the sole discretion of Oracle.
Confidential – Oracle Internal/Restricted/Highly Restricted 2
§ .Net Developer
§ CBD, SOA Methodology Consulting
§ ITA/EA, ISP Consulting
§ Oracle Corp.
§ Middleware
§ Cloud Native Application, Container Native
§ Emerging Technology Team
§ k8s korea user group
innoshom@gamil.com
Confidential – Oracle Internal/Restricted/Highly Restricted 4
Kubernetes Concept
Confidential – Oracle Internal/Restricted/Highly Restricted 6
Kubernetes Concept
- Container
출처 : kubernetes in action
InsectChicken
출처 : kubernetes in action
kube-apiserver
§ 쿠버네티스 API를 노출하는 마스터 상의 컴포넌트. 쿠버네티스 컨트롤 플레인에 대한
프론트엔드이다.
§ 수평적 스케일(즉, 더 많은 인스턴스를 디플로이하는 스케일)을 위해 설계되었다.
etcd
§ 모든 클러스터 데이터를 담는 쿠버네티스 뒷단의 저장소로 사용되는 일관성·고가용성 키-값
저장소.
§ 쿠버네티스 클러스터 정보를 담고 있는 etcd 데이터에 대한 백업 계획은 필수이다.
kube-scheduler
§ 노드가 배정되지 않은 새로 생성된 파드를 감지하고 그것이 구동될 노드를 선택하는 마스터 상의
컴포넌트.
§ 스케줄링 결정을 위한 어카운트 내 요소들로는 개별 및 공동의 리소스 요건,
하드웨어/소프트웨어/정책 제약, 친밀 및 배격 명세, 데이터 지역성, 워크로드-간 간섭,
데드라인들이 포함된다.
kube-controller-manager
§ 컨트롤러를 구동하는 마스터 상의 컴포넌트.
§ 논리적으로, 각 컨트롤러는 개별 프로세스이지만, 복잡성을 낮추기 위해 모두 단일 바이너리로
컴파일되고 단일 프로세스 내에서 실행된다.
§ 노드 컨트롤러: 노드가 다운되었을 때 통지와 대응에 관한 책임을 가진다.
§ 레플리케이션 컨트롤러: 알맞는 수의 파드들을 유지시켜 주는 책임을 가진다.
§ 엔드포인트 컨트롤러: 서비스와 파드를 연결시킨다
kubelet
§ 클러스터의 각 노드에서 실행되는 에이전트로 컨테이너가 포드에서 실행
중인지 확인합니다.
§ kubelet은 다양한 메커니즘을 통해 제공되는 PodSpec을 가져 와서 해당
PodSpec에 설명 된 컨테이너가 실행 중이며 건강한 상태를 유지하도록
합니다 .
§ kubelet은 Kubernetes가 생성하지 않은 컨테이너를 관리하지 않습니다.
kube-proxy
§ kube-proxy는 호스트 상에서 네트워크 규칙을 유지하고 연결에 대한
포워딩을 수행함으로서 쿠버네티스 서비스 추상화가 가능하도록 해준다.
Container Runtime
§ 컨테이너 런타임은 컨테이너의 동작을 책임지는 소프트웨어다.
쿠버네티스는 몇몇의 런타임을 지원하는데 Docker, containerd, cri-
o, rktlet 그리고 Kubernetes CRI (Container Runtime Interface)를 구현한
모든 런타임이다.
OCI ?
Pod IP : 10.244.2.xx : Node2
Pod IP : 10.244.1.xx : Node1
K8snode1
cni0 : 10.244.1.1
Docker0 : 172.17.0.1
Enp0s3 : 10.0.2.15
Enp0s8 : 192.168.56.111
Flannel.1 : 10.244.1.0
Pod
vethxxxx
CNI0 : 10.244.1
VB Net
§ Components 상태
§ $kubectl get componentstatuses
§ Node 상태
§ $kubectl get node
§ Pod 상태
§ $kubectl get pod
§ YAML Descriptor
§ Kind
§ Label
§ Replicas
§ Selector
§ MatchLabels
§ MatchExpression
§ Template
§ Spec
§ Container
§ Image
§ ports
§ Components 상태
§ $kubectl get componentstatuses
§ Node 상태
§ $kubectl get node
§ Pod 상태
§ $kubectl get pod
kubectl create -f https://k8s.io/examples/controllers/nginx-deployment.yaml
kubectl get rs
kubectl get deployments
kubectl get pods --show-labels
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
kubectl get rs
kubectl scale --replicas=4 rs/nginx-deployment-75bd58f5c7
kubectl get pods --show-labels
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
kubectl get po ngnix-deployment-xxx –o yaml
kubectl edit po ngnix-deployment-xxx –o yaml
§ Equality-based requirement § Set-based requirement
Confidential – Oracle Internal/Restricted/Highly Restricted 27
Dive into
Kubernetes Internal
§ Deployment ->
ReplicatSet ->
§ Pods
Confidential – Oracle Internal/Restricted/Highly Restricted 30
Dive into
Kubernetes Internal
- Pod
https://kubernetes.io/ko/docs/concepts/workloads/pods/pod-overview/
컨테이너간의
Hostname,
Namespace
IPC
Volume
§ Namespace
§ Hostname
§ Process IDs
§ File System
§ Network interfaces
§ Inter-Process Communication (IPC)
§ Cgroup(Control Group)
§ CPU
§ RAM
§ Block I/O
§ Network I/O
Cgroups = limits how much you can use;
namespaces = limits what you can see (and therefore use)
https://www.ianlewis.org/en/what-are-kubernetes-pods-anyway
https://www.ianlewis.org/en/what-are-kubernetes-pods-anyway
§ Hostname
§ Network
§ IPC
§ Volume 공유
§ 특징
§ 단일 컨테이너 당 하나의 파드
§ 또는 다중 컨테이너 (Side - Car)
§ 스케일링의 단위
- Deployment
- StatefulSet
- DamonSet
https://www.ianlewis.org/en/what-are-kubernetes-pods-anyway
https://blog.2dal.com/2018/03/28/kubernetes-01-pod/
https://ssup2.github.io/theory_analysis/Kubernetes_Pod/?fbclid=IwAR1IZtyjusnW1iX8C1s1c5QpQMigmiH-Y7pFDZ3dwtL44TJ8esDZqp-lXHg
Pod가 실행될 때 pause 라는 컨테이너가
먼저 실행되어 pause컨테이너의
네임스페이스를 Pod내부의 모든
컨테이너가 공유
Pod 내부의 컨테이너 프로세스가 좀비
프로세스가 되지 않도록 pause 컨테이너는
PID 1로 설정되어 모든 컨테이너
프로세스의 부모 프로세스가 되고,
컨테이너 프로세스의 문제가 발생해
SIGHLD 시그널을 받으면 waitpid(해당
프로세스 ID)를 수행해서 중지된
컨테이너가 사용하던 자원을 회수하는
역할을 수행
§ Liveness probe
§ Readyness probe – p 152
Confidential – Oracle Internal/Restricted/Highly Restricted 38
Master Component
● Kube-apiserver
● Etcd
● Kube-controller-manager
● Cloud-controller-manager
● Kube-scheduler
§ Components 상태
§ $kubectl get componentstatuses
Confidential – Oracle Internal/Restricted/Highly Restricted 41
Master Component
- API Server
§ RESTful API를 통해서 kubectl와 같은 클라이언트와 통신
§ RESTful API를 통해서 클러스터 상태를 쿼리 및 수정(CRUD)하고
§ 그정보를 etcd에 저장한다.
§ 모든 클라이언트와 컴포넌트는 오직 API 서버를 통해서만 상호작용한다.
§ 클러스터에 대한 Gatekeeper 역할을 하며, 인증(Authen), 권한(Authoriz), 객체의 유효성
검사(Validation) and admission control
§ JSON 기반의 HTTP API 가 기본이지만, 클러스터 내부 통신은 Protocol Buffer 도 지원
§ API 버전 규칙
§ 리소스나 필드 수준보다는 API 레벨에서 버전을 선택했는데, API가 명료하고, 시스템 리소스와
행위 관점에서 일관성있으며, 더 이상 사용하지 않는 API나 실험적인 API에 접근을 제어할 수
있도록 하기 위함이다.
§ Alpha(ex: v1alpha1)
§ 버그가 있을 수 있고, 기능을 활성화하면 버그가 노출될 수 있다. 기본적으로 비활성화
§ Beta (ex: v2beta3)
§ 코드가 잘 테스트되었고, 안정하다. 기본적으로 활성화
§ Stable(ex: v2)
§ 안정화버전
§ 쿠버네티스 API를 보다 쉽게 확장하기 위해서, API 그룹을 구현했다. API 그룹은 REST 경로와 직렬화된
객체의 apiVersion 필드에 명시된다.
§ 현재 다양한 API 그룹이 사용되고 있다.
§ 핵심 그룹 또는 레거시 그룹 이라고 하는 그룹은 REST 경로 /api/v1에서 apiVersion: v1을 사용한다.
§ 이름이 있는 그룹은 REST 경로 /apis/$GROUP_NAME/$VERSION에 있으며 apiVersion:
$GROUP_NAME/$VERSION을 사용한다 (예: apiVersion: batch/v1). 지원되는 API 그룹 전체의
목록은 Kubernetes API reference에서 확인할 수 있다.
§ kubectl create -f xxx.yaml
à json Converting
§ 인증, 권한
§ 요청한 Client의 인증서(key, token)
를 검사
§ 요청된 액션을 수행할 권한 체크
§ Admission Control
§ 리소스 스펙에 누락된 것을
디폴트값이나 상속된 값으로 채움
§ Ex) AlwaysPullImages
NamespaceLifeCycle
§ Resource Validation
§ ETCD에 /Registry 밑에 계층구조로 저장
§ 1. API 그룹 조회
§ 2. 노드 리스트 조회
- http://127.0.0.1:8001/api/v1/nodes/
- http://127.0.0.1:8001/api/v1/nodes/k8snode1
Confidential – Oracle Internal/Restricted/Highly Restricted 50
Master Component
- Controller
kube-controller-manager
컨트롤러를 구동하는 마스터 상의 컴포넌트.
논리적으로, 각 컨트롤러는 개별 프로세스이지만, 복잡성을 낮추기 위해 모두 단일 바이너리로 컴파일되고
단일 프로세스 내에서 실행된다.
API 서버를 통해서 Shared State(ETCD)의 정보를 Control loop를 통해 감시(watch)하고 있다가 Current
State를 Desired State로 변경을 시도한다.
이들 컨트롤러는 다음을 포함한다. (약 26개)
•노드 컨트롤러: 노드가 다운되었을 때 통지와 대응에 관한 책임을 가진다.
•레플리케이션 컨트롤러: 시스템의 모든 레플리케이션 컨트롤러 오브젝트에 대해 알맞는 수의 파드들을
유지시켜 주는 책임을 가진다.
•엔드포인트 컨트롤러: 엔드포인트 오브젝트를 채운다(즉, 서비스와 파드를 연결시킨다.)
•서비스 어카운트 & 토큰 컨트롤러: 새로운 네임스페이스에 대한 기본 계정과 API 접근 토큰을 생성한다.
https://engineering.bitnami.com/articles/a-deep-dive-into-kubernetes-controllers.html
단순화한 Controller Loop
- Controller의 가장 중요한 역할을 Object의 current state와 desired state를 watch(감시)
- 이를 위해 API Server에 값을 조회하는데 매번 조화하는 것을 오버헤드가 있기 때문에 event을
전달해주는 client-go library의 “Listwatcher interface” 사용
https://blog.couchbase.com/kubernetes-operators-game-changer/
모든 컨트롤러는 API 서버를 통해 API 오브젝트를 가지고 동작한다.
컨트롤러는 Kubelet와 직접 통신하거나 어떤 종류의 명령도 내리지 않는다. 사실 kubelet의 존재하는지
조차 알지 못한다.
컨트롤러가 API 서버에서 리소스를 업데이드한 이후로 Kubelets와 쿠버네티스 서비스 프록시는 컨트롤러의
존재를 알지 못한다. 그리고 포드의 컨테이너를 회전시키고 네트워크 스토리지에 연결하거나 포드의 실제
로드 밸런싱을 설정한다.
컨트롤 플레인은 전체 시스템 동작의 한 부분을 처리하므로, 이런 동작이 쿠버네티스 클러스터에서 어떻게
펼쳐지는지 완전히 이해하려면 kubelet과 서비스 프록시가 하는 일을 이해할 필요가 있다.
Confidential – Oracle Internal/Restricted/Highly Restricted 55
Master Component
- Scheduler
So let’s see how the scheduling lifecycle really looks
like:
1.A pod is created and its desired state is saved
to etcd with the node name unfilled.
2.The scheduler somehow notices that there is a
new pod with no node bound.
3.It finds the node that best fits that pod.
4.Tells the apiserver to bind the pod to the node ->
saves the new desired state to etcd.
5.Kubelets are watching bound pods through
the apiserver, and start the containers on the
particular node.
https://banzaicloud.com/blog/k8s-custom-scheduler/
단순화한 Scheduler
- client-go library의 watch를 이용해 Event를 받는데 FieldSelector 에 spec.nodeName=’’
- 노드가 할당되지 않은 pod에만 관심
- Scheduling 에 관련된 Factor
Confidential – Oracle Internal/Restricted/Highly Restricted 58
Node Component
- ETCD
§ 쿠버네티스 클러스터의 저장소
§ 빠르고, 분산되며, 일관된 Key-Value Store
§ Raft Consensus algorithm
§ 클러스터는 fault-tolerant를 위해 3,5,7 과 같은
홀수개로 운영
§ 정족수(quorum)
Master 노드의 ETCD Pod로 들어가서 그안의 etcdctl 을 아래처럼 부르면 조회 가능
ETCDCTL_API = 3 etcdctl --cacert =/etc/kubernetes/pki/etcd/ca.crt --cert
=/etc/kubernetes/pki/etcd/peer.crt --key =/etc/kubernetes/pki/etcd/peer.key get
/registry/namespaces/default -w=json | jq .
•base64로 인코딩되어 있기 때문에 base64로 디코딩해야 읽을 수 있다.
•이때 합의 알고리즘 “raft_term”:14도 보인다.
Confidential – Oracle Internal/Restricted/Highly Restricted 61
Node Component
- Kubelet
§ Kubelet
§ Kube-proxy
§ Container runtime engine
Node에서 Agent 역할을 하며 하며 Pod의 Lifecycle 을 관리한다.
지속적으로 실행중인 컨테이너를 모니터링하고 상태와 이벤트, 리소스등을 API 서버에 보고 한다.
1) Pod Management
2) Contiainer Health Check
3) Contiainer Monitoring
- Resouce Usage from
cAdvisor
§ File path
§ URL HTTP Endpoint
§ API Server
kubelet의 구성 요소
§ Kubelet Server는 kube-apiserver 및 metrics-server와 같은
서비스 호출을위한 API를 제공합니다. 예를 들어, kubectl
exec는 Kubelet API / exec / {token}을 통해 컨테이너와 상호
작용해야합니다.
Read
Only API
kubelet의 구성 요소
§ 컨테이너 관리자는 CGroups, QoS, cpuset, device 등과 같은
컨테이너의 다양한 자원을 관리합니다.
§ 볼륨 관리자는 디스크의 포맷, 노드 로컬에 마운트,
마지막으로 마운트 경로를 컨테이너에 전달하는 것과 같이
컨테이너의 스토리지 볼륨을 관리합니다.
§ Eviction 관리자 는 자원이 충분하지 않을 때 우선 순위가
낮은 컨테이너의 퇴출 시키는 것과 같이 우선 순위가 높은
컨테이너의 운영을 보장하기 위해 컨테이너 퇴거를
담당합니다.
§ cAdvisor는 컨테이너에 Metrics를 제공합니다.
§ 메트릭 및 통계는 메트릭과 같은 컨테이너 및 노드에 대한
메트릭을 제공합니다. / stats / summary를 통해 추출 된 서버
메트릭은 HPA의 자동 확장을위한 기본 요소입니다.
§ 일반 런타임 관리자는 CRI 상호 작용 및 컨테이너 및 미러링
관리를 담당하는 컨테이너 런타임 관리자입니다.
Confidential – Oracle Internal/Restricted/Highly Restricted 67
Summary
• Introduction to k8s workshop : https://docs.google.com/presentation/d/1zrfVlE5r61ZNQrmX
Kx5gJmBcXnoa_WerHEnTxu5SMco/edit?usp=sharing
• K8s comprehensive Overview:
https://docs.google.com/presentation/d/1_xwLGM6U6EDK59s9Zny-
zWGGAbQk47cZPuBblU3Upus/edit#slide=id.g2c3848b8cd_0_158
• Kubernetes in Action
• A Crash Course on Container Orchestration & k8s :
https://speakerd.s3.amazonaws.com/presentations/cb7394a1868b479eb6723d120995f259/C
ontainer_Orchestration_-_Interop_ITX__17.pdf
• Pod :https://ssup2.github.io/theory_analysis/Kubernetes_Pod/?fbclid=IwAR1IZtyjusnW1iX8C1
s1c5QpQMigmiH-Y7pFDZ3dwtL44TJ8esDZqp-lXHg
• Pod : https://www.ianlewis.org/en/what-are-kubernetes-pods-anyway
• Pod : https://blog.2dal.com/2018/03/28/kubernetes-01-pod/
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 70

More Related Content

What's hot

introduce to spring cloud
introduce to spring cloudintroduce to spring cloud
introduce to spring cloudDoo Sung Eom
 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetesSangSun Park
 
Kubernetes in action
Kubernetes in actionKubernetes in action
Kubernetes in actionBingu Shim
 
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on KubernetesOpenStack Korea Community
 
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 KubernetesTommy Lee
 
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Nanha Park
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack CommunityOpen Source Consulting
 
[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
 
Kubernetes on Premise
Kubernetes on PremiseKubernetes on Premise
Kubernetes on PremiseChan Shik Lim
 
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystemSungjin Kang
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideChan Shik Lim
 
GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축철구 김
 
Oracle Blockchain_JaeHo Park_CTO
Oracle Blockchain_JaeHo Park_CTOOracle Blockchain_JaeHo Park_CTO
Oracle Blockchain_JaeHo Park_CTOOracle Korea
 
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewTaewan Kim
 
Cloud for Kubernetes : Session1
Cloud for Kubernetes : Session1Cloud for Kubernetes : Session1
Cloud for Kubernetes : Session1WhaTap Labs
 
Nexclipper_1905_summary_kor
Nexclipper_1905_summary_korNexclipper_1905_summary_kor
Nexclipper_1905_summary_korJinyong Kim
 
JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop rockplace
 
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹InfraEngineer
 

What's hot (20)

introduce to spring cloud
introduce to spring cloudintroduce to spring cloud
introduce to spring cloud
 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetes
 
Kubernetes in action
Kubernetes in actionKubernetes in action
Kubernetes in action
 
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
 
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
 
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
Deview 2013 :: Backend PaaS, CloudFoundry 뽀개기
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
 
Docker Container
Docker ContainerDocker Container
Docker Container
 
[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 ...
 
Kubernetes on Premise
Kubernetes on PremiseKubernetes on Premise
Kubernetes on Premise
 
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
[OpenStack Day in Korea] 15분만에 구축하는 오픈스택 기반 크라우드 솔루션: HP CloudSystem
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical Guide
 
GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축
 
Oracle Blockchain_JaeHo Park_CTO
Oracle Blockchain_JaeHo Park_CTOOracle Blockchain_JaeHo Park_CTO
Oracle Blockchain_JaeHo Park_CTO
 
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker Overview
 
Cloud for Kubernetes : Session1
Cloud for Kubernetes : Session1Cloud for Kubernetes : Session1
Cloud for Kubernetes : Session1
 
Nexclipper_1905_summary_kor
Nexclipper_1905_summary_korNexclipper_1905_summary_kor
Nexclipper_1905_summary_kor
 
JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop
 
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
 

Similar to kubernetes from beginner to advanced

클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - WebinarNAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기Hyperledger Korea User Group
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석Tommy Lee
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
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
 
모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)Eunwoo Cho
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without DockerfileWon-Chon Jung
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestrationNAVER D2
 
Ch7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and APICh7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and APIHongmin Park
 
Devfair kubernetes 101
Devfair kubernetes 101Devfair kubernetes 101
Devfair kubernetes 101Daegwon Kim
 
MySQL operator for_kubernetes
MySQL operator for_kubernetesMySQL operator for_kubernetes
MySQL operator for_kubernetesrockplace
 
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
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 rockplace
 
Toward kubernetes native data center
Toward kubernetes native data centerToward kubernetes native data center
Toward kubernetes native data center어형 이
 
Provisioning Dedicated Game Server on Kubernetes Cluster
Provisioning Dedicated Game Server on Kubernetes ClusterProvisioning Dedicated Game Server on Kubernetes Cluster
Provisioning Dedicated Game Server on Kubernetes ClusterJinwoong Kim
 
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...OpenStack Korea Community
 

Similar to kubernetes from beginner to advanced (20)

클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
OpenStack Swift Debugging
OpenStack Swift DebuggingOpenStack Swift Debugging
OpenStack Swift Debugging
 
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
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
 
1.intro to k8s
1.intro to k8s1.intro to k8s
1.intro to k8s
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without Dockerfile
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestration
 
Ch7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and APICh7,8. Configmaps, Secrets and API
Ch7,8. Configmaps, Secrets and API
 
Devfair kubernetes 101
Devfair kubernetes 101Devfair kubernetes 101
Devfair kubernetes 101
 
MySQL operator for_kubernetes
MySQL operator for_kubernetesMySQL operator for_kubernetes
MySQL operator for_kubernetes
 
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
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성
 
Toward kubernetes native data center
Toward kubernetes native data centerToward kubernetes native data center
Toward kubernetes native data center
 
Provisioning Dedicated Game Server on Kubernetes Cluster
Provisioning Dedicated Game Server on Kubernetes ClusterProvisioning Dedicated Game Server on Kubernetes Cluster
Provisioning Dedicated Game Server on Kubernetes Cluster
 
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
 

More from Oracle Korea

Oracle Blockchain Platform_Wonjo Yoo
Oracle Blockchain Platform_Wonjo YooOracle Blockchain Platform_Wonjo Yoo
Oracle Blockchain Platform_Wonjo YooOracle Korea
 
Oracle cloud data interface
Oracle cloud data interfaceOracle cloud data interface
Oracle cloud data interfaceOracle Korea
 
On premise db & cloud database
On premise db & cloud databaseOn premise db & cloud database
On premise db & cloud databaseOracle Korea
 
Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoringOracle Korea
 
Opentracing jaeger
Opentracing jaegerOpentracing jaeger
Opentracing jaegerOracle Korea
 
Which Questions We Should Have
Which Questions We Should HaveWhich Questions We Should Have
Which Questions We Should HaveOracle Korea
 
Enterprise Postgres
Enterprise PostgresEnterprise Postgres
Enterprise PostgresOracle Korea
 
MySQL Document Store를 활용한 NoSQL 개발
MySQL Document Store를 활용한 NoSQL 개발MySQL Document Store를 활용한 NoSQL 개발
MySQL Document Store를 활용한 NoSQL 개발Oracle Korea
 
API Design Principles Essential 
API Design Principles Essential API Design Principles Essential 
API Design Principles Essential Oracle Korea
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSAOracle Korea
 
CI/CD 기반의 Microservice 개발
 CI/CD 기반의 Microservice 개발 CI/CD 기반의 Microservice 개발
CI/CD 기반의 Microservice 개발Oracle Korea
 
Cloud Native 자바 플랫폼: Graalvm Overview
Cloud Native 자바 플랫폼: Graalvm OverviewCloud Native 자바 플랫폼: Graalvm Overview
Cloud Native 자바 플랫폼: Graalvm OverviewOracle Korea
 
Eclipse MicroProfile 과 Microservice Java framework – Helidon
Eclipse MicroProfile 과 Microservice Java framework – HelidonEclipse MicroProfile 과 Microservice Java framework – Helidon
Eclipse MicroProfile 과 Microservice Java framework – HelidonOracle Korea
 
times ten in-memory database for extreme performance
times ten in-memory database for extreme performancetimes ten in-memory database for extreme performance
times ten in-memory database for extreme performanceOracle Korea
 
[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자Oracle Korea
 
[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub Service
[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub Service[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub Service
[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub ServiceOracle Korea
 
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습Oracle Korea
 
[Main Session] 보안을 고려한 애플리케이션 개발 공정 및 실무적 수행 방법 소개
[Main Session] 보안을 고려한 애플리케이션 개발 공정 및 실무적 수행 방법 소개 [Main Session] 보안을 고려한 애플리케이션 개발 공정 및 실무적 수행 방법 소개
[Main Session] 보안을 고려한 애플리케이션 개발 공정 및 실무적 수행 방법 소개 Oracle Korea
 

More from Oracle Korea (20)

Oracle Blockchain Platform_Wonjo Yoo
Oracle Blockchain Platform_Wonjo YooOracle Blockchain Platform_Wonjo Yoo
Oracle Blockchain Platform_Wonjo Yoo
 
Oracle cloud data interface
Oracle cloud data interfaceOracle cloud data interface
Oracle cloud data interface
 
On premise db & cloud database
On premise db & cloud databaseOn premise db & cloud database
On premise db & cloud database
 
Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoring
 
Opentracing jaeger
Opentracing jaegerOpentracing jaeger
Opentracing jaeger
 
Which Questions We Should Have
Which Questions We Should HaveWhich Questions We Should Have
Which Questions We Should Have
 
Oracle NoSQL
Oracle NoSQLOracle NoSQL
Oracle NoSQL
 
Enterprise Postgres
Enterprise PostgresEnterprise Postgres
Enterprise Postgres
 
MySQL Document Store를 활용한 NoSQL 개발
MySQL Document Store를 활용한 NoSQL 개발MySQL Document Store를 활용한 NoSQL 개발
MySQL Document Store를 활용한 NoSQL 개발
 
API Design Principles Essential 
API Design Principles Essential API Design Principles Essential 
API Design Principles Essential 
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSA
 
CI/CD 기반의 Microservice 개발
 CI/CD 기반의 Microservice 개발 CI/CD 기반의 Microservice 개발
CI/CD 기반의 Microservice 개발
 
OpenJDK & Graalvm
OpenJDK & GraalvmOpenJDK & Graalvm
OpenJDK & Graalvm
 
Cloud Native 자바 플랫폼: Graalvm Overview
Cloud Native 자바 플랫폼: Graalvm OverviewCloud Native 자바 플랫폼: Graalvm Overview
Cloud Native 자바 플랫폼: Graalvm Overview
 
Eclipse MicroProfile 과 Microservice Java framework – Helidon
Eclipse MicroProfile 과 Microservice Java framework – HelidonEclipse MicroProfile 과 Microservice Java framework – Helidon
Eclipse MicroProfile 과 Microservice Java framework – Helidon
 
times ten in-memory database for extreme performance
times ten in-memory database for extreme performancetimes ten in-memory database for extreme performance
times ten in-memory database for extreme performance
 
[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자[Main Session] 카프카, 데이터 플랫폼의 최강자
[Main Session] 카프카, 데이터 플랫폼의 최강자
 
[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub Service
[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub Service[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub Service
[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub Service
 
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
 
[Main Session] 보안을 고려한 애플리케이션 개발 공정 및 실무적 수행 방법 소개
[Main Session] 보안을 고려한 애플리케이션 개발 공정 및 실무적 수행 방법 소개 [Main Session] 보안을 고려한 애플리케이션 개발 공정 및 실무적 수행 방법 소개
[Main Session] 보안을 고려한 애플리케이션 개발 공정 및 실무적 수행 방법 소개
 

Recently uploaded

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 

Recently uploaded (6)

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 

kubernetes from beginner to advanced

  • 1. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 1 th 강인호 inho.kang@oracle.com Kubernetes : from Beginner to Advanced 2019.03.16 9th Oracle Developer Meetup
  • 2. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. Confidential – Oracle Internal/Restricted/Highly Restricted 2
  • 3. § .Net Developer § CBD, SOA Methodology Consulting § ITA/EA, ISP Consulting § Oracle Corp. § Middleware § Cloud Native Application, Container Native § Emerging Technology Team § k8s korea user group innoshom@gamil.com
  • 4. Confidential – Oracle Internal/Restricted/Highly Restricted 4 Kubernetes Concept
  • 5.
  • 6. Confidential – Oracle Internal/Restricted/Highly Restricted 6 Kubernetes Concept - Container
  • 7.
  • 10.
  • 11.
  • 12.
  • 13. 출처 : kubernetes in action
  • 14.
  • 15. kube-apiserver § 쿠버네티스 API를 노출하는 마스터 상의 컴포넌트. 쿠버네티스 컨트롤 플레인에 대한 프론트엔드이다. § 수평적 스케일(즉, 더 많은 인스턴스를 디플로이하는 스케일)을 위해 설계되었다. etcd § 모든 클러스터 데이터를 담는 쿠버네티스 뒷단의 저장소로 사용되는 일관성·고가용성 키-값 저장소. § 쿠버네티스 클러스터 정보를 담고 있는 etcd 데이터에 대한 백업 계획은 필수이다. kube-scheduler § 노드가 배정되지 않은 새로 생성된 파드를 감지하고 그것이 구동될 노드를 선택하는 마스터 상의 컴포넌트. § 스케줄링 결정을 위한 어카운트 내 요소들로는 개별 및 공동의 리소스 요건, 하드웨어/소프트웨어/정책 제약, 친밀 및 배격 명세, 데이터 지역성, 워크로드-간 간섭, 데드라인들이 포함된다. kube-controller-manager § 컨트롤러를 구동하는 마스터 상의 컴포넌트. § 논리적으로, 각 컨트롤러는 개별 프로세스이지만, 복잡성을 낮추기 위해 모두 단일 바이너리로 컴파일되고 단일 프로세스 내에서 실행된다. § 노드 컨트롤러: 노드가 다운되었을 때 통지와 대응에 관한 책임을 가진다. § 레플리케이션 컨트롤러: 알맞는 수의 파드들을 유지시켜 주는 책임을 가진다. § 엔드포인트 컨트롤러: 서비스와 파드를 연결시킨다
  • 16. kubelet § 클러스터의 각 노드에서 실행되는 에이전트로 컨테이너가 포드에서 실행 중인지 확인합니다. § kubelet은 다양한 메커니즘을 통해 제공되는 PodSpec을 가져 와서 해당 PodSpec에 설명 된 컨테이너가 실행 중이며 건강한 상태를 유지하도록 합니다 . § kubelet은 Kubernetes가 생성하지 않은 컨테이너를 관리하지 않습니다. kube-proxy § kube-proxy는 호스트 상에서 네트워크 규칙을 유지하고 연결에 대한 포워딩을 수행함으로서 쿠버네티스 서비스 추상화가 가능하도록 해준다. Container Runtime § 컨테이너 런타임은 컨테이너의 동작을 책임지는 소프트웨어다. 쿠버네티스는 몇몇의 런타임을 지원하는데 Docker, containerd, cri- o, rktlet 그리고 Kubernetes CRI (Container Runtime Interface)를 구현한 모든 런타임이다.
  • 17. OCI ?
  • 18. Pod IP : 10.244.2.xx : Node2 Pod IP : 10.244.1.xx : Node1 K8snode1 cni0 : 10.244.1.1 Docker0 : 172.17.0.1 Enp0s3 : 10.0.2.15 Enp0s8 : 192.168.56.111 Flannel.1 : 10.244.1.0 Pod vethxxxx CNI0 : 10.244.1 VB Net
  • 19. § Components 상태 § $kubectl get componentstatuses § Node 상태 § $kubectl get node § Pod 상태 § $kubectl get pod
  • 20. § YAML Descriptor § Kind § Label § Replicas § Selector § MatchLabels § MatchExpression § Template § Spec § Container § Image § ports § Components 상태 § $kubectl get componentstatuses § Node 상태 § $kubectl get node § Pod 상태 § $kubectl get pod
  • 21. kubectl create -f https://k8s.io/examples/controllers/nginx-deployment.yaml kubectl get rs kubectl get deployments kubectl get pods --show-labels https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
  • 22. kubectl get rs kubectl scale --replicas=4 rs/nginx-deployment-75bd58f5c7 kubectl get pods --show-labels https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ kubectl get po ngnix-deployment-xxx –o yaml kubectl edit po ngnix-deployment-xxx –o yaml
  • 23. § Equality-based requirement § Set-based requirement
  • 24.
  • 25.
  • 26.
  • 27. Confidential – Oracle Internal/Restricted/Highly Restricted 27 Dive into Kubernetes Internal
  • 28.
  • 30. Confidential – Oracle Internal/Restricted/Highly Restricted 30 Dive into Kubernetes Internal - Pod
  • 31.
  • 33. § Namespace § Hostname § Process IDs § File System § Network interfaces § Inter-Process Communication (IPC) § Cgroup(Control Group) § CPU § RAM § Block I/O § Network I/O Cgroups = limits how much you can use; namespaces = limits what you can see (and therefore use) https://www.ianlewis.org/en/what-are-kubernetes-pods-anyway
  • 35. § Hostname § Network § IPC § Volume 공유 § 특징 § 단일 컨테이너 당 하나의 파드 § 또는 다중 컨테이너 (Side - Car) § 스케일링의 단위 - Deployment - StatefulSet - DamonSet https://www.ianlewis.org/en/what-are-kubernetes-pods-anyway
  • 36. https://blog.2dal.com/2018/03/28/kubernetes-01-pod/ https://ssup2.github.io/theory_analysis/Kubernetes_Pod/?fbclid=IwAR1IZtyjusnW1iX8C1s1c5QpQMigmiH-Y7pFDZ3dwtL44TJ8esDZqp-lXHg Pod가 실행될 때 pause 라는 컨테이너가 먼저 실행되어 pause컨테이너의 네임스페이스를 Pod내부의 모든 컨테이너가 공유 Pod 내부의 컨테이너 프로세스가 좀비 프로세스가 되지 않도록 pause 컨테이너는 PID 1로 설정되어 모든 컨테이너 프로세스의 부모 프로세스가 되고, 컨테이너 프로세스의 문제가 발생해 SIGHLD 시그널을 받으면 waitpid(해당 프로세스 ID)를 수행해서 중지된 컨테이너가 사용하던 자원을 회수하는 역할을 수행
  • 37. § Liveness probe § Readyness probe – p 152
  • 38. Confidential – Oracle Internal/Restricted/Highly Restricted 38 Master Component
  • 39. ● Kube-apiserver ● Etcd ● Kube-controller-manager ● Cloud-controller-manager ● Kube-scheduler
  • 40. § Components 상태 § $kubectl get componentstatuses
  • 41. Confidential – Oracle Internal/Restricted/Highly Restricted 41 Master Component - API Server
  • 42. § RESTful API를 통해서 kubectl와 같은 클라이언트와 통신 § RESTful API를 통해서 클러스터 상태를 쿼리 및 수정(CRUD)하고 § 그정보를 etcd에 저장한다. § 모든 클라이언트와 컴포넌트는 오직 API 서버를 통해서만 상호작용한다. § 클러스터에 대한 Gatekeeper 역할을 하며, 인증(Authen), 권한(Authoriz), 객체의 유효성 검사(Validation) and admission control § JSON 기반의 HTTP API 가 기본이지만, 클러스터 내부 통신은 Protocol Buffer 도 지원
  • 43. § API 버전 규칙 § 리소스나 필드 수준보다는 API 레벨에서 버전을 선택했는데, API가 명료하고, 시스템 리소스와 행위 관점에서 일관성있으며, 더 이상 사용하지 않는 API나 실험적인 API에 접근을 제어할 수 있도록 하기 위함이다. § Alpha(ex: v1alpha1) § 버그가 있을 수 있고, 기능을 활성화하면 버그가 노출될 수 있다. 기본적으로 비활성화 § Beta (ex: v2beta3) § 코드가 잘 테스트되었고, 안정하다. 기본적으로 활성화 § Stable(ex: v2) § 안정화버전
  • 44. § 쿠버네티스 API를 보다 쉽게 확장하기 위해서, API 그룹을 구현했다. API 그룹은 REST 경로와 직렬화된 객체의 apiVersion 필드에 명시된다. § 현재 다양한 API 그룹이 사용되고 있다. § 핵심 그룹 또는 레거시 그룹 이라고 하는 그룹은 REST 경로 /api/v1에서 apiVersion: v1을 사용한다. § 이름이 있는 그룹은 REST 경로 /apis/$GROUP_NAME/$VERSION에 있으며 apiVersion: $GROUP_NAME/$VERSION을 사용한다 (예: apiVersion: batch/v1). 지원되는 API 그룹 전체의 목록은 Kubernetes API reference에서 확인할 수 있다.
  • 45.
  • 46. § kubectl create -f xxx.yaml à json Converting § 인증, 권한 § 요청한 Client의 인증서(key, token) 를 검사 § 요청된 액션을 수행할 권한 체크 § Admission Control § 리소스 스펙에 누락된 것을 디폴트값이나 상속된 값으로 채움 § Ex) AlwaysPullImages NamespaceLifeCycle § Resource Validation § ETCD에 /Registry 밑에 계층구조로 저장
  • 47. § 1. API 그룹 조회 § 2. 노드 리스트 조회 - http://127.0.0.1:8001/api/v1/nodes/ - http://127.0.0.1:8001/api/v1/nodes/k8snode1
  • 48.
  • 49. Confidential – Oracle Internal/Restricted/Highly Restricted 50 Master Component - Controller
  • 50. kube-controller-manager 컨트롤러를 구동하는 마스터 상의 컴포넌트. 논리적으로, 각 컨트롤러는 개별 프로세스이지만, 복잡성을 낮추기 위해 모두 단일 바이너리로 컴파일되고 단일 프로세스 내에서 실행된다. API 서버를 통해서 Shared State(ETCD)의 정보를 Control loop를 통해 감시(watch)하고 있다가 Current State를 Desired State로 변경을 시도한다. 이들 컨트롤러는 다음을 포함한다. (약 26개) •노드 컨트롤러: 노드가 다운되었을 때 통지와 대응에 관한 책임을 가진다. •레플리케이션 컨트롤러: 시스템의 모든 레플리케이션 컨트롤러 오브젝트에 대해 알맞는 수의 파드들을 유지시켜 주는 책임을 가진다. •엔드포인트 컨트롤러: 엔드포인트 오브젝트를 채운다(즉, 서비스와 파드를 연결시킨다.) •서비스 어카운트 & 토큰 컨트롤러: 새로운 네임스페이스에 대한 기본 계정과 API 접근 토큰을 생성한다.
  • 51. https://engineering.bitnami.com/articles/a-deep-dive-into-kubernetes-controllers.html 단순화한 Controller Loop - Controller의 가장 중요한 역할을 Object의 current state와 desired state를 watch(감시) - 이를 위해 API Server에 값을 조회하는데 매번 조화하는 것을 오버헤드가 있기 때문에 event을 전달해주는 client-go library의 “Listwatcher interface” 사용
  • 53. 모든 컨트롤러는 API 서버를 통해 API 오브젝트를 가지고 동작한다. 컨트롤러는 Kubelet와 직접 통신하거나 어떤 종류의 명령도 내리지 않는다. 사실 kubelet의 존재하는지 조차 알지 못한다. 컨트롤러가 API 서버에서 리소스를 업데이드한 이후로 Kubelets와 쿠버네티스 서비스 프록시는 컨트롤러의 존재를 알지 못한다. 그리고 포드의 컨테이너를 회전시키고 네트워크 스토리지에 연결하거나 포드의 실제 로드 밸런싱을 설정한다. 컨트롤 플레인은 전체 시스템 동작의 한 부분을 처리하므로, 이런 동작이 쿠버네티스 클러스터에서 어떻게 펼쳐지는지 완전히 이해하려면 kubelet과 서비스 프록시가 하는 일을 이해할 필요가 있다.
  • 54. Confidential – Oracle Internal/Restricted/Highly Restricted 55 Master Component - Scheduler
  • 55. So let’s see how the scheduling lifecycle really looks like: 1.A pod is created and its desired state is saved to etcd with the node name unfilled. 2.The scheduler somehow notices that there is a new pod with no node bound. 3.It finds the node that best fits that pod. 4.Tells the apiserver to bind the pod to the node -> saves the new desired state to etcd. 5.Kubelets are watching bound pods through the apiserver, and start the containers on the particular node. https://banzaicloud.com/blog/k8s-custom-scheduler/
  • 56. 단순화한 Scheduler - client-go library의 watch를 이용해 Event를 받는데 FieldSelector 에 spec.nodeName=’’ - 노드가 할당되지 않은 pod에만 관심 - Scheduling 에 관련된 Factor
  • 57. Confidential – Oracle Internal/Restricted/Highly Restricted 58 Node Component - ETCD
  • 58. § 쿠버네티스 클러스터의 저장소 § 빠르고, 분산되며, 일관된 Key-Value Store § Raft Consensus algorithm § 클러스터는 fault-tolerant를 위해 3,5,7 과 같은 홀수개로 운영 § 정족수(quorum)
  • 59. Master 노드의 ETCD Pod로 들어가서 그안의 etcdctl 을 아래처럼 부르면 조회 가능 ETCDCTL_API = 3 etcdctl --cacert =/etc/kubernetes/pki/etcd/ca.crt --cert =/etc/kubernetes/pki/etcd/peer.crt --key =/etc/kubernetes/pki/etcd/peer.key get /registry/namespaces/default -w=json | jq . •base64로 인코딩되어 있기 때문에 base64로 디코딩해야 읽을 수 있다. •이때 합의 알고리즘 “raft_term”:14도 보인다.
  • 60. Confidential – Oracle Internal/Restricted/Highly Restricted 61 Node Component - Kubelet
  • 61. § Kubelet § Kube-proxy § Container runtime engine
  • 62. Node에서 Agent 역할을 하며 하며 Pod의 Lifecycle 을 관리한다. 지속적으로 실행중인 컨테이너를 모니터링하고 상태와 이벤트, 리소스등을 API 서버에 보고 한다. 1) Pod Management 2) Contiainer Health Check 3) Contiainer Monitoring - Resouce Usage from cAdvisor § File path § URL HTTP Endpoint § API Server
  • 63. kubelet의 구성 요소 § Kubelet Server는 kube-apiserver 및 metrics-server와 같은 서비스 호출을위한 API를 제공합니다. 예를 들어, kubectl exec는 Kubelet API / exec / {token}을 통해 컨테이너와 상호 작용해야합니다. Read Only API
  • 64.
  • 65. kubelet의 구성 요소 § 컨테이너 관리자는 CGroups, QoS, cpuset, device 등과 같은 컨테이너의 다양한 자원을 관리합니다. § 볼륨 관리자는 디스크의 포맷, 노드 로컬에 마운트, 마지막으로 마운트 경로를 컨테이너에 전달하는 것과 같이 컨테이너의 스토리지 볼륨을 관리합니다. § Eviction 관리자 는 자원이 충분하지 않을 때 우선 순위가 낮은 컨테이너의 퇴출 시키는 것과 같이 우선 순위가 높은 컨테이너의 운영을 보장하기 위해 컨테이너 퇴거를 담당합니다. § cAdvisor는 컨테이너에 Metrics를 제공합니다. § 메트릭 및 통계는 메트릭과 같은 컨테이너 및 노드에 대한 메트릭을 제공합니다. / stats / summary를 통해 추출 된 서버 메트릭은 HPA의 자동 확장을위한 기본 요소입니다. § 일반 런타임 관리자는 CRI 상호 작용 및 컨테이너 및 미러링 관리를 담당하는 컨테이너 런타임 관리자입니다.
  • 66. Confidential – Oracle Internal/Restricted/Highly Restricted 67 Summary
  • 67.
  • 68. • Introduction to k8s workshop : https://docs.google.com/presentation/d/1zrfVlE5r61ZNQrmX Kx5gJmBcXnoa_WerHEnTxu5SMco/edit?usp=sharing • K8s comprehensive Overview: https://docs.google.com/presentation/d/1_xwLGM6U6EDK59s9Zny- zWGGAbQk47cZPuBblU3Upus/edit#slide=id.g2c3848b8cd_0_158 • Kubernetes in Action • A Crash Course on Container Orchestration & k8s : https://speakerd.s3.amazonaws.com/presentations/cb7394a1868b479eb6723d120995f259/C ontainer_Orchestration_-_Interop_ITX__17.pdf • Pod :https://ssup2.github.io/theory_analysis/Kubernetes_Pod/?fbclid=IwAR1IZtyjusnW1iX8C1 s1c5QpQMigmiH-Y7pFDZ3dwtL44TJ8esDZqp-lXHg • Pod : https://www.ianlewis.org/en/what-are-kubernetes-pods-anyway • Pod : https://blog.2dal.com/2018/03/28/kubernetes-01-pod/
  • 69. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 70