PersistentVolumeClaimResizeで ボリュームを途中で拡張しよう @Cloud Native Developers JP #08 〜結局Kubernetesのストレージどうするの?〜 LT / cndjp8_pvcr

PersistentVolumeClaimResizeで ボリュームを途中で拡張しよう @Cloud Native Developers JP #08 〜結局Kubernetesのストレージどうするの?〜 LT / cndjp8_pvcr

PersistentVolumeClaimResizeでボリュームを途中で拡張しよう
@Cloud Native Developers JP #08〜結局Kubernetesのストレージどうするの?〜 LT
Masaya Aoyama (@amsy810)

De266761b955b2636e454a1bc7a99ed4?s=128

Masaya Aoyama (@amsy810)

October 04, 2018
Tweet

Transcript

  1. Masaya Aoyama CyberAgent adtech studio PersistentVolumeClaimResizeͰ ϘϦϡʔϜΛ్தͰ֦ு͠Α͏ @Cloud Native Developers

    JP #08 ʙ݁ہKubernetesͷετϨʔδͲ͏͢Δͷʁʙ LT MasayaAoyama @amsy810
  2. 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
  3. Dynamic Provisioningのおさらい

  4. 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
  5. Dynamic Provisioning時の PersistentVolume と PersistentVolumeClaim PersistentVolumeClaim PersistentVolume PersistentVolumeの要求を発行 要求に合致したPersistentVolumeを作成 8

    G 8 G
  6. Dynamic Provisioning時の PersistentVolume と PersistentVolumeClaim GCP P Disk PersistentVolumeClaim PersistentVolume

    PersistentVolumeの要求を発行 要求に合致したPersistentVolumeを作成 要求に合致したディスクの実体を作成(同時) 8 G 8 G 8 G
  7. 通常は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
  8. PersistentVolumeClaimResize

  9. 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
  10. PersistentVolumeClaimResizeの利用 PersistentVolumeClaim PersistentVolume PersistentVolumeの要求を発行 要求に合致したPersistentVolumeを作成 8 G 8 G

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

    G 8 G 8 G
  12. 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
  13. 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のマニフェストを変更
  14. 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の表示が変わらない問題
  15. リサイズの条件 リサイズはより大きなディスクサイズへのみ可能 $ 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
  16. ボリュームは拡張されるのはわかった ファイルシステムは?

  17. ファイルシステムの拡張 XFS/EXT3/EXT4に限りファイルシステムの拡張が可能 Podの再作成時に拡張される PersistentVolume FileSystem PersistentVolume . FileSystem PersistentVolume FileSystem

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

    . FileSystem . 初期状態 PVC(PV)の拡張後 Podの再作成は不要
  19. PVCRはもう使えるのか? どこでも使えるのか?

  20. 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
  21. PVCRの有効化 PVCRの有効化 = PersistentVolumeClaimResize のAdmissionControlを有効化   + ExpandInUsePersistentVolumes のFeature Gateを有効化

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

  23. まとめ Persistent Volumeのリサイズは可能 Kubernetes 1.8 – 1.10  PVCのリサイズが可能(alpha) Kubernetes 1.11

     PVCのリサイズが可能(beta)  GKEの非Alphaクラスタでも利用可能(予定) Kubernetes 1.12  使用中のPVCのリサイズも可能(alpha)
  24. 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とこれから 付録
  25. Thank you for your attension follow me: @amsy810