NFS 卷挂载导致 Kubernetes 中的退出代码为 32?
NFS volume mount results in exit code 32 on in Kubernetes?
我正在尝试在复制控制器中安装外部 nfs 共享。当我创建复制控制器时,pod 处于挂起状态。获取 pod 的详细信息,我得到这些事件:
Events:
FirstSeen LastSeen Count From SubobjectPath Reason Message
Thu, 05 Nov 2015 11:28:33 -0700 Thu, 05 Nov 2015 11:28:33 -0700 1 {scheduler } scheduled Successfully assigned web-worker-hthjq to jolt-server-5
Thu, 05 Nov 2015 11:28:43 -0700 Thu, 05 Nov 2015 11:28:43 -0700 1 {kubelet jolt-server-5} failedMount Unable to mount volumes for pod "web-worker-hthjq_default": exit status 32
Thu, 05 Nov 2015 11:28:43 -0700 Thu, 05 Nov 2015 11:28:43 -0700 1 {kubelet jolt-server-5} failedSync Error syncing pod, skipping: exit status 32
我的设置是本地机器上的一个主节点和一个节点。这些机器是 运行 CoreOS。 nfs 共享存在于网络上的另一台机器上。如果我 shell 进入主机,我可以成功挂载 nfs 共享,所以我相信导出配置正确。在线查看,似乎使用 nfs 共享的唯一示例是在 Kubernetes 中定义的那些(一个 pod 与另一个 pod 共享)。有没有办法直接从 Kubernetes 挂载外部共享(我不想必须先挂载到宿主机,然后再从宿主机挂载到容器)。
这是我的复制控制器:
apiVersion: v1
kind: ReplicationController
metadata:
labels:
name: web-worker
name: web-worker
spec:
replicas: 1
selector:
component: web-worker
template:
metadata:
labels:
app: task-queue
component: web-worker
spec:
containers:
- command:
- /sbin/my_init
image: quincy/php-apache2:latest
name: web-worker
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- name: code-base
mountPath: /var/www/html
- name: local-secrets
mountPath: /secrets
volumes:
- name: code-base
nfs:
server: thuey.jolt.local
path: "/Users/thuey/Sites/jolt/jolt-web"
- name: local-secrets
secret:
secretName: local-secret
更新
想了想,大概是找不到服务器的问题(thuey.jolt.local)。它可能只是在查看内部 DNS。那是准确的吗?如果是这样,有什么解决办法吗?
更新
再次尝试后,它现在可以直接从 pod 挂载到联网的 nfs 服务器。
在@rwehner 的帮助下,我终于弄明白了。检查 kubelet 日志显示:
Output: mount.nfs: rpc.statd is not running but is required for remote locking.
我一拿到 rpcbind 运行,挂载就成功了。
我正在尝试在复制控制器中安装外部 nfs 共享。当我创建复制控制器时,pod 处于挂起状态。获取 pod 的详细信息,我得到这些事件:
Events:
FirstSeen LastSeen Count From SubobjectPath Reason Message
Thu, 05 Nov 2015 11:28:33 -0700 Thu, 05 Nov 2015 11:28:33 -0700 1 {scheduler } scheduled Successfully assigned web-worker-hthjq to jolt-server-5
Thu, 05 Nov 2015 11:28:43 -0700 Thu, 05 Nov 2015 11:28:43 -0700 1 {kubelet jolt-server-5} failedMount Unable to mount volumes for pod "web-worker-hthjq_default": exit status 32
Thu, 05 Nov 2015 11:28:43 -0700 Thu, 05 Nov 2015 11:28:43 -0700 1 {kubelet jolt-server-5} failedSync Error syncing pod, skipping: exit status 32
我的设置是本地机器上的一个主节点和一个节点。这些机器是 运行 CoreOS。 nfs 共享存在于网络上的另一台机器上。如果我 shell 进入主机,我可以成功挂载 nfs 共享,所以我相信导出配置正确。在线查看,似乎使用 nfs 共享的唯一示例是在 Kubernetes 中定义的那些(一个 pod 与另一个 pod 共享)。有没有办法直接从 Kubernetes 挂载外部共享(我不想必须先挂载到宿主机,然后再从宿主机挂载到容器)。
这是我的复制控制器:
apiVersion: v1
kind: ReplicationController
metadata:
labels:
name: web-worker
name: web-worker
spec:
replicas: 1
selector:
component: web-worker
template:
metadata:
labels:
app: task-queue
component: web-worker
spec:
containers:
- command:
- /sbin/my_init
image: quincy/php-apache2:latest
name: web-worker
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- name: code-base
mountPath: /var/www/html
- name: local-secrets
mountPath: /secrets
volumes:
- name: code-base
nfs:
server: thuey.jolt.local
path: "/Users/thuey/Sites/jolt/jolt-web"
- name: local-secrets
secret:
secretName: local-secret
更新
想了想,大概是找不到服务器的问题(thuey.jolt.local)。它可能只是在查看内部 DNS。那是准确的吗?如果是这样,有什么解决办法吗?
更新
再次尝试后,它现在可以直接从 pod 挂载到联网的 nfs 服务器。
在@rwehner 的帮助下,我终于弄明白了。检查 kubelet 日志显示:
Output: mount.nfs: rpc.statd is not running but is required for remote locking.
我一拿到 rpcbind 运行,挂载就成功了。