環境
- minikube: v1.3.1
- kubernetes: 1.15
- macOS: 10.14.4
ホストOS側でNFSサーバを起動する
ディレクトリ作成。
sudo mkdir /share
sudo chmod 777 /share
sudo bash -c "echo '/share -mapall=nobody:wheel -network 192.168.99.0 -mask 255.255.255.0' >> /etc/exports"
NFSデーモンの起動
sudo nfsd start
sudo nfsd update
確認
sudo showmount -e
出力
Exports list on localhost:
/share 192.168.99.0
minikube側に/share
ディレクトリを作成
minikube ssh mkdir /share
``
### マウント確認
minikube ssh
sudo mkdir /share
sudo mount -t nfs 192.168.99.1:/share /share
`df`コマンドなどでマウントができていることを確認してアンマウント。
sudo umount /share
## PersistentVolumeと、PersistentVolumeClaimの定義
```yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Recycle
storageClassName: slow
mountOptions:
- hard
nfs:
path: /share
server: 192.168.99.1
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc1
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: slow
適当なファイル名で保存し、kubectl apply -f ファイル名
します。
private registryの起動
nodePortで30500
に固定しています。ホスト側からpushする場合は、nodePortの30500に接続するように設定します。
kind: Service
apiVersion: v1
metadata:
name: registry-service
spec:
selector:
app: registry-service
type: NodePort
ports:
- protocol: TCP
port: 5000
targetPort: 5000
nodePort: 30500
name: registry-http
---
kind: Pod
apiVersion: v1
metadata:
name: registry
labels:
app: registry
spec:
containers:
- name: registry
image: registry:2
volumeMounts:
- mountPath: "/var/lib/registry"
name: pvc
ports:
- containerPort: 5000
volumes:
- name: pvc
persistentVolumeClaim:
claimName: nfs-pvc1
適当なファイル名で保存し、kubectl apply -f ファイル名
します。
private registryのウェブUI
private registryに入っている内容をウェブUIで閲覧できるようにするにはkonradkleine/docker-registry-frontend:v2イメージを使います。
kind: Service
apiVersion: v1
metadata:
name: registry-frontend-service
spec:
selector:
app: registry-frontend-service
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 80
name: registry-http-frontend
---
kind: Pod
apiVersion: v1
metadata:
name: registry-frontend
labels:
app: registry-frontend
spec:
containers:
- name: registry-frontend
image: konradkleine/docker-registry-frontend:v2
ports:
- containerPort: 80
env:
- name: ENV_DOCKER_REGISTRY_HOST
value: registry-service
- name: ENV_DOCKER_REGISTRY_PORT
value: "5000"
適当なファイル名で保存し、kubectl apply -f ファイル名
します。
minikube service registry-frontend-service
と実行するとブラウザで閲覧できます。