当前位置: 首页 > 知识库问答 >
问题:

OpenShift Origin -无法获取文件:[Errno 13]ETCD证书的权限被拒绝

何志业
2023-03-14

我试图安装OpenShift Origin使用安西布尔playbook。

我有3个主机,3个外部ETCD主机。因此,在运行行动手册时,我得到了以下错误:

  1. Hosts:    etcd_host1_ip
     Play:     Configure etcd
     Task:     Retrieve etcd cert tarball
     Message:  Failed to fetch the file: [Errno 13] Permission denied: '/tmp/etcd_certificates-94b5HdP/etcd-dts-etcd-3.fcxlocal.tgz'

  2. Hosts:    etcd_host2_ip
     Play:     Configure etcd
     Task:     Retrieve etcd cert tarball
     Message:  Failed to fetch the file: [Errno 13] Permission denied: '/tmp/etcd_certificates-liHJ5gz/etcd-dts-etcd-1.fcxlocal.tgz'

  3. Hosts:    etcd_host3_ip
     Play:     Configure etcd
     Task:     Retrieve etcd cert tarball
     Message:  Failed to fetch the file: [Errno 13] Permission denied: '/tmp/etcd_certificates-A9PENQO/etcd-dts-etcd-2.fcxlocal.tgz'

我在Ansible库存文件中设置了以下变量:

# Set variables common for all OSEv3 hosts
[OSEv3:vars]
ansible_become=true
ansible_ssh_user=nonroot_user
openshift_deployment_type=origin

在主 oc 版本上,提供以下信息:

oc v3.6.0+c4dd4cf
kubernetes v1.6.1+5115d708d7
features: Basic-Auth GSSAPI Kerberos SPNEGO

据我了解,当我运行 Ansible 剧本时,这些 etcd 所需的证书压缩包正在导出到触发剧本的主机表单/tmp 路径。由于我使用具有无密码sudo访问权限的其他用户运行Ansible,并且这些压缩包文件仅以root访问权限导出到/ tmp。因此,我收到此权限被拒绝的问题。

我该如何克服这个问题?

到目前为止我尝试了什么?

我试图给 chmod -R 777 /tmp ,但这不起作用,因为这些压缩包文件是在 ansible 剧本运行时导出的,只有 root 访问权限。

任何帮助都将不胜感激!谢谢

共有1个答案

汝繁
2023-03-14

我的错误和你的差不多。在我的例子中,错误发生在“检索etcd证书tarball”任务上。错误消息:无法创建本地目录(/tmp/{Master hostname}/etc/etcd/generated_certs):[Erno 13]权限被拒绝/tmp/{Master hostname}

我执行了部署集群。我的堡垒/引导节点上的yaml playbook。(此节点与其他OpenShift群集节点分离)。我检查了我的OpenShift节点(3Master,3Infra,3Worker)的权限,他们显示预期的权限为777。但是,我注意到我的Bastion/Boot节点上的/tmp目录已更改为755(root:root)。其他用户无法写入此文件夹。在OpenShift安装期间,Ansible在/tmp上创建临时目录(用于etcd证书)。由于其他用户无权写入/tmp,进程终止。(在我的例子中,Ansible剧本作为Ansible服务器在Bastion/Boot节点上执行)

我通过将写入权限设置为777来向其他用户授予写入权限,从而解决了这个问题。重新运行部署集群。yaml,应该没事。

还有一个大问题,为什么我的堡垒/引导节点上的 /tmp 更改为 755。我确定我的 /tmp 目录以前设置为 777,但它(迷糊不清?(这是权限被拒绝的原因)

 类似资料:
  • 问题内容: 我正在使用Amazon EC2托管通过git部署到服务器的网站。之前,我在同一类型的EC2 Ubuntu Linux Server实例上使用了本教程,并且运行良好。但是,当我尝试推送到服务器时,收到以下错误跟踪: 教程:http://toroid.org/ams/git- website-howto 跟踪: 目前,我的存储库中只有一个文件,即。 错误跟踪显示拒绝创建文件的权限。请您告诉

  • 问题内容: max@serv$ whoami max max@serv$ ls -la ./defines.php -rwxrwxrwx 1 max max 1985 2011-11-16 02:01 ./defines.php max@serv$ chmod 0777 ./defines.php max@serv$ rm ./defines.php rm: cannot remove `./de

  • 问题内容: 当我尝试运行简单的docker命令时,例如: 我收到一条错误消息: 获得权限被拒绝… /var/run/docker.sock:connect:权限被拒绝 当我检查权限 我看到这一行: 因此,我遵循许多论坛的建议并将本地用户添加到docker组: 但这无济于事。我仍然收到非常相同的错误消息。我该如何解决? 问题答案: 对于那些刚接触shell的人,命令: 需要在您的外壳中定义。默认情况

  • 问题内容: 尝试显示URI时出现以下异常。我认为这是在我的活动停止后发生的,我尝试再次访问可行的URI。还有其他问题可以解决这个问题,但是我对如何对我的代码应用任何解决方案感到非常困惑,因为我的takePhotoIntent允许拍照或从图库中选择图片(如下所示)。 我的createImageFile和我的takePhotoIntent: 问题答案: 根据Storage Access Framewo

  • 问题内容: 我对编码比较陌生,遇到了麻烦。 我有这段代码可以将数据发送到Firebase 但是,我不断收到错误: FIREBASE警告:设置为/ users /(GoogleID)失败:Permission_denied 2016-05-23 22:52:42.707 firebase.js:227未捕获(承诺)错误:PERMISSION_DENIED:权限被拒绝(…) 当我尝试查找时,它谈论的是

  • 问题内容: 很抱歉来到这里问这个问题,但是我已经读完了所有互联网,试图找到解决方案,但是我仍然遇到这个问题… 我已经成功安装了Jenkins(让我在仍有希望的时候开始)可以在我们的持续集成流程中使用它。 我试图从这样一个简单的例子开始: 但是每次启动时,都会出现此错误: 问题在于用户jenkins(服务和主节点以Jenkins的身份运行)拥有此存储库上的所有权限。我试图授予组和其他人读取和执行的权