对于PV,我在每个节点(工作节点和控制平面节点)上使用NFS(网络文件系统)服务器。
NFS安装和配置如下所示;
sudo apt-get update && sudo apt-get install nfs-kernel-server
sudo mkdir /nfs-share
- 配置NFS服务器:在每个节点上,将NFS服务器配置为共享在步骤2中创建的目录。通过编辑**
/etc/exports
**文件并添加以下行来完成此操作:/nfs-share *(rw,sync,no_subtree_check)
sudo systemctl start nfs-kernel-server && sudo systemctl status nfs-kernel-server
- 使用以下内容创建PV:
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
path: /nfs-share
server: <NFS-SERVER-IP>
*** 为ip addr show | grep inet
ip addr show | grep inet
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
inet 10.0.0.179/24 brd 10.0.0.255 scope global enp0s3
inet6 fe80::17ff:fe01:d25/64 scope link
inet 10.244.1.0/32 scope global flannel.1
inet6 fe80::3057:20ff:fe32:9efc/64 scope link
inet 10.244.1.1/24 brd 10.244.1.255 scope global cni0
- 此输出中NFS服务器的IP地址为**
10.0.0.179
。这是分配给节点上enp0s3
网络接口的IP地址,也是您将用作持久卷YAML文件中<NFS-SERVER-IP>
**值的地址。 - PVC创建人
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
这是我在所有节点上配置NFS的方式
为了测试PV和PVC,我创建了一个nginx-deployment文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
volumes:
- name: html
persistentVolumeClaim:
claimName: nfs-pvc
我在pod中的容器无法创建,并在描述时给出以下错误
1条答案
按热度按时间ymdaylpp1#
解决方法1:
请检查您是否在安装之前在VM上拍摄了快照。使快照处于活动状态和实时IO可防止对磁盘进行更改(如分离或附加磁盘)。请尝试删除html并保留html-volume,它可能会重新启动。
您可以使用如下命令:
kubectl delete volumeattachment [volumeattachment_name]
FailedMount是这种情况下的常见错误,表示Kubernetes无法分离、重新连接和装载卷。发生这种情况时,您可能需要手动分离磁盘或指示Kubernetes Scheduler在特定节点中启动Pod。
有关详细信息,请参阅类似的SO和Blog。
解决方法2:
FailedMount表示无法将卷装载到特定路径上,这可能是之前错误的结果,因为装载操作发生在连接之后。由于连接操作失败,装载超时到期,这意味着无法执行装载操作。其他原因可能是设备路径不正确或设备装载路径。
有关详细信息,请参阅General discussion和访问模式。