Kubernetes 환경에서의 Volume
배포와 데이터 관리의 유연성 확보
Trident case study
June 2018
NetApp 김진학 부장 / LG CNS 장다성 선임
Do more
meaningful
things
DevOps를 달성하기 위해 서비스간 독립성을
유지하기 위한 아키텍쳐 모델이 Microservice
Microservice 를 구현하기 위한 인프라 제공
기술은 Container
Container 내에 어플리케이션들을 배치시키는
일을 자동화 해주는 Docker
3
어플리케이션 환경
4
Container Platform
Infrastructure Platform
Apps
Apps
Apps
Apps
SQL
NoSQL
CI/CD
Automated
Testing
Application Stacks Large Data Repository
Unstructured Data
Primarily HDFS
(…and some Object & File)
Hadoop Spark Tensorflow
Analytics AI
Machine
Learning
어플리케이션 환경
5
Container Platform
Infrastructure Platform
Apps
Apps
Apps
Apps
SQL
NoSQL
CI/CD
Automated
Testing
Application Stacks Large Data Repository
Unstructured Data
Primarily Object & File
(…and some HDFS)Seemless
Hybrid
Setup
Hadoop
Spark
TensorflowAnalytics
AI
Machine
Learning
…
Container 도입시 Top challenges
6
Source: Cloud Foundry Global Perception Study Container Technologies, 2017
Containers & Data Persistency
 디폴트로, Docker Volume은
로컬디스크에 저장됨
 Container는 Dependency 가 없어야 함
 실제 환경에서 항상 유효한 것은 아님
 호스트 장애시 데이터 유실
App
Local
Docker
Volume
Empty
Volume
Docker Host 1
Docker Host 2
7
Containers & Data Persistency
 외장 스토리지를 이용한 Docker Volume
 예시: NetApp Docker Volume Plugin
(Trident)
8
Docker
Volume
Docker Host 1
Docker Host 2
App
Docker Volume 플러그인(Trident, formerly nDVP) 특징
9
 Persistent volume을 생성하거나 복제
 다중 Backend 구성을 지원
 동시에 ONTAP, SolidFire, and/or E-Series iSCSI
and NAS 사용
 사용자 별 애플리케이션에 맞는
스토리지의 볼륨 정의
 ONTAP: Snapshot policy, space reserve, target
aggregate, clone
 여러 호스트에서 액세스 할 수 있는 Docker
volume
nDVP
Docker
Engine
Trident API
Containers Container A Container B Container C
Docker
Plug-in
Instances
nDVP
JSON/HTTP JSON/HTTP JSON/HTTP
NA
S
or
SA
N
I
/O
S
A
N
I
/
O
ZAPI SFAPI E-Series API
nDVP
S
A
N
I
/
O
Kubernetes (aka ‘k8s’)
 컨테이너 오케스트레이션 툴
 Google이 만든 오픈 소스 Container 관리 시스템
 수 많은 호스트에서 운영중인 컨테이너 관리
 수평 확장
 스토리지 오케스트레이션
 셀프 힐링
 Service 조회와 로드 밸런싱
 Container 사용자의 60% ↑
 OpenShift, Apprenda PaaS
 Hyperscaler : AWS EKS, Azure AKS, Google GKE …
Feature rich, established, and growing
10
Kubernetes Persistent Volumes
 Kubernetes Volume 지원
 iSCSI
 NFS
 Cinder
 AWS EBS,GCE PD, Azure disk, …
 외장 스토리지의 사용
 볼륨은 단일 호스트의 수명을 초과하여 유지 될 수 있음
 컨테이너에서 대규모 워크로드를 안정적으로 실행 할 수 있다는 점
 백업 / 복원, 지역간 복제, 테스트 / Dev (복제) 및 기타 문제 해결
 Static vs Dynamic 프로비저닝
11
Kubernetes Volume 요소
12
Persistent Volume (PV) Persistent Volume Claim (PVC)
 관리자가 Kubernetes에 제공한
