惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
云风的 BLOG
云风的 BLOG
Google DeepMind News
Google DeepMind News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
爱范儿
爱范儿
宝玉的分享
宝玉的分享
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
月光博客
月光博客
雷峰网
雷峰网
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
B
Blog RSS Feed
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
N
Netflix TechBlog - Medium
罗磊的独立博客
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Full Disclosure
Security Archives - TechRepublic
Security Archives - TechRepublic
V
Vulnerabilities – Threatpost
H
Help Net Security
博客园 - 【当耐特】
博客园_首页
Microsoft Security Blog
Microsoft Security Blog
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
L
Lohrmann on Cybersecurity
C
Cybersecurity and Infrastructure Security Agency CISA
P
Privacy International News Feed
Blog — PlanetScale
Blog — PlanetScale
C
CERT Recently Published Vulnerability Notes
P
Privacy & Cybersecurity Law Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Cisco Talos Blog
Cisco Talos Blog
K
Kaspersky official blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Cyberwarzone
Cyberwarzone
S
Schneier on Security
S
SegmentFault 最新的问题
C
Cyber Attacks, Cyber Crime and Cyber Security
S
Securelist

博客 on 打工人日志

k8s RKE2 cilium L2 + envoy gateway 安装配置 k8s RKE2 vSphere 存储配置 OpenClaw 全能指南:从安装到进阶自动化实战 (2026 最终版) Kubernetes — skywalking + banyanDB APM监控部署 Kubernetes — promtail + loki + grafana 日志系统部署 k8s master 节点 Unauthorized Kubernetes — metalLB + Traefik 部署 Kubernetes — SSL 证书自动更新 Kubernetes — RKE2 + kube-vip + cilium 部署 使用TLSv1.3 升级nginx和openssl Proxmox VE(PVE) 更新到最新版本 kindle 邮件发送失败,错误代码E999 metallb + ingress-nginx + argocd 本地部署 iStoreOS(旁路由)使用openclash实现dns劫持 异常流量分析:图片库服务黑客入侵 openwrt 硬盘扩容 搭建ip地址检索服务 Kubernetes — k8s 手动安装 1.17.9 SELinux 问题:导致端口无法创建,无法访问 【福利】免费!本地部署!去除视频中移动的物体 通知:《打工人日报》迁移到独立板块 KyBook 3 | calibre-web - IOS系统最佳图书伴侣 Tmux 安装和使用教程 DockerHub 加速镜像部署 - 使用cloudflare 代理 docker的零停机部署 SD-webui 批量处理图片 ubuntu 安装 ComfyUI ubuntu 安装 stable-diffusion-webui 测试策略:微服务架构 单元测试:测试单元质量提升 端到端测试:模拟用户体验 Kubernetes — containerd 安装和部署 CI/CD 可观察性-基于grafana Argo cd 安装和部署 linux服务器进程打开文件过多导致服务异常 使用 ElasticSearch Curator 7天定期删除日志 sonarqube docker安装和配置 SSH 通过 443 端口连接 GitHub iOS 17 「待机显示」适配普通 iPhone(非 Pro/Max),屏幕在充电时常亮 GNU/Linux 一键更换系统软件源脚本 解决Elasticsearch索引只读(read-only) 【福利】埃隆·马斯克传 [沃尔特·艾萨克森] 在线下载 【破解】小鹏P5和小鹏G9开启adb和网络adb Kubernetes — kubecost 分析 Kubernetes 成本 3D Gaussian Splatting:3D模型渲染 Linux 系统收包流程以及内核参数优化 2023亚运会电竞门票民购买指南(报名+抽签) Vue3 + vite + nginx项目部署后404问题 大麦抢票辅助软件(福利 TFBOYS十年之约演唱会 2023 全机位 视频) 黑群晖最新安装教程 Ansible部署ceph集群 最好的微信朋友圈集赞神器-福利推荐 推荐一下 容器云资源 2010年的天涯神贴聊房价 如何礼貌回绝不合理的需求 nginx 配置和编译 github 国内代理访问下载 使用scrapy-redis实现增量爬取 逆境和成长-2022年终总结 优雅的使用Conda管理python环境 Jenkins 编译Android apk 流水线 Kubernetes — 更新证书 shell功能脚本集合 Nexus3 使用和部署 githubAction set-output弃用错误 Kubernetes — 基于K8S搭建Ceph分布式存储 Kubernetes — 探针和生命周期 Kubernetes — 开放标准(OCI、CRI、CNI、CSI、SMI、CPI)概述 kubernetes 部署插件 (Flannel、Web UI、CoreDNS、Ingress Controller) Cloudflare Zero Trust 内网穿透 k8s CNI 问题 连接认证失效 k8s.gcr.io国内无法连接解决方法 headscale 部署使用 羊了个羊小程序 破解通关 K8S 问题排查:cgroup 内存泄露问题 RocketMQ k8s部署 4主4从集群 docker 问题处理 kubernetes 存储 linux服务器 删除空间却未释放 kubernetes 从1.23.x 升级到 1.24.x 编写 kubernetes 资源描述文件 nginx ssh-key connection exception kubernetes manual expansion VSCode插件推荐=> Code Runner ant build.xml 编写 kubernetes 调度过程 记录一次上门打散工 k8s本地联调神器kt-connect Ant中如何添加第三方jar包依赖 OpenELB:让k8s私有环境对外暴露端口 linux 网络测速 安装 docker 出现 ERROR: Unsupported distribution 'ol' 问题 logrotate 日志滚动的使用 nginx 编译参数详解 nginx 重写规则 rewrite模块 nginx.conf 配置文件详解 rsync 文件同步 nginx 日志格式整理 163企业邮箱设置教程 2021年第50周记
Kubernetes — Rook云存储介绍和部署
2022-10-11 · via 博客 on 打工人日志

