SlideShare a Scribd company logo
1 of 28
Download to read offline
Journey for Provisioning 20k Over
Rbd Volumes to Kubernetes
With Openstack #2
플랫폼 랩스 스토리지 플랫폼
유장선 · 하 현 · 성준영
Contents
1 _ NAVER Rbd 사용 현황
사용 현황
2 _ Kubernetes Plugin
Requirements
Public Rbd Plugin
Flexvolume Plugin
3 _ NAVER RBD Plugin
Multi Tenancy 지원
Multi Map
장애 대응
Storage Watcher
Volume QoS
Filesystem Trim
모니터링
1 _ NAVER Rbd 사용 현황
사용 현황
사용 현황
Kubernetes
NAVER Ceph Cluster
Elasticsearch Farm
NAVER In-House PaaS Platform
Jenkins Farm
Kafka Farm
......
사용 현황
24
Clusters
10PB
Largest Cluster Capacity
5PB
Total Used
26PB
Total Clusters Capacity
30K
Total RBD Volumes
사용 현황
Persistent Volume for Container
in Container Orchestrator, Kubernetes
VOL1 VOL2 VOL3
2 _ Kubernetes Plugin
Requirements · Public Rbd Plugin · Flexvolume Plugin
Requirements
§ Keystone support for multi tenancy /
authentication support
§ Cinder support for volume dynamic
provisioning / managing
§ QoS support to ensure performance for
public cluster
§ Easy to manage, customize, deploy
Public Rbd Plugin
Kubernetes In-tree Provisioner / Ceph CSI Plugin
§ Ceph standalone
§ Version dependency
§ Multi tenancy not supported
§ Customization / Upgrade
issue
https://kubernetes.io/ko/docs/concepts/storage/volumes/#rbd
https://github.com/ceph/ceph-csi
Flexvolume Plugin
§ Deprecated, But,,
§ In-tree 플러그인에 존재하지 않는 스토리지 혹은 추가 스펙이 필요한 경우, 사용자가 개발
하여 Kubernetes 클러스터에 추가 가능
§ Worker 노드의 Kubelet 이 사용자가 작성한 Binary 를 실행시키고, Response JSON 을
통해 동작하는 방식
§ Driver Only 구성 / With Provisioner (PVC/PV 프로비저닝) 구성으로 구현 가능
§ 여러 벤더들이 구현하여 오픈 소스로 제공 (https://github.com/search?q=flexvolume)
VOLUME
Flexvolume Plugin
§ Fully Customizable § Simple Architecture
Attach
§ Check if volume is multi mapped
§ Check volume status
§ RBD map option
...
MountDevice
§ Mount option…
Mount
Unmount, UmountDevice
Expandfs
Simple Driver
Binary
Plugin Directory
Kubelet
Node1
Node2 Node3
…
3 _ NAVER Rbd Plugin
Multi Tenancy 지원 · Multi Map · 장애 대응 · Storage Watcher · Filesystem Trim · Volume QoS · 모니터링
Multi Tenancy 지원
Kubernetes
Blog Namespace Band Namespace
Cafe Namespace
Blog Project
Cafe Project
Band Project
성준영
유장선
하 현
USERS OPENSTACK
TENANTS
Multi Tenancy 지원
Create RBD Volume to proper tenant
For user who can access with right permission
§ Cronjob
§ Openstack ceph role can
manage specific tenant’s
volume
§ Cronjob assign ‘ceph’ role for
newly created tenant
§ Provisioner
§ Namespace have ‘tenant id’
annotation
§ Provisioner provision create
volume in user’s tenant
dynamically
Multi Map
Multi map can occur filesystem corruption
§ 두 Pod 에서 동시에 Read / Write 시
Filesystem Corruption 발생 가능
§ Filesystem Repair 가 필요하며 (xfs_repair)
Log zeroing 시 데이터 손실 가능성 존재
§ Ceph version: luminous
§ Ceph Driver 에서 볼륨을 Attach 하기 전 해
당 볼륨이 사용중인지 확인할 수 있는 방안?
Multi Map
RBD Watcher & Lock
$ rbd status ${pool}/${image id}
§ Map 된 볼륨에 대한 Watcher 정보를 추적할 수 있음
§ Watching Client 가 있음 == 볼륨이 이미 Map 되어 있음
$ rbd lock add ${pool}/${image id} ${lock id}
$ rbd lock ls ${pool}/${image id}
§ 임의로 Lock 을 추가할 수 있음
§ 호스트명을 Lock ID 로 사용
Multi Map
RBD Watcher & Lock
Attach
§ Check watcher (for readwrite volume)
§ Check lock (for readwrite volume)
§ Map
§ Add lock for rbd image
MountDevice
Mount
Unmount, UmountDevice
Expandfs
§ Watcher 와 Lock 이 이미 존재한다면 신규 Attach 를
차단, 에러 리턴
§ 비 정상적 상태인 경우 알람 발생
장애 대응
Node1
Kubernetes Cluster
Pod 1
VOL1
Ceph Cluster
/dev/rbd0
Node2 Node3
kubelet kubelet kubelet
장애 대응
Node1
Kubernetes Cluster
Pod 1
VOL1
Ceph Cluster
/dev/rbd0
Node2 Node3
kubelet kubelet kubelet
Pod 1
§ Node1 의 Kubelet 이 내려감
§ 정책 따라 Pod1 은 Node2 로 스케줄링됨
§ 볼륨은?
!! Orphaned Volume
장애 대응
Node1
Kubernetes Cluster
Pod 1
VOL1
Ceph Cluster
/dev/rbd0
Node2 Node3
kubelet kubelet kubelet
Pod 1
§ Node1 의 장애를 감지
§ 일정 시간 장애 지속 시 OSD Blacklist 호출
§ Node1 의 볼륨은 Garbage Device가 되며, 신규 Node2 에 마운트 가능
!! Black Listed
/dev/rbd0
Garbage device 는 추후 Cleanup 필요
Storage Watcher 소개
Node1
Pod 1
VOL1
Ceph Cluster
/dev/rbd0
kubelet
§ 노드 / 볼륨 이상 상태 모니터링, Volume trim, QoS 제어 등
부가적인 요소들을 관리 하는 Sidecar 컨테이너
§ Daemonset 으로 Driver 와 함께 Pod 으로 동작
- Detector
- Collector
- Limiter
- TrimExecutor
Storage Watcher
VOL2
Orphaned Volume
Filesystem Trim
Filesystem trim is required to use
available capacity More efficiently
Node1 Ceph Cluster
/dev/rbd0
Storage Watcher
Pod 1
Filesystem Trim
Node1 Ceph Cluster
/dev/rbd0
Storage Watcher
Pod 1
$ fstrim ­v ${mountpoint}
§ Storage Watcher Trimexecutor 가 제한된 양만큼 Filesystem Trim 을 수행
§ Trim 수행은 IO 를 일으키며, Storage Watcher 는 Daemonset 으로 모든 Node 에서 동작
하기 때문에, Trim 수행 시간을 적절히 분산하는것이 중요함 (Hostname hash)
Volume QoS
§ 볼륨 (PV) 별 iops / bps 제한은 아직도 Kubernetes 에서 많은 논의가 일어나고 있음
§ https://github.com/kubernetes/enhancements/pull/1907
§ 전사 공용 시스템인 Ceph 클러스터에는 QoS 가 필수
Volume QoS
Linux Control Groups
https://selfish-developer.com/entry/Cgroup-Control-Group
§ 프로세스들의 자원의 사용(CPU, 메모리, 디스크 입출력,
네트워크 등)을 제한하고 격리시키는 리눅스 커널 기능
§ 프로세스별 Device 의 IOPS / Throughput 제한 가능
Volume QoS
Node1
Storage Watcher
Pod 1
/dev/rbd0
1. 현재 Node 에 떠있는 Pod 리스트 수집
2. Pod 에 대응되는 Container 리스트 수집
3. Container config 파일 (config.v2.json) 으로부터 사용중인
마운트 포인트 / 디바이스 수집
4. 디바이스의 major / minor 넘버 수집
5. 컨테이너 프로세스에 대한 iops / throughput 제한 설정
Limiter
모니터링
+ Storage Watcher Collector
§ Node exporter 는 Device 성능, 사용량 지표를 제공함
§ Storage Watcher 는 Device 를 어떤 Pod 에서, 어떤 Namespace 에서 사용중인지에 대
한 메타데이터 매트릭을 제공함
§ 두 매트릭을 Join 하여 최종 사용자에게 제공
Thanks! End of Documents.

More Related Content

What's hot

서버인프라 구축 입문 basis of composing server and infra
서버인프라 구축 입문 basis of composing server and infra서버인프라 구축 입문 basis of composing server and infra
서버인프라 구축 입문 basis of composing server and infraHwanseok Park
 
20170609 tech day_4th-nginx(lb)-이재훈
20170609 tech day_4th-nginx(lb)-이재훈20170609 tech day_4th-nginx(lb)-이재훈
20170609 tech day_4th-nginx(lb)-이재훈ymtech
 
cbhoilab vagrant와 ansible 쿠버네티스 설치 v2
cbhoilab vagrant와 ansible 쿠버네티스 설치 v2cbhoilab vagrant와 ansible 쿠버네티스 설치 v2
cbhoilab vagrant와 ansible 쿠버네티스 설치 v2choi sungwook
 
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
 
[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버클라우드플랫폼 CLI 소개 및 활용
[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버클라우드플랫폼 CLI 소개 및 활용[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버클라우드플랫폼 CLI 소개 및 활용
[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버클라우드플랫폼 CLI 소개 및 활용NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
Redis basicandroadmap
Redis basicandroadmapRedis basicandroadmap
Redis basicandroadmapDaeMyung Kang
 
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹InfraEngineer
 
Before OTD EDU Assignments
Before OTD EDU AssignmentsBefore OTD EDU Assignments
Before OTD EDU AssignmentsBeom Lee
 
Redis From 2.8 to 4.x(unstable)
Redis From 2.8 to 4.x(unstable)Redis From 2.8 to 4.x(unstable)
Redis From 2.8 to 4.x(unstable)DaeMyung Kang
 
Kubernetes에서 Windows Application 호스팅하기
Kubernetes에서 Windows Application 호스팅하기Kubernetes에서 Windows Application 호스팅하기
Kubernetes에서 Windows Application 호스팅하기정현 남
 
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...OpenStack Korea Community
 

What's hot (20)

서버인프라 구축 입문 basis of composing server and infra
서버인프라 구축 입문 basis of composing server and infra서버인프라 구축 입문 basis of composing server and infra
서버인프라 구축 입문 basis of composing server and infra
 
20170609 tech day_4th-nginx(lb)-이재훈
20170609 tech day_4th-nginx(lb)-이재훈20170609 tech day_4th-nginx(lb)-이재훈
20170609 tech day_4th-nginx(lb)-이재훈
 
Redis 2017
Redis 2017Redis 2017
Redis 2017
 
Redis on AWS
Redis on AWSRedis on AWS
Redis on AWS
 
Redis edu 4
Redis edu 4Redis edu 4
Redis edu 4
 
L4교육자료
L4교육자료L4교육자료
L4교육자료
 
cbhoilab vagrant와 ansible 쿠버네티스 설치 v2
cbhoilab vagrant와 ansible 쿠버네티스 설치 v2cbhoilab vagrant와 ansible 쿠버네티스 설치 v2
cbhoilab vagrant와 ansible 쿠버네티스 설치 v2
 
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
 
[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버클라우드플랫폼 CLI 소개 및 활용
[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버클라우드플랫폼 CLI 소개 및 활용[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버클라우드플랫폼 CLI 소개 및 활용
[네이버클라우드플랫폼 온라인 교육 시리즈] 네이버클라우드플랫폼 CLI 소개 및 활용
 
Redis basicandroadmap
Redis basicandroadmapRedis basicandroadmap
Redis basicandroadmap
 
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
[MeetUp][1st] 오리뎅이의_쿠버네티스_네트워킹
 
Redis acc 2015
Redis acc 2015Redis acc 2015
Redis acc 2015
 
Before OTD EDU Assignments
Before OTD EDU AssignmentsBefore OTD EDU Assignments
Before OTD EDU Assignments
 
네트워크 기본
네트워크 기본네트워크 기본
네트워크 기본
 
Redis From 2.8 to 4.x(unstable)
Redis From 2.8 to 4.x(unstable)Redis From 2.8 to 4.x(unstable)
Redis From 2.8 to 4.x(unstable)
 
Kubernetes에서 Windows Application 호스팅하기
Kubernetes에서 Windows Application 호스팅하기Kubernetes에서 Windows Application 호스팅하기
Kubernetes에서 Windows Application 호스팅하기
 
Cache governance
Cache governanceCache governance
Cache governance
 
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
 
Redis edu 3
Redis edu 3Redis edu 3
Redis edu 3
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 

Similar to Journey for provisioning 20k over rbd volumes to kubernetes with openstack

[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-HelmSK Telecom
 
resource on openstack
 resource on openstack resource on openstack
resource on openstackjieun kim
 
kubernetes from beginner to advanced
kubernetes  from beginner to advancedkubernetes  from beginner to advanced
kubernetes from beginner to advancedOracle Korea
 
kubernetes : From beginner to Advanced
kubernetes : From beginner to Advancedkubernetes : From beginner to Advanced
kubernetes : From beginner to AdvancedInho Kang
 
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - WebinarNAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
Play node conference
Play node conferencePlay node conference
Play node conferenceJohn Kim
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3Sung-jae Park
 
[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...
[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...
[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...OpenStack Korea Community
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기Jinuk Kim
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회JaM2in
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideChan Shik Lim
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arcNAVER D2
 
091106kofpublic 091108170852-phpapp02 (번역본)
091106kofpublic 091108170852-phpapp02 (번역본)091106kofpublic 091108170852-phpapp02 (번역본)
091106kofpublic 091108170852-phpapp02 (번역본)Taegil Heo
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호용호 최
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래NAVER D2
 
Kubernetes on Premise
Kubernetes on PremiseKubernetes on Premise
Kubernetes on PremiseChan Shik Lim
 
Hadoop High Availability Summary
Hadoop High Availability SummaryHadoop High Availability Summary
Hadoop High Availability SummaryChan Shik Lim
 
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)Amazon Web Services Korea
 

Similar to Journey for provisioning 20k over rbd volumes to kubernetes with openstack (20)

[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm2017 k8s and OpenStack-Helm
2017 k8s and OpenStack-Helm
 
NoSQL
NoSQLNoSQL
NoSQL
 
resource on openstack
 resource on openstack resource on openstack
resource on openstack
 
kubernetes from beginner to advanced
kubernetes  from beginner to advancedkubernetes  from beginner to advanced
kubernetes from beginner to advanced
 
kubernetes : From beginner to Advanced
kubernetes : From beginner to Advancedkubernetes : From beginner to Advanced
kubernetes : From beginner to Advanced
 
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
 
Play node conference
Play node conferencePlay node conference
Play node conference
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3
 
[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...
[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...
[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성...
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical Guide
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
 
091106kofpublic 091108170852-phpapp02 (번역본)
091106kofpublic 091108170852-phpapp02 (번역본)091106kofpublic 091108170852-phpapp02 (번역본)
091106kofpublic 091108170852-phpapp02 (번역본)
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
 
Kubernetes on Premise
Kubernetes on PremiseKubernetes on Premise
Kubernetes on Premise
 
Hadoop High Availability Summary
Hadoop High Availability SummaryHadoop High Availability Summary
Hadoop High Availability Summary
 
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
AWS CLOUD 2018- Amazon Aurora  신규 서비스 알아보기 (최유정 솔루션즈 아키텍트)
 

More from Junyoung Sung

Ceph Korean Documentation
Ceph Korean DocumentationCeph Korean Documentation
Ceph Korean DocumentationJunyoung Sung
 
ForkRain 최종 발표 ppt
ForkRain 최종 발표 ppt  ForkRain 최종 발표 ppt
ForkRain 최종 발표 ppt Junyoung Sung
 
Aws lambda 와 함께 서버리스 서비스 만들기
Aws lambda 와 함께 서버리스 서비스 만들기Aws lambda 와 함께 서버리스 서비스 만들기
Aws lambda 와 함께 서버리스 서비스 만들기Junyoung Sung
 
종합재난경보시스템
종합재난경보시스템종합재난경보시스템
종합재난경보시스템Junyoung Sung
 
성준영 소프트콘 발표
성준영 소프트콘 발표성준영 소프트콘 발표
성준영 소프트콘 발표Junyoung Sung
 
휴스타그램
휴스타그램휴스타그램
휴스타그램Junyoung Sung
 

More from Junyoung Sung (6)

Ceph Korean Documentation
Ceph Korean DocumentationCeph Korean Documentation
Ceph Korean Documentation
 
ForkRain 최종 발표 ppt
ForkRain 최종 발표 ppt  ForkRain 최종 발표 ppt
ForkRain 최종 발표 ppt
 
Aws lambda 와 함께 서버리스 서비스 만들기
Aws lambda 와 함께 서버리스 서비스 만들기Aws lambda 와 함께 서버리스 서비스 만들기
Aws lambda 와 함께 서버리스 서비스 만들기
 
종합재난경보시스템
종합재난경보시스템종합재난경보시스템
종합재난경보시스템
 
성준영 소프트콘 발표
성준영 소프트콘 발표성준영 소프트콘 발표
성준영 소프트콘 발표
 
휴스타그램
휴스타그램휴스타그램
휴스타그램
 

Journey for provisioning 20k over rbd volumes to kubernetes with openstack

  • 1. Journey for Provisioning 20k Over Rbd Volumes to Kubernetes With Openstack #2 플랫폼 랩스 스토리지 플랫폼 유장선 · 하 현 · 성준영
  • 2. Contents 1 _ NAVER Rbd 사용 현황 사용 현황 2 _ Kubernetes Plugin Requirements Public Rbd Plugin Flexvolume Plugin 3 _ NAVER RBD Plugin Multi Tenancy 지원 Multi Map 장애 대응 Storage Watcher Volume QoS Filesystem Trim 모니터링
  • 3. 1 _ NAVER Rbd 사용 현황 사용 현황
  • 4. 사용 현황 Kubernetes NAVER Ceph Cluster Elasticsearch Farm NAVER In-House PaaS Platform Jenkins Farm Kafka Farm ......
  • 5. 사용 현황 24 Clusters 10PB Largest Cluster Capacity 5PB Total Used 26PB Total Clusters Capacity 30K Total RBD Volumes
  • 6. 사용 현황 Persistent Volume for Container in Container Orchestrator, Kubernetes VOL1 VOL2 VOL3
  • 7. 2 _ Kubernetes Plugin Requirements · Public Rbd Plugin · Flexvolume Plugin
  • 8. Requirements § Keystone support for multi tenancy / authentication support § Cinder support for volume dynamic provisioning / managing § QoS support to ensure performance for public cluster § Easy to manage, customize, deploy
  • 9. Public Rbd Plugin Kubernetes In-tree Provisioner / Ceph CSI Plugin § Ceph standalone § Version dependency § Multi tenancy not supported § Customization / Upgrade issue https://kubernetes.io/ko/docs/concepts/storage/volumes/#rbd https://github.com/ceph/ceph-csi
  • 10. Flexvolume Plugin § Deprecated, But,, § In-tree 플러그인에 존재하지 않는 스토리지 혹은 추가 스펙이 필요한 경우, 사용자가 개발 하여 Kubernetes 클러스터에 추가 가능 § Worker 노드의 Kubelet 이 사용자가 작성한 Binary 를 실행시키고, Response JSON 을 통해 동작하는 방식 § Driver Only 구성 / With Provisioner (PVC/PV 프로비저닝) 구성으로 구현 가능 § 여러 벤더들이 구현하여 오픈 소스로 제공 (https://github.com/search?q=flexvolume) VOLUME
  • 11. Flexvolume Plugin § Fully Customizable § Simple Architecture Attach § Check if volume is multi mapped § Check volume status § RBD map option ... MountDevice § Mount option… Mount Unmount, UmountDevice Expandfs Simple Driver Binary Plugin Directory Kubelet Node1 Node2 Node3 …
  • 12. 3 _ NAVER Rbd Plugin Multi Tenancy 지원 · Multi Map · 장애 대응 · Storage Watcher · Filesystem Trim · Volume QoS · 모니터링
  • 13. Multi Tenancy 지원 Kubernetes Blog Namespace Band Namespace Cafe Namespace Blog Project Cafe Project Band Project 성준영 유장선 하 현 USERS OPENSTACK TENANTS
  • 14. Multi Tenancy 지원 Create RBD Volume to proper tenant For user who can access with right permission § Cronjob § Openstack ceph role can manage specific tenant’s volume § Cronjob assign ‘ceph’ role for newly created tenant § Provisioner § Namespace have ‘tenant id’ annotation § Provisioner provision create volume in user’s tenant dynamically
  • 15. Multi Map Multi map can occur filesystem corruption § 두 Pod 에서 동시에 Read / Write 시 Filesystem Corruption 발생 가능 § Filesystem Repair 가 필요하며 (xfs_repair) Log zeroing 시 데이터 손실 가능성 존재 § Ceph version: luminous § Ceph Driver 에서 볼륨을 Attach 하기 전 해 당 볼륨이 사용중인지 확인할 수 있는 방안?
  • 16. Multi Map RBD Watcher & Lock $ rbd status ${pool}/${image id} § Map 된 볼륨에 대한 Watcher 정보를 추적할 수 있음 § Watching Client 가 있음 == 볼륨이 이미 Map 되어 있음 $ rbd lock add ${pool}/${image id} ${lock id} $ rbd lock ls ${pool}/${image id} § 임의로 Lock 을 추가할 수 있음 § 호스트명을 Lock ID 로 사용
  • 17. Multi Map RBD Watcher & Lock Attach § Check watcher (for readwrite volume) § Check lock (for readwrite volume) § Map § Add lock for rbd image MountDevice Mount Unmount, UmountDevice Expandfs § Watcher 와 Lock 이 이미 존재한다면 신규 Attach 를 차단, 에러 리턴 § 비 정상적 상태인 경우 알람 발생
  • 18. 장애 대응 Node1 Kubernetes Cluster Pod 1 VOL1 Ceph Cluster /dev/rbd0 Node2 Node3 kubelet kubelet kubelet
  • 19. 장애 대응 Node1 Kubernetes Cluster Pod 1 VOL1 Ceph Cluster /dev/rbd0 Node2 Node3 kubelet kubelet kubelet Pod 1 § Node1 의 Kubelet 이 내려감 § 정책 따라 Pod1 은 Node2 로 스케줄링됨 § 볼륨은? !! Orphaned Volume
  • 20. 장애 대응 Node1 Kubernetes Cluster Pod 1 VOL1 Ceph Cluster /dev/rbd0 Node2 Node3 kubelet kubelet kubelet Pod 1 § Node1 의 장애를 감지 § 일정 시간 장애 지속 시 OSD Blacklist 호출 § Node1 의 볼륨은 Garbage Device가 되며, 신규 Node2 에 마운트 가능 !! Black Listed /dev/rbd0 Garbage device 는 추후 Cleanup 필요
  • 21. Storage Watcher 소개 Node1 Pod 1 VOL1 Ceph Cluster /dev/rbd0 kubelet § 노드 / 볼륨 이상 상태 모니터링, Volume trim, QoS 제어 등 부가적인 요소들을 관리 하는 Sidecar 컨테이너 § Daemonset 으로 Driver 와 함께 Pod 으로 동작 - Detector - Collector - Limiter - TrimExecutor Storage Watcher VOL2 Orphaned Volume
  • 22. Filesystem Trim Filesystem trim is required to use available capacity More efficiently Node1 Ceph Cluster /dev/rbd0 Storage Watcher Pod 1
  • 23. Filesystem Trim Node1 Ceph Cluster /dev/rbd0 Storage Watcher Pod 1 $ fstrim ­v ${mountpoint} § Storage Watcher Trimexecutor 가 제한된 양만큼 Filesystem Trim 을 수행 § Trim 수행은 IO 를 일으키며, Storage Watcher 는 Daemonset 으로 모든 Node 에서 동작 하기 때문에, Trim 수행 시간을 적절히 분산하는것이 중요함 (Hostname hash)
  • 24. Volume QoS § 볼륨 (PV) 별 iops / bps 제한은 아직도 Kubernetes 에서 많은 논의가 일어나고 있음 § https://github.com/kubernetes/enhancements/pull/1907 § 전사 공용 시스템인 Ceph 클러스터에는 QoS 가 필수
  • 25. Volume QoS Linux Control Groups https://selfish-developer.com/entry/Cgroup-Control-Group § 프로세스들의 자원의 사용(CPU, 메모리, 디스크 입출력, 네트워크 등)을 제한하고 격리시키는 리눅스 커널 기능 § 프로세스별 Device 의 IOPS / Throughput 제한 가능
  • 26. Volume QoS Node1 Storage Watcher Pod 1 /dev/rbd0 1. 현재 Node 에 떠있는 Pod 리스트 수집 2. Pod 에 대응되는 Container 리스트 수집 3. Container config 파일 (config.v2.json) 으로부터 사용중인 마운트 포인트 / 디바이스 수집 4. 디바이스의 major / minor 넘버 수집 5. 컨테이너 프로세스에 대한 iops / throughput 제한 설정 Limiter
  • 27. 모니터링 + Storage Watcher Collector § Node exporter 는 Device 성능, 사용량 지표를 제공함 § Storage Watcher 는 Device 를 어떤 Pod 에서, 어떤 Namespace 에서 사용중인지에 대 한 메타데이터 매트릭을 제공함 § 두 매트릭을 Join 하여 최종 사용자에게 제공
  • 28. Thanks! End of Documents.