SlideShare a Scribd company logo
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

PDF
[2B5]nBase-ARC Redis Cluster
PPT
서버/인프라를 지탱하는 기술
PDF
서버인프라를지탱하는기술2_1-2
PDF
Redis trouble shooting
PDF
서버 인프라를지탱하는기술(1.3,1.4)
PPTX
DNS Express
PPT
Redis Overview
PDF
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[2B5]nBase-ARC Redis Cluster
서버/인프라를 지탱하는 기술
서버인프라를지탱하는기술2_1-2
Redis trouble shooting
서버 인프라를지탱하는기술(1.3,1.4)
DNS Express
Redis Overview
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...

What's hot (20)

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

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

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

More from Junyoung Sung (6)

ODP
Ceph Korean Documentation
PDF
ForkRain 최종 발표 ppt
PPTX
Aws lambda 와 함께 서버리스 서비스 만들기
PDF
종합재난경보시스템
PDF
성준영 소프트콘 발표
PPTX
휴스타그램
Ceph Korean Documentation
ForkRain 최종 발표 ppt
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.