Rook 云存储介绍和部署

Rook 分布式存储软件转变为自我管理自我缩放自我修复存储服务。它通过自动化部署,引导、配置、供应、扩展、升级、迁移、灾难恢复、监控和资源管理来实现。 Rook 使用基础的云原生容器管理、调度和编排平台提供的功能来履行其职责。

Rook 利用扩展点深入融入云原生环境,为调度、生命周期管理、资源管理、安全性、监控和用户体验提供无缝体验。

部署

使用 helm 部署

1helm init -i jimmysong/kubernetes-helm-tiller:v2.8.1
2helm repo add rook-alpha https://charts.rook.io/alpha
3helm install rook-alpha/rook --name rook --namespace rook-system

直接使用 yaml 文件部署

1kubectl apply -f rook-operator.yaml

不论使用那种方式部署的 rook operator,都会在 rook-agent 中看到 rook-agent 用户无法列出集群中某些资源的错误,可以通过为 rook-agent 的分配 cluster-admin 权限临时解决,详见 Issue 1472

使用如下 yaml 文件创建一个 ClusterRoleBinding 并应用到集群中。

 1kind: ClusterRoleBinding
 2apiVersion: rbac.authorization.k8s.io/v1beta1
 3metadata:
 4  name: rookagent-clusterrolebinding
 5subjects:
 6  - kind: ServiceAccount
 7    name: rook-agent
 8    namespace: rook-system
 9roleRef:
10  kind: ClusterRole
11  name: cluster-admin
12  apiGroup: ""

部署 rook cluster

创建完 rook operator 后,我们再部署 rook cluster

 1apiVersion: v1
 2kind: Namespace
 3metadata:
 4  name: rook
 5---
 6apiVersion: rook.io/v1alpha1
 7kind: Cluster
 8metadata:
 9  name: rook
10  namespace: rook
11spec:
12  versionTag: v0.6.2
13  dataDirHostPath: /var/lib/rook
14  storage:
15    useAllNodes: true
16    useAllDevices: false
17    storeConfig:
18      storeType: bluestore
19      databaseSizeMB: 1024
20      journalSizeMB: 1024

注意:需要手动指定 versionTag,因为该镜像 repo 中没有 latest 标签,如不指定的话 Pod 将出现镜像拉取错误。

1kubectl apply -f rook-cluster.yaml

rook 集群运行在rook namespace 下,查看 rook 集群中的 pod:

 1$ kubectl -n rook get pod
 2NAME                             READY     STATUS    RESTARTS   AGE
 3rook-api-848df956bf-q6zf2        1/1       Running   0          4m
 4rook-ceph-mgr0-cfccfd6b8-cpk5p   1/1       Running   0          4m
 5rook-ceph-mon0-t496l             1/1       Running   0          6m
 6rook-ceph-mon1-zcn7v             1/1       Running   0          5m
 7rook-ceph-mon3-h97qx             1/1       Running   0          3m
 8rook-ceph-osd-557tn              1/1       Running   0          4m
 9rook-ceph-osd-74frb              1/1       Running   0          4m
