k8s 创建glusterfs + heketi 添加节点时提示Unable to create node: New Node doesn't have glusterd running 问题解决

首先声明, 这个是我在看kubernetes指南时,根据书本做实验时遇到的问题。 有经验的大佬请随便看一下,因为这并不一定是解决你的问题的方法。
这个问题烦了我一下午,国内没有搜到解决这个问题的方法。科学上网后参考其他人贴出的一些方法,解决了此问题。这里贴出我的解决方法和思路。


搭建过程就不说了, 网上有很多。
这是我的topology.json

{
  "clusters": [
    {
      "nodes": [
        {
          "node": {
            "hostnames": {
              "manage": [
                "k8s-slave-0"
              ],
              "storage": [
                "192.168.96.129"
              ]
            },
            "zone": 1
          },
          "devices": [
            "/dev/sdb"
          ]
        },
        {
          "node": {
            "hostnames": {
              "manage": [
                "k8s-slave-1"
              ],
              "storage": [
                "192.168.96.130"
              ]
            },
            "zone": 1
          },
          "devices": [
            "/dev/sdb"
          ]
        },
        {
          "node": {
            "hostnames": {
              "manage": [
                "k8s-slave-2"
              ],
              "storage": [
                "192.168.96.131"
              ]
            },
            "zone": 1
          },
          "devices": [
            "/dev/sdb"
          ]
        }
      ]
    }
  ]
}

执行添加gluster节点时报错如下

Creating cluster ... ID: 7675c678602c6907d4c6c259b74f732e
	Allowing file volumes on cluster.
	Allowing block volumes on cluster.
	Creating node k8s-slave-0 ... Unable to create node: New Node doesn't have glusterd running
	Creating node k8s-slave-1 ... Unable to create node: New Node doesn't have glusterd running
	Creating node k8s-slave-2 ... Unable to create node: New Node doesn't have glusterd running

查看 pod日志 kubectl logs deploy-heketi-68d4457cd-2wzfz -f 。
日志显示无法获取pod list

[kubeexec] ERROR 2019/01/20 13:24:12 heketi/pkg/remoteexec/kube/target.go:134:kube.TargetDaemonSet.GetTargetPod: pods is forbidden: User "system:serviceaccount:default:heketi-service-account" cannot list resource "pods" in API group "" in the namespace "default"

查阅资料发现, heketi需要对k8s集群做一些操作, 而这些操作需要放权, 书上仅添加ServiceAccount是不够的,还需要添加对应的role。
创建role 并绑定到 ServiceAccount

kubectl create clusterrole foo --verb=get,list,watch --resource=pods,pods/status,pods/exec

再次执行gluster添加命令,观察日志

[kubeexec] ERROR 2019/01/20 13:27:12 heketi/pkg/remoteexec/kube/exec.go:85:kube.ExecCommands: Failed to run command [systemctl status glusterd] on [pod:glusterfs-rfslk c:glusterfs ns:default (from host:k8s-slave-0 selector:glusterfs-node)]: Err[pods "glusterfs-rfslk" is forbidden: User "system:serviceaccount:default:heketi-service-account" cannot create resource "pods/exec" in API group "" in the namespace "default"]: Stdout []: Stderr []

日志中提示 cannot create resource “pods/exec” , 尝试添加create权限

kubectl create clusterrole foo --verb=get,list,watch,create --resource=pods,pods/status,pods/exec

再次执行gluster添加命令, 成功添加

[root@deploy-heketi-68d4457cd-2wzfz heketi]# heketi-cli topology load --json=topology.json 
Creating cluster ... ID: b78e39219263f7838f58a5652275ab34
	Allowing file volumes on cluster.
	Allowing block volumes on cluster.
	Creating node k8s-slave-0 ... ID: c82ddde257c4a6fa61c01969ff82b77a
		Adding device /dev/sdb ... OK
	Creating node k8s-slave-1 ... ID: c1fc07eb7f25fe9e1f10f55fb15ae01d
		Adding device /dev/sdb ... OK
	Creating node k8s-slave-2 ... ID: a350e7a4055785789844fdb685ad8536
		Adding device /dev/sdb ... OK
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
k8s搭配GlusterFS可以实现静态存储。在静态供给glusterfs存储的情况下,需要进行以下步骤: 1. 首先,准备好主机环境,包括配置主机名、关闭防火墙、关闭selinux等。\[1\] 2. 挂载磁盘并安装glusterfs服务端。可以使用glusterfs的端口分布式集群的结构组成来创建存储卷。\[1\] 3. 启动卷,并将k8s配置为使用glusterfs作为后端存储。这样,就可以静态供给glusterfs存储了。\[1\] 需要注意的是,静态供给glusterfs存储的配置与动态供给glusterfs存储的配置不同。在静态供给的情况下,直接挂盘、创建lvm、创建文件系统、挂载、安装glusterfs集群、创建卷,然后k8s使用gluster即可。\[2\] 总结起来,通过在k8s中配置静态供给的glusterfs存储,可以实现静态存储的需求。 #### 引用[.reference_title] - *1* *2* [k8s使用glusterfs(静态供给、动态供给)、glusterfs的安装与使用](https://blog.csdn.net/MssGuo/article/details/128409865)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [K8s存储与GlusterFS实战](https://blog.csdn.net/qq_35029061/article/details/127131348)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值