데이터 저장소
 백엔더 스토리지로 구성
 NFS, iSCSI, Cinder, AWS EBS, Azure
 스토리지 볼륨에
대한 연결 정보를
포함
 데이터 저장 장치를 요청하기 위해
사용자가 생성
 사용자의 선택을 돕기 위한 Label과
access mode, 요구 용량등이 표기 됨
 Kubernetes는
PVC에서 요구되는
요구 사항을 충족
시키기 위해 PV를
할당
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv0003
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
storageClassName: bronze
nfs:
path: /tmp
server: 172.17.0.2
kind:
PersistentVolumeClaim
apiVersion: v1
metadata:
name: thepub
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName:
bronze
K8s Static Provisioning
13
Kubernetes
Users &
Developers
Ops Team / IT Admins
PV
5 GB
RWO
iSCSI
POD
PVC
5 GB
RWO
K8S PV
Controller
PersistentVolumeClaim PersistentVolume
Storage
POD
PVC
8 GB
RWO PV
10 GB
RWO
NFS
Trident: Kubernetes 와 NetApp 스토리지 연동
 NetApp의 오픈 소스 Dynamic storage provisioner
지원:
 NetApp ONTAP
 NetApp SolidFire
 E-Series
 자동화 된 볼륨 생성과 맵핑
 호환성:
 OpenShift Origin & Enterprise
 Kubernetes
 Available on GitHub:
https://github.com/NetApp/trident
14
Kubernetes Dynamic Provisioning
With NetApp Trident Integration
15
Kubernetes
PV
8 GB
RWO
iSCSI
POD
PVC
8 GB
RWO
GOLD
K8S PV
Controller
PersistentVolumeClaim StorageClass
Gold
IOPS:
3000/6000/10000
Silver
IOPS:
2000/4000/8000
Bronze
IOPS:
1000/2000/4000
NetApp
SolidFire
NetApp
Provisioner
(Trident)
Users &
Developers
Ops Team / IT Admins
Users &
Developers
Ops Team / IT Admins
※ StorageClass : Storage provisioner 지정, 카탈로그 정의
Trident can do,
 Kubernetes Dynamic provisioning 을 지원
 Admin의 개입없이 User가 Volume 배포
 Storage 카탈로깅
 QoS
 Thin / Thick
 Snapshot
 PVC 복제 - Rapid Data Cloning
 RWM(ReadWriteMany) access mode 지원
 검증된 Data protection 기술 활용
16
Trident 적용 추이
NetApp Open Source Contribution
17
NetApp은 다양한 오픈 소스 커뮤니티에서 스토리지 프로젝트를 리딩
KubernetesDockerOpenStack
 Diablo부터 커뮤니티 멤버로 활동
 Charter Gold Member
 Elected board representation
 Manila, Cinder 프로젝트 Leader
 Ecosystem Technology Partner
(2016년)
 Docker Certification Program (2017년)
 First Certified Docker Volume Plugin
 First Snapshot & Clone 기능 제공
 CNCF Gold Member
 First 외장 Dynamic provisioner 개발
 First Clone 기능 제공
 CSI(Container Storage Interface) 지원
예정
NetApp Trident PoC
Trident plug-in을 이용한 NFS 가용성 테스트
NFS 가용성 테스트 목적
 Persistent Volumes for Container services
- dynamic provisioning
- multi backend
 Shared Volumes for Container services
- access data both container and host server
 High Availability for trident services
테스트 케이스
 trident plug-in 주요 기능 검증
- dynamic provisioning 확인
- shared volume 확인
- access mode 확인
 trident 서비스 가용성 검증
- trident pod의 take-over
 h/w 장애 유발
