测验环境
- Ubuntu 21.10 (kernel 5.13.0-37-generic)
- Docker 20.10.14
- kubectl 1.23.5
- minikube 1.25.2
- Rook 1.8.7
准备工作
下载体系镜像
本次装置选用Ubuntu-server版别。下载镜像能够直接去国内镜像站获取,例如Ubuntu 21.10版别代码为impish,则能够去 mirrors.tuna.tsinghua.edu.cn/ubuntu-cdim… 找到对应版别,挑选iso文件下载。
准备杰出的网络环境
因为Kubernetes需求去k8s.gcr.io库房拉取镜像,选用标签替换的方法现在没有找到杰出的自动化方案,因而准备一个网络署理愈加便利省劲。
虚拟机软件
Rook官方建议在虚拟机环境下进行搭建测验。实测操作不妥或许导致设备的文件体系被覆写!
装置体系
Ubuntu装备如下:
- CPU: 2 cores (minikube最低要求2核心)
- 内存: 4G (minikube最低要求2G内存)
- 硬盘: 50G (用于装置体系,可自定义)
- 新增加三块虚拟硬盘,用于创立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此刻布置也就完成了。