2015-11-05 25 views
2

我试图在复制控制器中安装外部nfs共享。当我创建复制控制器时,该容器处于挂起状态。获取有关该吊舱的详细信息,我收到以下事件:如何在Kubernetes中安装外部nfs共享?

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共享位于网络上的另一台计算机上。如果我进入主机,我可以成功挂载nfs共享,所以我相信导出配置正确。环顾网上,似乎使用nfs共享的唯一例子就是在Kubernetes中定义的例子(一个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 

UPDATE

思考它更后,我意识到问题可能是,它无法找到服务器(thuey.jolt.local)。这可能只是看内部的DNS。这是否准确?如果是这样,是否有任何解决办法?

UPDATE

再次试图在此之后,它现在正直接从吊舱的网络NFS服务器安装。

+0

您的kubelet日志是否显示比上述pod事件日志更具体的内容?我想,这将是我检查的下一个地方。该错误不是特定于哪个安装失败。作为隔离问题的一部分,您也可以尝试在排除故障的同时取出“秘密”安装盘。对不起,我没有真正的答案。 – rwehner

+0

我已经删除了秘密装置,并且仍然有错误。我也使用了秘密安装,并且它工作。检查kubelete日志的最佳方法是什么?我试图在主机上找到/var/log/kubelet.log,但它不存在。 – thuey

+0

Te在基于systemd的主机(如CoreOS)上查看kubelet日志,这应该起作用:journalctl -lu kubelet.service – rwehner

回答

2

在@ rwehner的帮助下,我终于弄清楚了。检查kubelet日志透露:

Output: mount.nfs: rpc.statd is not running but is required for remote locking.

只要我RPCBIND运行,安装工作。

+0

非常酷!很高兴你有这个工作。 – rwehner

+0

你从哪里获得statd正在运行?在容器内部? – FrankerZ

+0

@FrankerZ这已经有一段时间了,但是,如果我没有记错,我必须让它在pod容器中运行 – thuey