- node shutdown
- storage down
- network down
Tr i d e n t p l u g - i n 주 요 기 능 검 증
# cat test_pod.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nfs-test
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 300Gi
storageClassName: basic
---
apiVersion: v1
kind: ReplicationController
metadata:
name: nfs-busybox
spec:
replicas: 2
selector:
name: nfs-busybox
template:
metadata:
labels:
name: nfs-busybox
spec:
containers:
- image: busybox
imagePullPolicy: IfNotPresent
name: busybox
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
# name must match the volume name below
- name: nfs-volume
mountPath: "/mnt"
volumes:
- name: nfs-volume
persistentVolumeClaim:
claimName: nfs-test
---
Tr i d e n t p l u g - i n 주 요 기 능 검 증
 pod 상태
 pv 상태
Tr i d e n t p l u g - i n 주 요 기 능 검 증
 mount 상태(pod 내부에서 확인)
Tr i d e n t p l u g - i n 주 요 기 능 검 증
Container
nfs-busybox
Volume
Persistent
VolumeClaim
PersistentVolume
Disk
Replication
Controller
k8s
bind
request
Container
nfs-busybox
request
StorageClass
trident
trident
etcd
dynamicprosivioning
 pod 상태
 pod 를 다른 node로 take-over
 정상 생성 확인
Storage
control
B/B
L2 Switch
node#01 node#02
Switch
장애 case
cpu fault
memory fault
disk fault
mgmt 네트워크 장애
nfs 네트워크 장애
한쪽 Controller 장애 시
전체 NAS 스토리지 전체 장애 시
disk fault
controller 장애
kubelet service 장애
docker service 장애
trident service 장애
네트워크 장애
disk 부하 발생
cpu 부하 발생
node shutdown
network down
storage down
Storage
node#01 node#02
Switch
Storage
node#01 node#02
Switch
Storage
node#01 node#02
Switch
 nfs mountOptions
 StorageClass
마무리
 nfs 가용성테스트 결과
- nfs network 단절로 인한 hang 현상은 nfs 자체 이슈
(운영에 있어서 이와 관련된 option의 적용 협의 필요)
- plug-in을 통한 nfs backend storage를 지원하는데 이상 없음

More Related Content

PPTX
DPDK KNI interface
PDF
Kubernetes Architecture and Introduction
PDF
Ansible 101
PDF
Optimizing {Java} Application Performance on Kubernetes
PDF
How to test infrastructure code: automated testing for Terraform, Kubernetes,...
PDF
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
PPTX
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
PDF
Intel dpdk Tutorial
DPDK KNI interface
Kubernetes Architecture and Introduction
Ansible 101
Optimizing {Java} Application Performance on Kubernetes
How to test infrastructure code: automated testing for Terraform, Kubernetes,...
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
Intel dpdk Tutorial

What's hot (20)

PDF
Microservice Resilience Patterns @VoxxedCern'24
PDF
Implementing distributed mclock in ceph
PPSX
FD.io Vector Packet Processing (VPP)
PDF
Red Hat OpenStack 17 저자직강+스터디그룹_1주차
PPTX
Introduction to DPDK
PPT
Jenkins Overview
PDF
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
PDF
Oracle Active Data Guard: Best Practices and New Features Deep Dive
PDF
From Zero to Docker
PDF
Booting Android: bootloaders, fastboot and boot images
PDF
Disaggregating Ceph using NVMeoF
PPTX
Observability For You and Me with OpenTelemetry
PDF
Introducing the Apache Flink Kubernetes Operator
PDF
DPDK & Layer 4 Packet Processing
PDF
High-Performance Networking Using eBPF, XDP, and io_uring
PDF
Multi cluster management with rancher
PDF
Accelerating Envoy and Istio with Cilium and the Linux Kernel
PDF
DPDK: Multi Architecture High Performance Packet Processing
PPTX
Open source apm scouter를 통한 관제 관리 jadecross 정환열 수석
PDF
Linux Performance Analysis and Tools
Microservice Resilience Patterns @VoxxedCern'24
Implementing distributed mclock in ceph
FD.io Vector Packet Processing (VPP)
Red Hat OpenStack 17 저자직강+스터디그룹_1주차
Introduction to DPDK
Jenkins Overview
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
Oracle Active Data Guard: Best Practices and New Features Deep Dive
From Zero to Docker
Booting Android: bootloaders, fastboot and boot images
Disaggregating Ceph using NVMeoF
Observability For You and Me with OpenTelemetry
Introducing the Apache Flink Kubernetes Operator
DPDK & Layer 4 Packet Processing
High-Performance Networking Using eBPF, XDP, and io_uring
Multi cluster management with rancher
Accelerating Envoy and Istio with Cilium and the Linux Kernel
DPDK: Multi Architecture High Performance Packet Processing
Open source apm scouter를 통한 관제 관리 jadecross 정환열 수석
Linux Performance Analysis and Tools
Ad

