初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）外部ストレージ編パート２

# 背景
個人的にインフラの知識以上にこれからのアプリケーションが動く環境を作ってデプロイしたりしてこれからの知識を身に着けたい。そしてより一層、自分の知識のアップデートをしたいと思いました。

その中でこの本に出会い、これから少しずつやったことを残し、未来の自分への手紙としてもあり、見つめ直せればと思いました。

# 引用や参考と今回の自分の勉強用の書籍の紹介
[技術評論社『Kubernetes実践入門』のサンプルコード](https://github.com/kubernetes-practical-guide/examples)
[Kubernetes実践入門 プロダクションレディなコンテナ＆アプリケーションの作り方](https://gihyo.jp/book/2019/978-4-297-10438-2)
![](http://image.gihyo.co.jp/assets/images/cover/2019/9784297104382.jpg)


## 実際の学びについて

書籍を読みながら、章ごとに少しずつ進めていきたいと思います。
GitHub のソースコードも使いながら学んで行きたいと思います。
***この章の勉強は本当に書籍の写経が主になるかもしれません・・・***


# 勉強開始

### 外部ストレージの割当

```yaml:mysql-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: backup
spec:
  capacity:
    storage: 10Gi
  accessModes:                          #(a)
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain #(b)
  storageClassName: nfs                 #(c)
  mountOptions:
    - hard
  nfs:                                  #(d)
    path: /Users/share
    server: 192.168.3.4
```

#### a. accessModes について

|値|説明|
|:-:|:-:|
|ReadWriteOnce|１つのノードから Read/Write でマウントできる|
|ReadOnlyMany|複数のノードから Read Only でマウントできる|
|ReadWriteMany|１つのノードから Read/Write でマウントできる|

#### b. persistentVolumeReclaimPolicy について

PersistentVolumeClaim が削除されたときにどうするのかの動作ポリシーのこと

|値|説明|
|:-:|:-:|
|Retain|データの削除を行わず、データを保持する|
|Recycle|データを削除する|
|Retain|データと関連するストレージリソースを削除する|

#### c. storageClassName について

StorageClass の名前を定義できるもののこと

#### d. nfs について

ストレージの設定のこと

```console:マニュフェストの適用
$ kubectl apply -f mysql-pv.yaml
persistentvolume/backup created
```

```console:設定内容を確認する
$ kubectl get persistentvolume
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
backup   10Gi       RWX            Retain           Available           nfs                     63s
```


#### PersistentVolumeClaim の設定

```yaml:mysql-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: backup-mysql
spec:
  accessModes:               # mysql-pv.yaml の accessModes と合わせる
    - ReadWriteMany
  resources:                 # mysql-pv.yaml の storage と合わせる
    requests:
      storage: 10Gi
  storageClassName: nfs      # mysql-pv.yaml の storageClassName と合わせる
```

```console:マニュフェスト適用
$ kubectl apply -f mysql-pvc.yaml
persistentvolumeclaim/backup-mysql created
```

```console:設定内容を確認する
$ kubectl get persistentvolumeclaims
NAME           STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
backup-mysql   Bound    backup   10Gi       RWX            nfs            58s

$ kubectl get persistentvolume
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                  STORAGECLASS   REASON   AGE
backup   10Gi       RWX            Retain           Bound    default/backup-mysql   nfs                     9m9s
```
> `kubectl get persistentvolume` で CLAIM が設定されているのを確認

## 次は 3.7.5 章をやっていきます。

StatefulSet を使った MySQL の Mater-Slave 構成を学んで行きたいと思います

現時点で github から前もって動かして確認したらマウントが出来なかったり、script がうまく動かないとかで書籍と同じ動きにならないので困って居ます

StayHome でやっていこうと思ったのに進まないので誰か質問に乗って欲しいです！



# 最後に

今回は、ストレージを使うためには `persistentvolume` を設定し `persistentvolumeclaim` で紐付けを行い使うという内容と仕組みを学べたとおもいます。

# マウントができる様になりました。

## やったこと

### ちょっとだけかきかえました

```conf:/etc/exports
/System/Volumes/Data/Users/user_name/study/share 192.168.3.4 -mapall=501:20
```
> **/System/Volumes/Data/Users/** から始めないとだめみたいで、このサイトを参考にしました
[macOS CatalinaからNFS exportsするには](https://qiita.com/imaiworks/items/b657046ea499ec8fd95c)
[macOS 10.15 Catalina](https://kohju.justplayer.com/Tips_MacOSX_calalina10.15.html)

### これも試行錯誤で行いました（不要だったらごめんなさい）
```conf:/etc/nfs.conf
#
# nfs.conf: the NFS configuration file
#
nfs.server.mount.require_resv_port = 0 # 追加
```


# 今までの投稿
1. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）Pod編](https://qiita.com/nodokaodayaka/items/04d8bc3c9c40443c1cd3)
2. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）NameSpace 編](https://qiita.com/nodokaodayaka/items/73bc1c939a665aaa4b7b)
3. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）Label 編](https://qiita.com/nodokaodayaka/items/fd5284475fb1ba920559)
4. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）ReplicaSet 編](https://qiita.com/nodokaodayaka/items/fc9f749f123649a2dbd9)
5. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）Deployment 編](https://qiita.com/nodokaodayaka/items/2c9d4eefec40d4896126)
6.  [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）Service 編](https://qiita.com/nodokaodayaka/items/28955bd813eaf512baf5)
7. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）ConfigMap 編](https://qiita.com/nodokaodayaka/items/09c7627eaa913da78cf8)
8. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）Secret 編](https://qiita.com/nodokaodayaka/items/8bc1a5963a7c7c177010)
9. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）操作編](https://qiita.com/nodokaodayaka/items/09cb848164e4a1855c83)
10. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）体感編](https://qiita.com/nodokaodayaka/items/ae95e04b064b7600f6af) 
11. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）体感編パート２](https://qiita.com/nodokaodayaka/items/fa87fd7a3733957e7aca) 
12. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）体感編パート3（Label操作）](https://qiita.com/nodokaodayaka/items/8f1892eb1627d0717180)
13. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）体感編パート3（OwnerReference 操作）](https://qiita.com/nodokaodayaka/items/b4ad326be41626da9b2e)
14. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）マニュフェスト編](https://qiita.com/nodokaodayaka/items/8d212a5f1eeb2685f51c)
15. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）マニュフェスト(ConfigMap)編](https://qiita.com/nodokaodayaka/items/7dd2f3885d8e957ffaad)
16. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）通信編](https://qiita.com/nodokaodayaka/items/71c6f7d469cf2f277d3d)
17. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）通信編 パート２](https://qiita.com/nodokaodayaka/items/2663e1931bd1ec007785)
18. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）通信編 パート３](https://qiita.com/nodokaodayaka/items/9ad45aa52d76bcb844d7)
19. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）通信編 パート４](https://qiita.com/nodokaodayaka/items/e6ef632223f9ac2cc99e)
20. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）公開編パート１（NodePort）](https://qiita.com/nodokaodayaka/items/754a32235cf7e648e8f9)
21. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）公開編パート２（LoadBalancer）](https://qiita.com/nodokaodayaka/items/79df5bbefbb0e1a938bd)
22. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）公開編パート３（Ingress）](https://qiita.com/nodokaodayaka/items/f4433cce735f967c294e)
23. [初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）外部ストレージ編](https://qiita.com/nodokaodayaka/items/ae7dc8d442280b5bb9ab)