2017-09-07 45 views
0

我想在Gubter中使用Gluster设置GitLab,Redis和PostgreSQL容器来实现持久性。 GlusterFS节点安装在Kubernetes集群(在RancherOS主机上运行)外部的计算机(CentOS)上。问题是,当GitLab尝试启动时,登录页面不会加载。这是一个全新的设置,而不是现在停止工作的东西。运行GitLab时Redis数据库权限问题

[email protected]:/var/log/gitlab/gitlab# tail -50 sidekiq.log 
... 
... 
    2017-09-07T11:53:03.098Z 547 TID-1fdjck ERROR: /home/git/gitlab/vendor/bundle/ruby/2.3.0/gems/sidekiq-5.0.0/lib/sidekiq/processor.rb:84:in `process_one' 
2017-09-07T11:53:03.098Z 547 TID-1fdjck ERROR: /home/git/gitlab/vendor/bundle/ruby/2.3.0/gems/sidekiq-5.0.0/lib/sidekiq/processor.rb:73:in `run' 
2017-09-07T11:53:03.098Z 547 TID-1fdjck ERROR: /home/git/gitlab/vendor/bundle/ruby/2.3.0/gems/sidekiq-5.0.0/lib/sidekiq/util.rb:17:in `watchdog' 
2017-09-07T11:53:03.098Z 547 TID-1fdjck ERROR: /home/git/gitlab/vendor/bundle/ruby/2.3.0/gems/sidekiq-5.0.0/lib/sidekiq/util.rb:26:in `block in safe_thread' 
2017-09-07T11:53:03.099Z 547 TID-1fdf1k ERROR: Error fetching job: ERR Error running script (call to f_7b91ed9f4cba40689cea7172d1fd3e08b2efd8c9): @user_script:7: @user_script: 7: -MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error. 
2017-09-07T11:53:03.100Z 547 TID-1fdf1k ERROR: /home/git/gitlab/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis/client.rb:121:in `call' 
2017-09-07T11:53:03.100Z 547 TID-1fdf1k ERROR: /home/git/gitlab/vendor/bundle/ruby/2.3.0/gems/peek-redis-1.2.0/lib/peek/views/redis.rb:9:in `call' 
2017-09-07T11:53:03.100Z 547 TID-1fdf1k ERROR: /home/git/gitlab/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis.rb:2399:in `block in _eval' 
2017-09-07T11:53:03.100Z 547 TID-1fdf1k ERROR: /home/git/gitlab/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis.rb:58:in `block in synchronize' 
2017-09-07T11:53:03.100Z 547 TID-1fdf1k ERROR: /usr/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' 
2017-09-07T11:53:03.100Z 547 TID-1fdf1k ERROR: /home/git/gitlab/vendor/bundle/ruby/2.3.0/gems/redis-3.3.3/lib/redis.rb:58:in `synchronize' 
... 

所以我检查了Redis容器日志。

[[email protected] ~]# docker logs -f 67d44f585705 
... 
... 
[1] 07 Sep 14:43:48.140 # Background saving error 
[1] 07 Sep 14:43:54.048 * 1 changes in 900 seconds. Saving... 
[1] 07 Sep 14:43:54.048 * Background saving started by pid 2437 
[2437] 07 Sep 14:43:54.053 # Failed opening .rdb for saving: Permission denied 
... 

用于本次发行网上查了一下,然后注意到以下权限和所有者的详细信息内Redis的吊舱

[[email protected] ~]# docker exec -it 67d44f585705 bash 
groups: cannot find name for group ID 2000 
[email protected]:/# ls -ld /var/lib/redis/ 
drwxr-sr-x 12 1000 1000 8192 Sep 7 11:51 /var/lib/redis/ 
[email protected]:/# 
[email protected]:/# ls -l /var/lib/redis/ 
total 22 
drwxr-sr-x 2 1000 1000  6 Sep 6 10:37 backups 
drwxr-sr-x 2 1000 1000  6 Sep 6 10:37 builds 
drwxr-sr-x 2 redis redis  6 Sep 6 10:14 data 
-rw-r--r-- 1 redis redis 13050 Sep 7 11:51 dump.rdb 
-rwxr-xr-x 1 redis redis 21 Sep 5 11:00 index.html 
drwxrws--- 2 1000 1000  6 Sep 6 10:37 repositories 
drwxr-sr-x 5 1000 1000 55 Sep 6 10:37 shared 
drwxr-sr-x 2 root root 8192 Sep 6 10:37 ssh 
drwxr-sr-x 3 redis redis 70 Sep 7 10:20 tmp 
drwx--S--- 2 1000 1000  6 Sep 6 10:37 uploads 
[email protected]:/# 
[email protected]:/# grep 1000 /etc/passwd 
[email protected]:/# 

冉以下和所有看起来很好。

[email protected]:/# chown redis:redis -R /var/lib/redis/ 

然而,当我删除并再次运行GitLab部署YAML,Redis的容器再次内的权限得到了倾斜了。我不确定Gluster是否搞乱了Redis文件/文件夹权限。现在无法想到任何其他原因。

有一两件事我想强调的是,所有的三个容器使用相同 PVC

- name: gluster-vol1 
    persistentVolumeClaim: 
    claimName: gluster-dyn-pvc 

以上是对所有三种常见。以下显示了不同之处:

a) postgresql-deployment.yaml 

volumeMounts: 
- name: gluster-vol1 
    mountPath: /var/lib/postgresql 

b) redisio-deployment.yaml 

volumeMounts: 
- name: gluster-vol1 
    mountPath: /var/lib/redis 

c) gitlab-deployment.yaml 

volumeMounts: 
- name: gluster-vol1 
    mountPath: /home/git/data 

有什么建议吗?

+0

此外,这是所有三个容器都使用相同的'PVC' /'Storage Class'的正确方法,还是我需要改变一些东西? – Technext

+0

你可以显示'描述pvc gluster-vol1'输出吗? – whites11

+0

运行上述命令时出现错误。当使用'gluster-dyn-pvc'而不是'gluster-vol1'时,它可以工作。输出粘贴[这里](https://pastebin.com/rysEhHP4) – Technext

回答

0

下面的步骤,我能解决“权限被拒绝”的Redis的问题:

  1. 创造了PostegreSQL,Redis的和GitLab在GlusterFS单独的卷。
  2. 为所有三个创建单独的存储类。
  3. 为它们创建PersistentVolumeClaim(PVC)并将其映射到/var/lib/postgresql,/var/lib/redis/home/git/data到它们各自的PVC。

早些时候,上面提到的所有三条路径都指向GlusterFS中的相同卷。不知何故,看起来,它们给Redis带来了问题。