gpt4 book ai didi

Kubernetes 未声明持久卷 - "failed due to PersistentVolumeClaim is not bound: "task-pv-claim”,这是意外的。”

转载 作者:行者123 更新时间:2023-12-02 11:58:48 24 4
gpt4 key购买 nike

我不确定为什么没有声明持久卷,或者我可以采取什么步骤来进一步诊断这个问题?

claim 大小是否应与卷大小匹配?卷大小是否应与 GCP 卷大小匹配?

这很难测试和弄清楚...

我的目标是能够创建一个 Wordpress 实例,即使只有一个副本,只要它支持滚动部署....

kubectl get pods 的输出:

NAME                         READY     STATUS    RESTARTS   AGE
wordpress-1546832918-mz4rt 0/3 Pending 0 47m
wordpress-1546832918-p0s1s 0/3 Pending 0 47m

kubectl describe pods 的输出:

...truncated...
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
47m 3s 168 default-scheduler Warning FailedScheduling [SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "task-pv-claim", which is unexpected., SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "task-pv-claim", which is unexpected.]

kubectl get pvc 的输出:

NAME            STATUS    VOLUME    CAPACITY   ACCESSMODES   STORAGECLASS   AGE
task-pv-claim Pending manual 4h

kubectl get pv 的输出:

NAME      CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS      CLAIM     STORAGECLASS   REASON    AGE
pv0001 10Gi RWX Retain Available manual 4h

production.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: wordpress
labels:
app: wordpress
spec:
replicas: 2
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
terminationGracePeriodSeconds: 30
containers:
- image: eu.gcr.io/abcxyz/wordpress:deploy-1502807720
name: wordpress
imagePullPolicy: "Always"
env:
- name: WORDPRESS_HOST
value: localhost
- name: WORDPRESS_DB_USERNAME
valueFrom:
secretKeyRef:
name: cloudsql-db-credentials
key: username
volumeMounts:
- name: wordpress-persistent-storage
mountPath: /var/www/html
- image: eu.gcr.io/abcxyz/nginx:deploy-1502807720
name: nginx
imagePullPolicy: "Always"
ports:
- containerPort: 80
name: nginx
volumeMounts:
- name: wordpress-persistent-storage
mountPath: /var/www/html
readOnly: true
- image: gcr.io/cloudsql-docker/gce-proxy:1.09
name: cloudsql-proxy
command: ["/cloud_sql_proxy", "--dir=/cloudsql",
"-instances=abcxyz:europe-west1:wordpressdb2=tcp:3306",
"-credential_file=/secrets/cloudsql/credentials.json"]
volumeMounts:
- name: cloudsql-instance-credentials
mountPath: /secrets/cloudsql
readOnly: true
- name: ssl-certs
mountPath: /etc/ssl/certs
- name: cloudsql
mountPath: /cloudsql
volumes:
- name: wordpress-persistent-storage
persistentVolumeClaim:
claimName: "task-pv-claim"
- name: cloudsql-instance-credentials
secret:
secretName: cloudsql-instance-credentials
- name: ssl-certs
hostPath:
path: /etc/ssl/certs
- name: cloudsql
emptyDir:

pVolume.yaml

apiVersion: "v1"
kind: "PersistentVolume"
metadata:
name: "pv0001"
spec:
storageClassName: manual
capacity:
storage: "10Gi"
accessModes:
- "ReadWriteMany"
gcePersistentDisk:
fsType: "ext4"
pdName: "wordpress-disk"

pVolumeClaim.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: task-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi

最佳答案

您的持久卷声明的 spec.accessModes 必须与持久卷中的相匹配。尝试将它们都更改为相同的值。

如果这不起作用,您可以将 spec.selector 定义添加到您的持久卷声明定义中,方法是更新它以匹配您的持久卷 metadata.labels像这样:

apiVersion: "v1"
kind: "PersistentVolume"
metadata:
name: "pv0001"
labels:
name: "pv0001" # can be anything as long as it matches the selector in the pvc
spec:
...

----
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: task-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
selector:
matchLabels:
name: "pv0001"

spec.selector 用作过滤器以确保仅匹配具有指定标签的 PV。

关于Kubernetes 未声明持久卷 - "failed due to PersistentVolumeClaim is not bound: "task-pv-claim”,这是意外的。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45696213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com