测验环境

  1. Ubuntu 21.10 (kernel 5.13.0-37-generic)
  2. Docker 20.10.14
  3. kubectl 1.23.5
  4. minikube 1.25.2
  5. Rook 1.8.7

准备工作

下载体系镜像

本次装置选用Ubuntu-server版别。下载镜像能够直接去国内镜像站获取,例如Ubuntu 21.10版别代码为impish,则能够去 mirrors.tuna.tsinghua.edu.cn/ubuntu-cdim… 找到对应版别,挑选iso文件下载。

准备杰出的网络环境

因为Kubernetes需求去k8s.gcr.io库房拉取镜像,选用标签替换的方法现在没有找到杰出的自动化方案,因而准备一个网络署理愈加便利省劲。

虚拟机软件

Rook官方建议在虚拟机环境下进行搭建测验。实测操作不妥或许导致设备的文件体系被覆写!

装置体系

Ubuntu装备如下:

  1. CPU: 2 cores (minikube最低要求2核心)
  2. 内存: 4G (minikube最低要求2G内存)
  3. 硬盘: 50G (用于装置体系,可自定义)
  4. 新增加三块虚拟硬盘,用于创立osd,便利起见都设置为10G

虚拟机网络将选用NAT形式,装置时挑选装置Openssh server,不在此刻装置Docker(不然会使用snap装置docker,下一步装备时与教程不一致)

装置Docker

装置完毕体系,能够挑选先履行 sudo apt update && sudo apt upgrade更新体系及软件。

根据docker官方的教程,履行指令装置需求的部件,不过Ubuntu21.10现已装置完毕所以不需求履行这一步。

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

下载Docker官方GPG密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

增加至本地装备文件中

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

装置Docker

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

将本机用户增加至docker组便利使用docker指令,并在设置好后登出一次shell

sudo usermod -aG docker $USER && newgrp docker

装备网络

首要装备Docker的网络设置

sudo mkdir -p /etc/systemd/system/docker.service.d

创立 /etc/systemd/system/docker.service.d/http-proxy.conf 并写入如下内容

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=https://proxy.example.com:443"
Environment="NO_PROXY=localhost,127.0.0.1,192.168.49.0/24,<虚拟机NAT IP段>/24"

比如虚拟机的IP为192.168.104.x则输入192.168.104.0/24

并且保存一份shell的设置供Kubernetes使用

export HTTP_PROXY=http://proxy.example.com:80
export HTTPS_PROXY=https://proxy.example.com:443
export NO_PROXY=localhost,127.0.0.1,192.168.49.0/24,<虚拟机NAT IP段>/24

因为拉取镜像通常是根据HTTPS传输的,所以网络有建议去掉HTTP_PROXY的说法

装置kubectl

这步操作无需署理

在 Linux 体系中装置并设置 kubectl | Kubernetes

建议装置补全插件提高效率

装置minikube

minikube官方装置教程

需求注意的是在minikube start之后就需求装备好署理

装置Rook

先装备好署理,然后履行minikube start打开kubernetes。

克隆rook库房

git clone --single-branch --branch v1.8.7 https://github.com/rook/rook.git

创立rook-ceph-operator

cd rook/deploy/examples
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
# 确保rook-ceph-operator在`Running`状态下再创立集群
kubectl -n rook-ceph get pod

因为使用了Minikube,所以挑选rook/deploy/examples/cluster-test.yaml文件进行集群创立

cluster-test.yaml中的deviceFilter一项注释去掉

虚拟机的硬盘分别为/dev/sda,/dev/sdb,/dev/sdc,/dev/sdd, 其间sda为体系的文件体系, 所以需求在deviceFilter处填上sd[^a], 以疏忽创立坐落sda上的osd。

运转

kubectl create -f cluster-test.yaml

创立集群后,确保pods包含rook-ceph-mon,rook-ceph-mgr, 三个rook-ceph-osd后,创立rook-ceph-toolbox检测ceph状态。

此刻ceph的状态应该为HEALTH_OK。

布置对象存储

因为erasureCoded chunk需求至少三个osd,所以需求3块硬盘或许3个未格式化的分区,考虑到集群只有一个节点,所以需求把failureDomain设置为osd而不是host

运转

kubectl create -f object.yaml

创立rgw此刻布置也就完成了。