私はkubernetesを初めて使用し、statefulset
にPVCを追加しようとしています。 PVとPVCは次のとおりです。
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
neo4j-backups 5Gi RWO Retain Bound default/backups-claim manual 1h
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
backups-claim Bound neo4j-backups 5Gi RWO manual 51m
基本的には、ステートフルセットのすべてのポッドに、バックアップファイルが格納されているボリュームの内容を表示させたいです。
使用されているステートフルセットは次の場所にあります here
Minikubeバージョン:minikube version: v0.25.2
Kubernetesバージョン:GitVersion:"v1.9.4"
volumeClaimTemplates
でStatefulSet
を使用する場合、k8sは動的プロビジョニングを実行し、ポッドごとに1つのPVCと対応するPVを作成するため、それぞれのポッドが独自のストレージを取得します。
必要なのは、1つのPVと1つのPVCを作成し、それをステートフルセットのすべてのレプリカで使用することです。
以下は、Kubernetes 1.10での実行例です。ここで、/var/www/html
は3つのポッドすべてで共有されます。変更するのは/directory/on/Host
をマシンのローカルディレクトリに追加します。また、私はこの例をminikube v0.26.0で実行しました
以下のコースはアイデアを説明するための例にすぎませんが、実際の例では、ポッドのプロセスは共有ストレージへのアクセスの同期化に注意する必要があります。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: example-pv
spec:
capacity:
storage: 100Gi
# volumeMode field requires BlockVolume Alpha feature gate to be enabled.
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: local-storage
local:
path: /directory/on/Host
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- minikube
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: example-local-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: local-storage
---
apiVersion: "apps/v1beta1"
kind: StatefulSet
metadata:
name: nginx
spec:
serviceName: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx-container
image: "nginx:1.12.2"
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: localvolume
mountPath: /var/www/html
volumes:
- name: localvolume
persistentVolumeClaim:
claimName: example-local-claim