postgresql - Kubernetes 从 GCE 持久磁盘卷配置 PVC 显示错误
问题描述
我正在使用具有 2 个节点的 GCE 集群,我使用 kubeadm 进行设置。现在我想为要部署的 postgresql 设置一个持久卷。我创建了一个带有 storageClass 的 PVC 和 PV,并在同一个项目中创建了一个名为postgres的 10G 磁盘空间。我在下面附加了 PVC、PV 和部署的脚本。另外我正在使用一个具有访问权限的服务帐户到磁盘。
1.部署.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: kyc-postgres
spec:
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- image: "postgres:9.6.2"
name: postgres
ports:
- containerPort: 5432
name: postgres
volumeMounts:
- name: postgres-storage
mountPath: /var/lib/postgresql/db-data
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: kyc-postgres-pvc
2.PersistentVolumeClaim.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: kyc-postgres-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: standard
3.PersistentVolume.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: kyc-postgres-pv
annotations:
kubernetes.io/createdby: gce-pd-dynamic-provisioner
pv.kubernetes.io/bound-by-controller: "yes"
pv.kubernetes.io/provisioned-by: kubernetes.io/gce-pd
finalizers:
- kubernetes.io/pv-protection
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 5Gi
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: kyc-postgres-pvc
namespace: default
gcePersistentDisk:
fsType: NTFS
pdName: postgres
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: failure-domain.beta.kubernetes.io/zone
operator: In
values:
- us-central1-a
- key: failure-domain.beta.kubernetes.io/region
operator: In
values:
- us-central1-a
persistentVolumeReclaimPolicy: Delete
storageClassName: standard
volumeMode: Filesystem
status:
phase: Bound
- 存储类.yml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: standard
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-standard
zone: us-central1-a
现在,当我创建这些卷和部署时,pod 没有正确启动。当我厌倦了创建部署时,我收到以下错误。
Failed to get GCE GCECloudProvider with error <nil>
我还附上了我的输出kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
standard kubernetes.io/gce-pd Delete Immediate false 10m
有人可以帮我解决这个问题吗?提前感谢您的时间——如果我错过了任何事情,过分强调或过分强调某一点,请在评论中告诉我。
解决方案
您PersistentVolumeClaim
没有指定 a storageClassName
,所以我想您可能想要使用默认的StorageClass。使用默认 StorageClass 时,您无需创建PersistentVolume
资源,该资源将从 Google Cloud Platform 动态提供。(或者有什么特殊原因你不想使用默认的 StorageClass?)
推荐阅读
- laravel - Laravel 查询两个不相关的模型并从两者返回字段
- ios - 如何防止接口控制器锁屏?(手表操作系统)
- javascript - OnCollisionEnter 与多边形对撞机 2d 和 input.getmousebutton
- android - android 可打包损失对象
- go - 导入“C”的问题
- python - 如何让 is_safe_url() 函数与 Flask 一起使用,它是如何工作的?
- c# - 为每个 pdf 页面添加页码和作为页脚对齐的文本
- javascript - 如何调用其他组件中定义的方法
- numpy - 如何使用一些固定参数对 numpy 中的函数进行矢量化?
- image - JavaFX 生成空白单色图像