Slide 1

Slide 1 text

Masaya Aoyama CyberAgent adtech studio PersistentVolumeClaimResizeͰ ϘϦϡʔϜΛ్தͰ֦ு͠Α͏ @Cloud Native Developers JP #08 ʙ݁ہKubernetesͷετϨʔδͲ͏͢Δͷʁʙ LT MasayaAoyama @amsy810

Slide 2

Slide 2 text

Japan Container Days v18.04 Keynote 登壇 Cloud Native Meetup Tokyo Organizer (+ KubeCon日本人会 + JKD) CKA #138、CKAD #2 連載「今こそ始めよう!Kubernetes 入門」 @ThinkIT OpenStack / Kubernetes Contributor Masaya Aoyama (@amsy810) Infrastructure Engineer

Slide 3

Slide 3 text

Dynamic Provisioningのおさらい

Slide 4

Slide 4 text

Dynamic Provisioning時の PersistentVolume と PersistentVolumeClaim PersistentVolumeClaim PersistentVolumeの要求を発行 kind: PersistentVolumeClaim apiVersion: v1 metadata: name: sample-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 8G storageClassName: sample-sc apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: sample-sc parameters: type: pd-ssd provisioner: kubernetes.io/gce-pd reclaimPolicy: Delete 8 G

Slide 5

Slide 5 text

Dynamic Provisioning時の PersistentVolume と PersistentVolumeClaim PersistentVolumeClaim PersistentVolume PersistentVolumeの要求を発行 要求に合致したPersistentVolumeを作成 8 G 8 G

Slide 6

Slide 6 text

Dynamic Provisioning時の PersistentVolume と PersistentVolumeClaim GCP P Disk PersistentVolumeClaim PersistentVolume PersistentVolumeの要求を発行 要求に合致したPersistentVolumeを作成 要求に合致したディスクの実体を作成(同時) 8 G 8 G 8 G

Slide 7

Slide 7 text

通常はPersistentVolumeClaimの サイズ変更はできない $ kubectl patch pvc sample-pvc \ --patch '{"spec": {"resources": {"requests": {"storage": "1G"}}}}' The PersistentVolumeClaim "sample-pvc" is invalid: spec: Forbidden: field is immutable after creation

Slide 8

Slide 8 text

PersistentVolumeClaimResize

Slide 9

Slide 9 text

PersistentVolumeClaimResizeの利用 PersistentVolumeClaim PersistentVolumeの要求を発行 kind: PersistentVolumeClaim apiVersion: v1 metadata: name: sample-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 8G storageClassName: sample-sc apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: sample-sc parameters: type: pd-ssd provisioner: kubernetes.io/gce-pd reclaimPolicy: Delete allowVolumeExpansion: true 8 G

Slide 10

Slide 10 text

PersistentVolumeClaimResizeの利用 PersistentVolumeClaim PersistentVolume PersistentVolumeの要求を発行 要求に合致したPersistentVolumeを作成 8 G 8 G

Slide 11

Slide 11 text

PersistentVolumeClaimResizeの利用 GCP P Disk PersistentVolumeClaim PersistentVolume PersistentVolumeの要求を発行 要求に合致したPersistentVolumeを作成 要求に合致したディスクの実体を作成 8 G 8 G 8 G

Slide 12

Slide 12 text

PersistentVolumeClaimResizeの利用 GCP P Disk PersistentVolumeClaim PersistentVolume kind: PersistentVolumeClaim apiVersion: v1 metadata: name: sample-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 8G storageClassName: sample-sc 8 G 8 G 8 G 登録されているPersistentVolumeClaim

Slide 13

Slide 13 text

PersistentVolumeClaimResizeの利用 GCP P Disk PersistentVolumeClaim PersistentVolume kind: PersistentVolumeClaim apiVersion: v1 metadata: name: sample-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 16 G storageClassName: sample-sc 16 G 8 G 8 G PVCのマニフェストを変更

Slide 14

Slide 14 text

