gpt4 book ai didi

mysql - 无法为 Pod 安装卷

转载 作者:行者123 更新时间:2023-11-29 01:54:24 26 4
gpt4 key购买 nike

编辑:我有一个包含一个主节点和两个节点的 OpenShift 集群。我已经在节点上的主节点和 NFS 客户端上安装了 NFS。我已经使用 NFS 跟踪了 wordpress 示例:https://github.com/openshift/origin/tree/master/examples/wordpress

我在我的主人身上做了以下事情:oc login -u system:admin:

mkdir /home/data/pv0001
mkdir /home/data/pv0002

chown -R nfsnobody:nfsnobody /home/data

chmod -R 777 /home/data/

# Add to /etc/exports
/home/data/pv0001 *(rw,sync,no_root_squash)
/home/data/pv0002 *(rw,sync,no_root_squash)

# Enable the new exports without bouncing the NFS service
exportfs -a

所以 exportfs 显示:

/home/data/pv0001
<world>
/home/data/pv0002
<world>

$ setsebool -P virt_use_nfs 1


# Create the persistent volumes for NFS.
# I did not change anything in the yaml-files
$ oc create -f examples/wordpress/nfs/pv-1.yaml
$ oc create -f examples/wordpress/nfs/pv-2.yaml
$ oc get pv

NAME LABELS CAPACITY ACCESSMODES STATUS CLAIM REASON
pv0001 <none> 1073741824 RWO,RWX Available
pv0002 <none> 5368709120 RWO Available

这也是我得到的。比我去我的节点:

oc login
test-admin

然后我创建了一个 wordpress 项目:

oc new-project wordpress

# Create claims for storage in my project (same namespace).
# The claims in this example carefully match the volumes created above.
$ oc create -f examples/wordpress/pvc-wp.yaml
$ oc create -f examples/wordpress/pvc-mysql.yaml
$ oc get pvc

NAME LABELS STATUS VOLUME
claim-mysql map[] Bound pv0002
claim-wp map[] Bound pv0001

这对我来说完全一样。

启动 MySQL pod。

oc create -f examples/wordpress/pod-mysql.yaml
oc create -f examples/wordpress/service-mysql.yaml
oc create -f examples/wordpress/pod-wordpress.yaml
oc create -f examples/wordpress/service-wp.yaml

oc get svc
NAME LABELS SELECTOR IP(S) PORT(S)
mysql name=mysql name=mysql 172.30.115.137 3306/TCP
wpfrontend name=wpfrontend name=wordpress 172.30.170.55 5055/TCP

所以实际上一切似乎都有效!但是当我询问我的 pod 状态时,我得到以下信息:

[root@ip-10-0-0-104 pv0002]# oc get pod
NAME READY STATUS RESTARTS AGE
mysql 0/1 Image: openshift/mysql-55-centos7 is ready, container is creating 0 6h
wordpress 0/1 Image: wordpress is not ready on the node 0 6h

Pod 处于挂起状态,并且在网络控制台中出现以下错误:

12:12:51 PM     mysql   Pod     failedMount     Unable to mount volumes for pod "mysql_wordpress": exit status 32 (607 times in the last hour, 41 minutes)
12:12:51 PM mysql Pod failedSync Error syncing pod, skipping: exit status 32 (607 times in the last hour, 41 minutes)
12:12:48 PM wordpress Pod failedMount Unable to mount volumes for pod "wordpress_wordpress": exit status 32 (604 times in the last hour, 40 minutes)
12:12:48 PM wordpress Pod failedSync Error syncing pod, skipping: exit status 32 (604 times in the last hour, 40 minutes)

无法挂载 +timeout。但是当我转到我的节点并执行以下操作时(测试是我节点上创建的目录):

mount -t nfs -v masterhostname:/home/data/pv0002 /test

我在我的节点上的/test 中放置了一些文件,而不是它在我的主服务器上的/home/data/pv0002 中出现的文件,所以这似乎有效。OpenShift 无法挂载是什么原因?我已经坚持了一段时间。

日志:

Oct 21 10:44:52 ip-10-0-0-129 docker: time="2015-10-21T10:44:52.795267904Z" level=info msg="GET /containers/json"
Oct 21 10:44:52 ip-10-0-0-129 origin-node: E1021 10:44:52.832179 1148 mount_linux.go:103] Mount failed: exit status 32
Oct 21 10:44:52 ip-10-0-0-129 origin-node: Mounting arguments: localhost:/home/data/pv0002 /var/lib/origin/openshift.local.volumes/pods/2bf19fe9-77ce-11e5-9122-02463424c049/volumes/kubernetes.io~nfs/pv0002 nfs []
Oct 21 10:44:52 ip-10-0-0-129 origin-node: Output: mount.nfs: access denied by server while mounting localhost:/home/data/pv0002
Oct 21 10:44:52 ip-10-0-0-129 origin-node: E1021 10:44:52.832279 1148 kubelet.go:1206] Unable to mount volumes for pod "mysql_wordpress": exit status 32; skipping pod
Oct 21 10:44:52 ip-10-0-0-129 docker: time="2015-10-21T10:44:52.832794476Z" level=info msg="GET /containers/json?all=1"
Oct 21 10:44:52 ip-10-0-0-129 docker: time="2015-10-21T10:44:52.835916304Z" level=info msg="GET /images/openshift/mysql-55-centos7/json"
Oct 21 10:44:52 ip-10-0-0-129 origin-node: E1021 10:44:52.837085 1148 pod_workers.go:111] Error syncing pod 2bf19fe9-77ce-11e5-9122-02463424c049, skipping: exit status 32

最佳答案

日志显示 Oct 21 10:44:52 ip-10-0-0-129 origin-node:输出:mount.nfs:安装 localhost 时服务器拒绝访问:/home/data/pv0002

所以它在本地主机上挂载失败。为了创建我的持久卷,我执行了这个 yaml:

{
"apiVersion": "v1",
"kind": "PersistentVolume",
"metadata": {
"name": "registry-volume"
},
"spec": {
"capacity": {
"storage": "20Gi"
},
"accessModes": [ "ReadWriteMany" ],
"nfs": {
"path": "/home/data/pv0002",
"server": "localhost"
}
}
}

所以我挂载到 /home/data/pv0002 但这条路径不在本地主机上,而是在我的主服务器上(即 ose3-master.example.com. 所以我以错误的方式创建了我的 PV。

{
"apiVersion": "v1",
"kind": "PersistentVolume",
"metadata": {
"name": "registry-volume"
},
"spec": {
"capacity": {
"storage": "20Gi"
},
"accessModes": [ "ReadWriteMany" ],
"nfs": {
"path": "/home/data/pv0002",
"server": "ose3-master.example.com"
}
}
}

这也是在训练环境中。建议在集群外部安装一个 NFS 服务器。

关于mysql - 无法为 Pod 安装卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33209403/

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