GKEで、statefulsetリソースを次のように設定しました
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis
spec:
serviceName: "redis"
selector:
matchLabels:
app: redis
updateStrategy:
type: RollingUpdate
replicas: 3
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis
resources:
limits:
memory: 2Gi
ports:
- containerPort: 6379
volumeMounts:
- name: redis-data
mountPath: /usr/share/redis
volumes:
- name: redis-data
persistentVolumeClaim:
claimName: redis-data-pvc
塩ビを使いたいのでこれを作りました。(この手順は、ステートフルセットの展開前に実行されました)
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-data-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
kubernetesのリソースを確認するとき
kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
redis-data-pvc Bound pvc-6163d1f8-fb3d-44ac-a91f-edef1452b3b9 10Gi RWO standard 132m
デフォルトのストレージクラスはstandard
です。
kubectl get storageclass
NAME PROVISIONER
standard (default) kubernetes.io/gce-pd
ただし、statafulsetの展開ステータスを確認する場合。それはいつも間違っています。
# Describe its pod details
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 22s default-scheduler persistentvolumeclaim "redis-data-pvc" not found
Warning FailedScheduling 17s (x2 over 20s) default-scheduler pod has unbound immediate PersistentVolumeClaims (repeated 2 times)
Normal Created 2s (x2 over 3s) kubelet Created container redis
Normal Started 2s (x2 over 3s) kubelet Started container redis
Warning BackOff 0s (x2 over 1s) kubelet Back-off restarting failed container
なぜredis-data-pvc
名前が見つからないのですか?
あなたがしたことは、うまくいくはずです。PersistentVolumeClaim
とStatefulSet
が同じ名前空間にあることを確認してください。
そうは言っても、これはより簡単なソリューションであり、より多くのレプリカに簡単にスケールアップできます。
StatefulSetおよびPersistentVolumeClaimを使用する場合は、代わりにStatefulSetのvolumeClaimTemplates:
フィールドを使用してください。
volumeClaimTemplates:
各レプリカのためのユニークなPVCを作成するために使用される、と彼らは例えばで終わるユニークなネーミングを持つことになる-0
数字です序StatefulSetでの複製に使用されます。
したがって、代わりに、次のようなSatefuleSetマニフェストを使用します。
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis
spec:
serviceName: "redis"
selector:
matchLabels:
app: redis
updateStrategy:
type: RollingUpdate
replicas: 3
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis
resources:
limits:
memory: 2Gi
ports:
- containerPort: 6379
volumeMounts:
- name: redis-data
mountPath: /usr/share/redis
volumeClaimTemplates: // this will be used to create PVC
- metadata:
name: redis-data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 10Gi
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加