PersistentVolumeClaimResizeの利用 GCP P Disk PersistentVolumeClaim PersistentVolume kind: PersistentVolumeClaim apiVersion: v1 metadata: name: sample-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 16 G storageClassName: sample-sc 16 G 8 G 16 G Kubernetes 1.10時点では PVの表示が変わらない問題

Slide 15

Slide 15 text

リサイズの条件 リサイズはより大きなディスクサイズへのみ可能 $ kubectl patch pvc sample-pvc \ --patch '{"spec": {"resources": {"requests": {"storage": "1G"}}}}' The PersistentVolumeClaim "sample-pvc" is invalid: spec.resources.requests.storage: Forbidden: field can not be less than previous value

Slide 16

Slide 16 text

ボリュームは拡張されるのはわかった ファイルシステムは?

Slide 17

Slide 17 text

ファイルシステムの拡張 XFS/EXT3/EXT4に限りファイルシステムの拡張が可能 Podの再作成時に拡張される PersistentVolume FileSystem PersistentVolume . FileSystem PersistentVolume FileSystem . 初期状態 PVC(PV)の拡張後 Podの再作成後

Slide 18

Slide 18 text

使用中の ファイルシステムの拡張 Alpha:Kubernetes 1.11 ExpandInUsePersistentVolumes Feature Gateの有効化が必要 PersistentVolume FileSystem PersistentVolume . FileSystem . 初期状態 PVC(PV)の拡張後 Podの再作成は不要

Slide 19

Slide 19 text

PVCRはもう使えるのか? どこでも使えるのか?

Slide 20

Slide 20 text

PersistentVolumeClaimResizeの対応状況 Alpha:Kubernetes 1.8、 Beta:Kubernetes 1.11 •  gcePersistentDisk •  awsElasticBlockStore •  Cinder •  glusterfs •  rbd •  Azure File •  Azure Disk •  Portworx https://kubernetes.io/docs/concepts/storage/persistent-volumes/#storageclasses

Slide 21

Slide 21 text

PVCRの有効化 PVCRの有効化 = PersistentVolumeClaimResize のAdmissionControlを有効化   + ExpandInUsePersistentVolumes のFeature Gateを有効化     (v1.12からデフォルトで有効) Authentication Authorization AdmissionControl

Slide 22

Slide 22 text

PVCRの有効化@GKE GKEの場合はAlphaクラスタを構築することで利用可能  ・30日後に自動的に削除  ・SLAの対象外  ・プロダクション利用非推奨  ・Kubernetesバージョンのアップグレード不可 Kubernetes v1.11でベータリリースなので、 そろそろGKE Alphaクラスタでなくても利用可能になる予定

Slide 23

Slide 23 text

まとめ Persistent Volumeのリサイズは可能 Kubernetes 1.8 – 1.10  PVCのリサイズが可能(alpha) Kubernetes 1.11  PVCのリサイズが可能(beta)  GKEの非Alphaクラスタでも利用可能(予定) Kubernetes 1.12  使用中のPVCのリサイズも可能(alpha)

Slide 24

Slide 24 text

https://bit.ly/k8s-amsy810 Kubernetesの各リソースについて体系的かつ網羅的に説明 Cloud Nativeな開発を促進させる周辺エコシステムについても紹介 ■⽬次案 第1章 Dockerの復習とHello, Kubernetes 第2章 なぜKubernetesが必要なのか? 第3章 Kubernetes環境の選択肢 第4章 APIリソースとkubectl 第5章 Workloadsリソース 第6章 Discovery & LBリソース 第7章 Config & Storageリソース 第8章 ClusterリソースとMetadataリソース 第9章 リソース管理とオートスケーリング 第10章 ヘルスチェックとコンテナのライフサイクル 第11章 メンテナンスとノードの停⽌ 第12章 ⾼度で柔軟なスケジューリング 第13章 セキュリティ 第14章 マニフェストの汎⽤化を⾏うオープンソースソフトウェア 第15章 モニタリング 第16章 コンテナログの集約 第17章 CI/CD環境 第18章 マイクロサービスとServiceMesh 第19章 Kubernetesのアーキテクチャ 第20章 Kubernetesとこれから 付録

Slide 25

Slide 25 text

Thank you for your attension follow me: @amsy810