10rook-ceph-osd-zf7rg              1/1       Running   1          4m
11rook-tools                       1/1       Running   0          2m

部署 StorageClass

StorageClass rook-block 的 yaml 文件(rook-storage.yaml)如下:

 1apiVersion: rook.io/v1alpha1
 2kind: Pool
 3metadata:
 4  name: replicapool
 5  namespace: rook
 6spec:
 7  replicated:
 8    size: 1
 9  # For an erasure-coded pool, comment out the replication size above and uncomment the following settings.
10  # Make sure you have enough OSDs to support the replica size or erasure code chunks.
11  #erasureCoded:
12  #  dataChunks: 2
13  #  codingChunks: 1
14---
15apiVersion: storage.k8s.io/v1
16kind: StorageClass
17metadata:
18  name: rook-block
19provisioner: rook.io/block
20parameters:
21  pool: replicapool
22  # Specify the Rook cluster from which to create volumes.
23  # If not specified, it will use `rook` as the name of the cluster.
24  # This is also the namespace where the cluster will be
25  clusterName: rook
26  # Specify the filesystem type of the volume. If not specified, it will use `ext4`.
27  # fstype: ext4

工具

部署 Rook 操作工具 pod,该工具 pod 的 yaml 文件(rook-tools.yaml)如下:

 1apiVersion: v1
 2kind: Pod
 3metadata:
 4  name: rook-tools
 5  namespace: rook-system
 6spec:
 7  dnsPolicy: ClusterFirstWithHostNet
 8  serviceAccountName: rook-operator
 9  containers:
10    - name: rook-tools
11      image: rook/toolbox:master
12      imagePullPolicy: IfNotPresent
13      env:
14        - name: ROOK_ADMIN_SECRET
15          valueFrom:
16            secretKeyRef:
17              name: rook-ceph-mon
18              key: admin-secret
19      securityContext:
20        privileged: true
21      volumeMounts:
22        - mountPath: /dev
23          name: dev
24        - mountPath: /sys/bus
25          name: sysbus
26        - mountPath: /lib/modules
27          name: libmodules
28        - name: mon-endpoint-volume
29          mountPath: /etc/rook
30  hostNetwork: false
31  volumes:
32    - name: dev
33      hostPath:
34        path: /dev
35    - name: sysbus
36      hostPath:
37        path: /sys/bus
38    - name: libmodules
39      hostPath:
40        path: /lib/modules
41    - name: mon-endpoint-volume
42      configMap:
43        name: rook-ceph-mon-endpoints
44        items:
45          - key: endpoint
46            path: mon-endpoints

ConfigMapSecret 中的配置项内容是自定义的。 使用下面的命令部署工具 pod

1kubectl apply -f rook-tools.yaml

这是一个独立的 pod,没有使用其他高级的 controller 来管理,我们将它部署在 rook-systemnamespace 下。

1kubectl -n rook exec -it rook-tools bash

使用下面的命令查看 rook 集群状态。

 1$ rookctl status
 2OVERALL STATUS: OK
 3
 4USAGE:
 5TOTAL       USED       DATA      AVAILABLE
 637.95 GiB   1.50 GiB   0 B       36.45 GiB
 7
 8MONITORS:
 9NAME             ADDRESS                IN QUORUM   STATUS
10rook-ceph-mon0   10.254.162.99:6790/0   true        UNKNOWN
11
12MGRs:
13NAME             STATUS
14rook-ceph-mgr0   Active
15
16OSDs:
17TOTAL     UP        IN        FULL      NEAR FULL
181         1         1         false     false
19
20PLACEMENT GROUPS (0 total):
21STATE     COUNT
22none
23
24$ ceph df
25GLOBAL:
26    SIZE       AVAIL      RAW USED     %RAW USED
27    38861M     37323M        1537M          3.96
28POOLS:
29    NAME     ID     USED     %USED     MAX AVAIL     OBJECTS

示例

官方提供了使用 Rook 作为典型的 LAMP(Linux + Apache + MySQL + PHP)应用 Wordpress 的存储后端的示例的 yaml 文件 mysql.yamlwordpress.yaml,使用下面的命令创建。

1kubectl apply -f mysql.yaml
2kubectl apply -f wordpress.yaml

清理

如果使用 helm 部署,则执行下面的命令:

1helm delete --purge rook
2helm delete daemonset rook-agent

如果使用 yaml 文件直接部署,则使用 kubectl delete -f 加当初使用的 yaml 文件即可删除集群。