Ceph 的部署

Ceph 的部署工具 ceph-deploy:官方的部署工具 ceph-ansible:红帽的部署工具 ceph-chef:利用 chef 进行自动部署 Ceph 的工具 puppet-ceph:puppet 的 ceph 模块 Public Network 192.168.200.161-164 Cluster Network 192.168.100.161-164 版本:Mimic 13 版 部署前提 这是一个前提条件 关闭 SELinux 关闭 firewalld,并禁止开机自启……

阅读全文

Ceph 的部署

@cofyc Thanks to you reply! I have tried it in default namespace according to readme and in rbac mode,but I have failed [root@k8s-master01 examples]# kubectl create -f examples/class.yaml error: the path "examples/class.yaml" does not exist [root@k8s-master01 examples]# cd .. [root@k8s-master01 rbd]# kubectl create -f examples/class.yaml storageclass.storage.k8s.io/rbd created [root@k8s-master01 rbd]# kubectl create -f examples/claim.yaml persistentvolumeclaim/claim1 created [root@k8s-master01 rbd]# kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE claim1 Pending rbd 5s [root@k8s-master01 rbd]# kubectl describe pvc claim1 Name: claim1 Namespace: default StorageClass: rbd Status: Pending Volume: Labels: <none> Annotations: volume.beta.kubernetes.io/storage-provisioner: ceph.com/rbd Finalizers: [kubernetes.io/pvc-protection] Capacity: Access Modes: VolumeMode: Filesystem Mounted By: <none> Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ExternalProvisioning 10s (x3 over 16s) persistentvolume-controller waiting for a volume to be created, either by external provisioner "ceph.com/rbd" or manually created by system administrator Normal Provisioning……

阅读全文

Ceph 搭建网盘

云盘分解 存储 DAS NAS SAN 分布式存储 glusterfs moosefs hdfs fastdfs ceph 文件存储 块设备 核心:对象存储 应用 owncloud php 开发 nextcloud seafile 参考 ceph-两小时玩转企业级私有云盘……

阅读全文

Ceph 和 Kubernetes 集成

方式 静态 如果没有合适的 pv, pvc 会一直 pending 动态 说明 使用 RBD 做存储,因为 cephFS 不稳定 准备环境 安装 ceph 大工程,暂时跳过,有空补 有单节点的快速安装脚本 ceph 创建存储池 并启用 RBD 功能 ceph osd pool create csj 1024 查看:ceph osd pool ls 创建 Ceph 用户,提供给 K8s 使用 ceph auth get-or-create client.kube mon 'allow r' osd 'allow class-read object_prefix rbd_children,allow rwx pool=rbdpool' 上条命令会生产 keyring 密钥 查看用户:ceph auth ls 有……

阅读全文

PVC 问题解决记录

问题发现 github 上 16 年 12 月就提出来了 describe pod describe pvc kube-controller 日志 kubectl describe pod ceph-static Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 102s (x1480 over 15h) default-scheduler pod has unbound immediate PersistentVolumeClaims kubectl describe pvc ceph-kube-claim Type Reason Age From Message ---- ------ ---- ---- ------- Warning ProvisioningFailed 54s (x417 over 15h) persistentvolume-controller Failed to provision volume with StorageClass "rbd": failed to create rbd image: executable file not found in $PATH, command output: Mounted By: ceph-static 已知的两种解决方式 替换 kube-controller 镜像 使用 CSI 记录 kube-controller 没有 rbd 二进制 同样的方式验证 使用镜像替换 使用 CSI in-tree–>out-of-tree sidecar 模式 使……

阅读全文

kubernetes ceph rbd storage 源码探索

概述 kubernetes 当前存储对接第三方存储后端实现有两种模式共存 in-tree:各种存储后端功能侵入式存在于源码中,耦合性高,不便于扩展与维护 out-of-tree:和源码解耦,类似于 CNI 的 CSI 有统一的接口规范,便于维护扩展 以 ceph-rbd 为例看 provisioner(github.com\kubernete……

阅读全文

集群化存储课程总结

概述 用于存储的网络技术:连接 DAS: Direct Attached Storage 直接附加存储 直连主机:通过数据线,光缆,SATA 优点 技术简单 传输效率高 缺点 与主机绑定太死,不易于后期扩展 NAS: Network Attached Storage 网络附加存储 通过网络与主机相连 优点 技术相对简单 不要求直连主机,局域网即可 缺点 传输效率慢 SAN: Storage Area Network 存储区域网络 隔离:生产网络——存储网络……

阅读全文

如何调用 Golang 私有函数(绑定到隐藏符号)

变量名称在 Golang 中的重要性和任何其他语言一样。但是在 golang 中,它们甚至具有语义效果:变量第一个字符大写则在外部可见。 有时为了更好地组织代码,或者访问包中对外隐藏的函数(外部不可见的函数),需要突破这个限制。 golang 源码中大量使用了这些技术 这也是相关技术信息的主要来源。而网上相关信息明显不足。 在……

阅读全文

仅需三个步骤即可构建最小的 Docker 映像

Go——仅需三个步骤即可构建最小的 Docker 映像 当您为 docker 构建 Go 应用程序时,通常从诸如 golang:1.13 之类的映像开始。但将这个映像实际运行时会浪费资源。让我们看一下如何将 Go 应用程序构建为绝对最小的 Docker 映像。 1. 选择 Go 版本 尽管使用 golang:latest 或者 仅使用 golang 的版本镜像很诱人,但由于各种问题,这样做都不太好,其中主要的一个问……

阅读全文

Go 编译器概述

首发于:https://studygolang.com/articles/24554 本文基于 Go 1.13 Go 编译器是 Go 生态系统中的一个重要工具,因为它是将程序构建为可执行二进制文件的基本步骤之一。编译器的历程是漫长的,它先用 C 语言编写,迁移到 Go,许多优化和清理将在未来继续发生,让我们来看……

阅读全文