我在以下的部署中使用了如下的体积索赔。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: persistent-storage-claim
labels:
app: {{ include "api-chart.name" . }}
chart: {{ include "api-chart.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: managed-premium
volumeName: personal
在以下部署中。
...
...
spec:
imagePullSecrets:
- name: registrySecret
volumes:
- name: personal-volume
persistentVolumeClaim:
claimName: persistent-storage-claim
containers:
- name: container1
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: {{ .Values.service.targetPort }}
protocol: TCP
volumeMounts:
- name: personal-volume
mountPath: "/workspace"
...
安装该卷似乎会导致部署挂起(它没有部署,但我在任何地方都没有看到错误信息)。如果 volumenMounts
部分被删除,部署成功。我使用的是 helm install
来部署应用程序。有什么办法可以解决这个问题吗?或者至少如何调试这个问题?
更新。kubectl get events
返回以下内容。
LAST SEEN TYPE REASON OBJECT MESSAGE
46s Warning FailedScheduling pod/storage-test-labd62r2 pod has unbound immediate PersistentVolumeClaims (repeated 3 times)
24m Normal SuccessfulCreate replicaset/test-storage-b65db5698 Created pod: storage-test-labd62r2
24m Normal ScalingReplicaSet deployment/test-storage Scaled up replica set test-storage-b65db5698 to 1
24m Normal CREATE ingress/test-storage Ingress default/test-storage
24m Normal CREATE ingress/test-storage Ingress default/test-storage
24m Normal UPDATE ingress/test-storage Ingress default/test-storage
24m Normal UPDATE ingress/test-storage Ingress default/test-storage
和 kubectl get pvc
给予。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistent-storage-claim Pending personal 0 managed-premium 33m
kubectl get pv
不显示任何东西
kubectl svc
:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
test-storage ClusterIP 10.0.244.147 <none> 80/TCP,8080/TCP 35m
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 16d
这种情况的发生一般是因为没有手动配置的 PersistentVolume
以满足 PersistentVolumeClaim
或 StorageClass
不存在或不能动态地提供一种新技术。PersistentVolume
以满足 PersistentVolumeClaim