Я новичок в работе с настройкой kubernetes и пытаюсь запустить модуль kafka с постоянным объемом, поэтому в случае отказа модуля память не теряется, и я могу развернуть новый кластер, используя постоянную память.
Проблема с этим
Я пытался сделать здесь
apiVersion: v1
kind: Service
metadata:
name: kafka
labels:
app: kafka
spec:
type: NodePort
ports:
- port: 9092
selector:
app: kafka
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: kafka
spec:
selector:
matchLabels:
app: kafka
serviceName: "kafka"
template:
metadata:
labels:
app: kafka
spec:
terminationGracePeriodSeconds: 10
containers:
- name: kafka
image: bitnami/kafka:latest
# readinessProbe:
# httpGet:
# port: 7070
# path: /readiness
# initialDelaySeconds: 120
# periodSeconds: 15
# failureThreshold: 1
# livenessProbe:
# httpGet:
# port: 7070
# path: /liveness
# initialDelaySeconds: 360
# periodSeconds: 15
# failureThreshold: 3
ports:
- containerPort: 9092
volumeMounts:
- name: kafka
mountPath: /binami/kafka
volumeClaimTemplates:
- metadata:
name: datadir
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
но это, похоже, не работает, по какой-то причине он переходит в состояние ошибки с сообщением об ошибке:
pod has unbound immediate PersistentVolumeClaims
Что я не уверен, что понимаю? - громкость используется только этим?
и модуль не перезапустился, поэтому я совершенно не понимаю, почему это не работает?
PVC-config:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: datadir-kafka-0
namespace: default
selfLink: /api/v1/namespaces/default/persistentvolumeclaims/datadir-kafka-0
uid: 264204f8-21cc-11ea-8f02-00155de9e001
resourceVersion: '149105'
creationTimestamp: '2019-12-18T19:25:28Z'
labels:
app: kafka
annotations:
control-plane.alpha.kubernetes.io/leader: >-
{"holderIdentity":"640e4416-2192-11ea-978b-8c1645373373","leaseDurationSeconds":15,"acquireTime":"2019-12-18T19:25:28Z","renewTime":"2019-12-18T19:25:30Z","leaderTransitions":0}
pv.kubernetes.io/bind-completed: 'yes'
pv.kubernetes.io/bound-by-controller: 'yes'
volume.beta.kubernetes.io/storage-provisioner: docker.io/hostpath
finalizers:
- kubernetes.io/pvc-protection
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
volumeName: pvc-264204f8-21cc-11ea-8f02-00155de9e001
storageClassName: hostpath
volumeMode: Filesystem
status:
phase: Bound
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
PV-конфигурация:
kind: PersistentVolume
apiVersion: v1
metadata:
name: pvc-264204f8-21cc-11ea-8f02-00155de9e001
selfLink: /api/v1/persistentvolumes/pvc-264204f8-21cc-11ea-8f02-00155de9e001
uid: 264dab2e-21cc-11ea-8f02-00155de9e001
resourceVersion: '149091'
creationTimestamp: '2019-12-18T19:25:28Z'
annotations:
docker.io/hostpath: >-
C:\Users\kube\.docker\Volumes\datadir-kafka-0\pvc-264204f8-21cc-11ea-8f02-00155de9e001
pv.kubernetes.io/provisioned-by: docker.io/hostpath
finalizers:
- kubernetes.io/pv-protection
spec:
capacity:
storage: 1Gi
hostPath:
path: >-
/host_mnt/c/Users/kube/.docker/Volumes/datadir-kafka-0/pvc-264204f8-21cc-11ea-8f02-00155de9e001
type: ''
accessModes:
- ReadWriteOnce
claimRef:
kind: PersistentVolumeClaim
namespace: default
name: datadir-kafka-0
uid: 264204f8-21cc-11ea-8f02-00155de9e001
apiVersion: v1
resourceVersion: '149073'
persistentVolumeReclaimPolicy: Delete
storageClassName: hostpath
volumeMode: Filesystem
status:
phase: Bound
Похоже, что динамический поставщик PersistentVolume не поддерживает локальное хранилище, как указано Вот.
Вам необходимо указать StorageClassName указав локальный том, который вы создали в datadir volumeClaimTemplates вашей кафка StatefulSet. Вы можете прочитать пример Вот.
Попробуйте что-то вроде этого:
volumeClaimTemplates:
- metadata:
name: datadir
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: hostpath
resources:
requests:
storage: 1Gi