最初は/var/www/htmlはイメージ化して利用する予定 でしたが、CMSには向いていないと思い永続ボリュームを利用することにしました。
cd ~/work/doks-wp/dev/k8s
kubectl get pvc -A|grep redis
redis redis-data-redis-master-0 Bound pvc-b7222f8f-1247-4074-a73b-3697de6e63f7 5Gi RWX rwx-storage 30h
kubectl get pvc/redis-data-redis-master-0 -n redis -o yaml > pvc-redis.yaml
cp -ip pvc-{redis,web}.yaml
vi pvc-web.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
volume.beta.kubernetes.io/storage-provisioner: openebs.io/nfsrwx
volume.kubernetes.io/storage-provisioner: openebs.io/nfsrwx
name: doks-wp-dev-data-pvc
namespace: doks-wp
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: rwx-storage
volumeMode: Filesystem
kubectl apply -f pvc-web.yaml
kubectl get pv | grep doks
pvc-37792aaa-506a-4686-8fbc-99d53acf5e3e 10Gi RWX Delete Bound doks-wp/doks-wp-dev-data-pvc rwx-storage 29h
kubectl get pvc -A | grep doks
doks-wp doks-wp-dev-data-pvc Bound pvc-37792aaa-506a-4686-8fbc-99d53acf5e3e 10Gi RWX rwx-storage 29h
STATUSがBoundは利用されている状態となります。
幸いworkerノードにはコンソール上からsshできるので、ローカルとsshしてもってきます。
local
kubectl get pvc -n doks-wp
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
doks-wp-dev-data-pvc Bound pvc-37792aaa-506a-4686-8fbc-99d53acf5e3e 10Gi RWX rwx-storage 2d19h
Droplets > poolXXX > Console
root@pool-15ef8usof-x44tj:~# df -h | grep pvc-37792aaa-506a-4686-8fbc-99d53acf5e3e
10.245.42.82:/ 9.8G 79M 9.2G 1% /var/lib/kubelet/pods/7ea6754c-b9e0-4629-88b7-07697644e856/volumes/kubernetes.io~nfs/pvc-37792aaa-506a-4686-8fbc-99d53acf5e3e
root@pool-15ef8usof-x44tj:~# ls -ltr /var/lib/kubelet/pods/7ea6754c-b9e0-4629-88b7-07697644e856/volumes/kubernetes.io~nfs/pvc-37792aaa-506a-4686-8fbc-99d53acf5e3e
drwx------ 2 www-data www-data 16384 Dec 31 06:40 lost+found
root@pool-15ef8usof-x44tj:~#
#!/bin/bash
#set -eu
PVC=pvc-37792aaa-506a-4686-8fbc-99d53acf5e3e
CHK=`df -h | grep $PVC | awk '{print $6}'`
if [ $? != 0 ]; then
exit 1
fi
TGT=$CHK
REMOTE=home:/home/ocarina/work/doks-wp/docker/files/html
if [ "$2" = "yes" ]; then
OPT="--delete -av --exclude=lost+found"
else
OPT="--delete -avn --exclude=lost+found"
fi
function rsync_get ()
{
rsync $OPT -e "ssh -p22221" ${REMOTE}/ ${TGT}/
}
function rsync_put ()
{
rsync $OPT ${TGT}/ -e "ssh -p22221" ${REMOTE}/
}
if [ "$1" = "get" ]; then
rsync_get
elif [ "$1" = "put" ]; then
rsync_put
else
echo "error"
exit 1
fi
dry-runして問題なければ実行します。
rsync-dev.sh get yes
root@pool-15ef8usof-x44tj:~# ls -ltr /var/lib/kubelet/pods/7ea6754c-b9e0-4629-88b7-07697644e856/volumes/kubernetes.io~nfs/pvc-37792aaa-506a-4686-8fbc-99d53acf5e3e| tail -n1
-rw-rw-rw- 1 www-data www-data 4076 Dec 31 08:56 wp-config.php
root@pool-15ef8usof-x44tj:~#
https://kubernetes.io/ja/docs/concepts/storage/volumes/
kubectl get deployment/doks-wp-dev-web -n doks-wp -o yaml > Deployment-doks-wp-web.yaml
kubectl edit deployment/doks-wp-dev-web -n doks-wp
or
vi Deployment-doks-wp-web.yaml
kubdctl apply -f Deployment-doks-wp-web.yaml
- name: doks-wp-dev-storage
persistentVolumeClaim:
claimName: doks-wp-dev-data-pvc
- mountPath: /var/www/html
name: doks-wp-dev-storage