Similar to [OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성 확보(실 테스트 사례 공유) (20)

PDF
Kubernetes & Istio in Multi-Cloud
PDF
Kubernetes on Premise Practical Guide
PDF
Kubernetes on Premise
PDF
Journey for provisioning 20k over rbd volumes to kubernetes with openstack
PDF
NetApp AI Control Plane
PDF
Cloud for Kubernetes : Session5
PDF
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
PDF
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
PPTX
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
PDF
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
PDF
주니어의 쿠버네티스 생태계에서 살아남기
PPTX
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
PDF
Object storage의 이해와 활용
PDF
Nexclipper_1905_summary_kor
PDF
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 애플리케이션 실행환경 통합 관리 (CB-Ladybug)
PDF
[오픈소스컨설팅] VMware 대안 검토를 위한 프라이빗 클라우드 솔루션 제언
PDF
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
PDF
Provisioning Dedicated Game Server on Kubernetes Cluster
PDF
Open infradays 2019_msa_k8s
PPTX
애플리케이션 최적화를 위한 컨테이너 인프라 구축
Kubernetes & Istio in Multi-Cloud
Kubernetes on Premise Practical Guide
Kubernetes on Premise
Journey for provisioning 20k over rbd volumes to kubernetes with openstack
NetApp AI Control Plane
Cloud for Kubernetes : Session5
AWS Kubernetes 서비스 자세히 살펴보기 (정영준 & 이창수, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[2019.04] 쿠버네티스 기반 하이퍼레저 패브릭 네트워크 구축하기
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
주니어의 쿠버네티스 생태계에서 살아남기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
Object storage의 이해와 활용
Nexclipper_1905_summary_kor
Cloud-Barista 제7차 컨퍼런스 : 멀티클라우드 애플리케이션 실행환경 통합 관리 (CB-Ladybug)
[오픈소스컨설팅] VMware 대안 검토를 위한 프라이빗 클라우드 솔루션 제언
[OpenInfra Days Korea 2018] (Track 4) Provisioning Dedicated Game Server on K...
Provisioning Dedicated Game Server on Kubernetes Cluster
Open infradays 2019_msa_k8s
애플리케이션 최적화를 위한 컨테이너 인프라 구축
Ad

More from OpenStack Korea Community (20)

PDF
2019년 커뮤니티 활동 보고: 오픈스택 한국 커뮤니티
PDF
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
PDF
[2018.10.19] 김용기 부장 - IAC on OpenStack (feat. ansible)
PDF
[OpenInfra Days Korea 2018] Day 2 - E6: "SONA: ONOS SDN Controller 기반 OpenSta...
PDF
[OpenInfra Days Korea 2018] Day 2 - E3-2: "핸즈온 워크샵: Kubespray, Helm, Armada를 ...
PDF
[OpenInfra Days Korea 2018] Day 2 - E5-1: "Invited Talk: Kubicorn - Building ...
PDF
[OpenInfra Days Korea 2018] Day 1 - T4-7: "Ceph 스토리지, PaaS로 서비스 운영하기"
PDF
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
PDF
[OpenInfra Days Korea 2018] Day 2 - E4 - 딥다이브: immutable Kubernetes architecture
PDF
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
PDF
[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with Prometheus
PDF
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
PDF
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
PDF
[OpenInfra Days Korea 2018] Day 2 - E4 - 핸즈온 워크샵: 서버리스가 컨테이너를 만났을 때
PDF
[OpenInfra Days Korea 2018] (삼성전자) Evolution to Cloud Native
PDF
[OpenInfra Days Korea 2018] (NetApp) Open Source with NetApp - 전국섭 상무
PDF
[OpenInfra Days Korea 2018] (Track 4) - 오픈스택기반 NFV 관리 및 HA (high Availability...
PDF
[OpenInfra Days Korea 2018] (Track 4) - FreeIPA와 함께 SSO 구성
PDF
[OpenInfra Days Korea 2018] (Track 4) - Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
PDF
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
2019년 커뮤니티 활동 보고: 오픈스택 한국 커뮤니티
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
[2018.10.19] 김용기 부장 - IAC on OpenStack (feat. ansible)
[OpenInfra Days Korea 2018] Day 2 - E6: "SONA: ONOS SDN Controller 기반 OpenSta...
[OpenInfra Days Korea 2018] Day 2 - E3-2: "핸즈온 워크샵: Kubespray, Helm, Armada를 ...
[OpenInfra Days Korea 2018] Day 2 - E5-1: "Invited Talk: Kubicorn - Building ...
[OpenInfra Days Korea 2018] Day 1 - T4-7: "Ceph 스토리지, PaaS로 서비스 운영하기"
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
[OpenInfra Days Korea 2018] Day 2 - E4 - 딥다이브: immutable Kubernetes architecture
[OpenInfra Days Korea 2018] Day 2 - E6 - 마이크로서비스를 위한 Istio & Kubernetes [다운로드...
[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with Prometheus
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - E4 - 핸즈온 워크샵: 서버리스가 컨테이너를 만났을 때
[OpenInfra Days Korea 2018] (삼성전자) Evolution to Cloud Native
[OpenInfra Days Korea 2018] (NetApp) Open Source with NetApp - 전국섭 상무
[OpenInfra Days Korea 2018] (Track 4) - 오픈스택기반 NFV 관리 및 HA (high Availability...
[OpenInfra Days Korea 2018] (Track 4) - FreeIPA와 함께 SSO 구성
[OpenInfra Days Korea 2018] (Track 4) - Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링

[OpenInfra Days Korea 2018] (Track 1) Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성 확보(실 테스트 사례 공유)

  • 1. Kubernetes 환경에서의 Volume 배포와 데이터 관리의 유연성 확보 Trident case study June 2018 NetApp 김진학 부장 / LG CNS 장다성 선임
  • 2. Do more meaningful things DevOps를 달성하기 위해 서비스간 독립성을 유지하기 위한 아키텍쳐 모델이 Microservice Microservice 를 구현하기 위한 인프라 제공 기술은 Container Container 내에 어플리케이션들을 배치시키는 일을 자동화 해주는 Docker
  • 3. 3
  • 4. 어플리케이션 환경 4 Container Platform Infrastructure Platform Apps Apps Apps Apps SQL NoSQL CI/CD Automated Testing Application Stacks Large Data Repository Unstructured Data Primarily HDFS (…and some Object & File) Hadoop Spark Tensorflow Analytics AI Machine Learning
  • 5. 어플리케이션 환경 5 Container Platform Infrastructure Platform Apps Apps Apps Apps SQL NoSQL CI/CD Automated Testing Application Stacks Large Data Repository Unstructured Data Primarily Object & File (…and some HDFS)Seemless Hybrid Setup Hadoop Spark TensorflowAnalytics AI Machine Learning …
  • 6. Container 도입시 Top challenges 6 Source: Cloud Foundry Global Perception Study Container Technologies, 2017
  • 7. Containers & Data Persistency  디폴트로, Docker Volume은 로컬디스크에 저장됨  Container는 Dependency 가 없어야 함  실제 환경에서 항상 유효한 것은 아님  호스트 장애시 데이터 유실 App Local Docker Volume Empty Volume Docker Host 1 Docker Host 2 7
  • 8. Containers & Data Persistency  외장 스토리지를 이용한 Docker Volume  예시: NetApp Docker Volume Plugin (Trident) 8 Docker Volume Docker Host 1 Docker Host 2 App
  • 9. Docker Volume 플러그인(Trident, formerly nDVP) 특징 9  Persistent volume을 생성하거나 복제  다중 Backend 구성을 지원  동시에 ONTAP, SolidFire, and/or E-Series iSCSI and NAS 사용  사용자 별 애플리케이션에 맞는 스토리지의 볼륨 정의  ONTAP: Snapshot policy, space reserve, target aggregate, clone  여러 호스트에서 액세스 할 수 있는 Docker volume nDVP Docker Engine Trident API Containers Container A Container B Container C Docker Plug-in Instances nDVP JSON/HTTP JSON/HTTP JSON/HTTP NA S or SA N I /O S A N I / O ZAPI SFAPI E-Series API nDVP S A N I / O
  • 10. Kubernetes (aka ‘k8s’)  컨테이너 오케스트레이션 툴  Google이 만든 오픈 소스 Container 관리 시스템  수 많은 호스트에서 운영중인 컨테이너 관리  수평 확장  스토리지 오케스트레이션  셀프 힐링  Service 조회와 로드 밸런싱  Container 사용자의 60% ↑  OpenShift, Apprenda PaaS  Hyperscaler : AWS EKS, Azure AKS, Google GKE … Feature rich, established, and growing 10
  • 11. Kubernetes Persistent Volumes  Kubernetes Volume 지원  iSCSI  NFS  Cinder  AWS EBS,GCE PD, Azure disk, …  외장 스토리지의 사용  볼륨은 단일 호스트의 수명을 초과하여 유지 될 수 있음  컨테이너에서 대규모 워크로드를 안정적으로 실행 할 수 있다는 점  백업 / 복원, 지역간 복제, 테스트 / Dev (복제) 및 기타 문제 해결  Static vs Dynamic 프로비저닝 11
  • 12. Kubernetes Volume 요소 12 Persistent Volume (PV) Persistent Volume Claim (PVC)  관리자가 Kubernetes에 제공한 데이터 저장소  백엔더 스토리지로 구성  NFS, iSCSI, Cinder, AWS EBS, Azure  스토리지 볼륨에 대한 연결 정보를 포함  데이터 저장 장치를 요청하기 위해 사용자가 생성  사용자의 선택을 돕기 위한 Label과 access mode, 요구 용량등이 표기 됨  Kubernetes는 PVC에서 요구되는 요구 사항을 충족 시키기 위해 PV를 할당 apiVersion: v1 kind: PersistentVolume metadata: name: pv0003 spec: capacity: storage: 5Gi accessModes: - ReadWriteMany storageClassName: bronze nfs: path: /tmp server: 172.17.0.2 kind: PersistentVolumeClaim apiVersion: v1 metadata: name: thepub spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi storageClassName: bronze
  • 13. K8s Static Provisioning 13 Kubernetes Users & Developers Ops Team / IT Admins PV 5 GB RWO iSCSI POD PVC 5 GB RWO K8S PV Controller PersistentVolumeClaim PersistentVolume Storage POD PVC 8 GB RWO PV 10 GB RWO NFS
  • 14. Trident: Kubernetes 와 NetApp 스토리지 연동  NetApp의 오픈 소스 Dynamic storage provisioner 지원:  NetApp ONTAP  NetApp SolidFire  E-Series  자동화 된 볼륨 생성과 맵핑  호환성:  OpenShift Origin & Enterprise  Kubernetes  Available on GitHub: https://github.com/NetApp/trident 14
  • 15. Kubernetes Dynamic Provisioning With NetApp Trident Integration 15 Kubernetes PV 8 GB RWO iSCSI POD PVC 8 GB RWO GOLD K8S PV Controller PersistentVolumeClaim StorageClass Gold IOPS: 3000/6000/10000 Silver IOPS: 2000/4000/8000 Bronze IOPS: 1000/2000/4000 NetApp SolidFire NetApp Provisioner (Trident) Users & Developers Ops Team / IT Admins Users & Developers Ops Team / IT Admins ※ StorageClass : Storage provisioner 지정, 카탈로그 정의
  • 16. Trident can do,  Kubernetes Dynamic provisioning 을 지원  Admin의 개입없이 User가 Volume 배포  Storage 카탈로깅  QoS  Thin / Thick  Snapshot  PVC 복제 - Rapid Data Cloning  RWM(ReadWriteMany) access mode 지원  검증된 Data protection 기술 활용 16 Trident 적용 추이
  • 17. NetApp Open Source Contribution 17 NetApp은 다양한 오픈 소스 커뮤니티에서 스토리지 프로젝트를 리딩 KubernetesDockerOpenStack  Diablo부터 커뮤니티 멤버로 활동  Charter Gold Member  Elected board representation  Manila, Cinder 프로젝트 Leader  Ecosystem Technology Partner (2016년)  Docker Certification Program (2017년)  First Certified Docker Volume Plugin  First Snapshot & Clone 기능 제공  CNCF Gold Member  First 외장 Dynamic provisioner 개발  First Clone 기능 제공  CSI(Container Storage Interface) 지원 예정
  • 18. NetApp Trident PoC Trident plug-in을 이용한 NFS 가용성 테스트
  • 19. NFS 가용성 테스트 목적  Persistent Volumes for Container services - dynamic provisioning - multi backend  Shared Volumes for Container services - access data both container and host server  High Availability for trident services
  • 20. 테스트 케이스  trident plug-in 주요 기능 검증 - dynamic provisioning 확인 - shared volume 확인 - access mode 확인  trident 서비스 가용성 검증 - trident pod의 take-over  h/w 장애 유발 - node shutdown - storage down - network down
  • 21. Tr i d e n t p l u g - i n 주 요 기 능 검 증 # cat test_pod.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nfs-test spec: accessModes: - ReadWriteMany resources: requests: storage: 300Gi storageClassName: basic --- apiVersion: v1 kind: ReplicationController metadata: name: nfs-busybox spec: replicas: 2 selector: name: nfs-busybox template: metadata: labels: name: nfs-busybox spec: containers: - image: busybox imagePullPolicy: IfNotPresent name: busybox ports: - containerPort: 80 protocol: TCP volumeMounts: # name must match the volume name below - name: nfs-volume mountPath: "/mnt" volumes: - name: nfs-volume persistentVolumeClaim: claimName: nfs-test ---
  • 22. Tr i d e n t p l u g - i n 주 요 기 능 검 증  pod 상태  pv 상태
  • 23. Tr i d e n t p l u g - i n 주 요 기 능 검 증  mount 상태(pod 내부에서 확인)
  • 24. Tr i d e n t p l u g - i n 주 요 기 능 검 증 Container nfs-busybox Volume Persistent VolumeClaim PersistentVolume Disk Replication Controller k8s bind request Container nfs-busybox request StorageClass trident trident etcd dynamicprosivioning
  • 25.  pod 상태  pod 를 다른 node로 take-over  정상 생성 확인
  • 26. Storage control B/B L2 Switch node#01 node#02 Switch 장애 case cpu fault memory fault disk fault mgmt 네트워크 장애 nfs 네트워크 장애 한쪽 Controller 장애 시 전체 NAS 스토리지 전체 장애 시 disk fault controller 장애 kubelet service 장애 docker service 장애 trident service 장애 네트워크 장애 disk 부하 발생 cpu 부하 발생 node shutdown network down storage down
  • 30.  nfs mountOptions  StorageClass
  • 31. 마무리  nfs 가용성테스트 결과 - nfs network 단절로 인한 hang 현상은 nfs 자체 이슈 (운영에 있어서 이와 관련된 option의 적용 협의 필요) - plug-in을 통한 nfs backend storage를 지원하는데 이상 없음