它是一款全栈的 Kubernetes 容器云 PaaS 解决方案(来源于官网),而我觉得它是一款强大的Kubernetes图形界面,它继承了如下组件 (下面这段内容来自官网):
当然他的功能远不止这些,欢迎各位来到KubeSphere的官网了解更多内容:https://www.kubesphere.io/zh/
(摘自官网)
符合KubeSphere的支持边缘节点的最高版本要求,但建议你版本号不要超过 v1.26.x
。
首先你需要准备一台NFS服务器,为了方便,我这次就以我的主服务器 k8s-master
来担任这个NFS服务器了。
首先我们需要在NFS服务器(我的NFS服务器和master是同一台)和所有k8s节点当中安装 nfs-utils
软件包(master和node都需要安装),可执行下面这行命令:
yum install -y nfs-utils
然后确定一个nfs共享的目录,这次我就使用 /data/nfs/dynamic-provisioner
这个目录作为nfs的共享目录了。所以我们来执行下面命令创建并共享这个目录:
# 创建这个目录
mkdir -p /data/nfs/dynamic-provisioner
# 执行这行命令将这个目录写到写到 /etc/exports 文件当中去,这样NFS会对局域网暴露这个目录
cat >> /etc/exports << EOF
/data/nfs/dynamic-provisioner *(rw,sync,no_root_squash)
EOF
# 启动NFS服务
systemctl enable --now nfs-server
检查是否暴露成功:
showmount -e {nfs服务器地址}
因为Kubernetes自己不自带NFS动态供给的驱动,所以我们需要下载第三方的NFS动态供给驱动。Kubernetes官方推荐了两个第三方的驱动可供选择,如图:
个人觉得这个 NFS subdir
驱动比较好用,这次就用这个驱动来搭建动态供给了。我们可以来到它的官网:https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner,并找到最新的release:
也可直接通过命令下载:
wget https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/archive/refs/tags/nfs-subdir-external-provisioner-4.0.18.tar.gz
我们直接解压它:
tar -zxvf nfs-subdir-external-provisioner-4.0.18.tar.gz
我们来到这个文件夹下的deploy目录:
cd nfs-subdir-external-provisioner-nfs-subdir-external-provisioner-4.0.18/deploy/
首先我们需要修改的就是 deployment.yaml
,我们直接用vim修改:
vim deployment.yaml
首先就是这个镜像是在谷歌的k8s官方镜像仓库拉取的,国内拉取不到,所以我们要修改一下:
我已经通过一些方法将它拉取下来并且上传到了国内的阿里云镜像仓库,我们可以直接用下面这个镜像来替换:
# 这个镜像是在谷歌上的,国内拉取不到
# image: registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
# 使用这个我先在谷歌上拉取下来再上传到阿里云上的镜像
image: registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/nfs-subdir-external-provisioner:v4.0.2
然后我们还需要修改一下下面的nfs服务器地址和nfs服务器内共享的目录:
我的nfs服务器地址为 172.18.0.2
,且按照上面的安装步骤,我nfs服务器暴露的共享目录为 /data/nfs/dynamic-provisioner
,所以我修改文件为(你的有可能和我不一样,根据自己设置的共享目录和nfs服务器地址修改此文件):
执行下面这一段脚本我们可以看到还是有很多资源是存放在默认命名空间下:
yamls=$(grep -rl 'namespace: default' ./)
for yaml in ${yamls}; do
echo ${yaml}
cat ${yaml} | grep 'namespace: default'
done
我们可以新创建一个命名空间专门装这个驱动,也方便以后管理,所以我决定创建一个名为 nfs-provisioner
命名空间,为了方便就不用yaml文件了,直接通过命令创建:
kubectl create namespace nfs-provisioner
执行后可以看到这个命名空间创建成功:
涉及命名空间这个配置的文件还挺多的,所以我们干脆通过一行脚本更改所有:
sed -i 's/namespace: default/namespace: nfs-provisioner/g' `grep -rl 'namespace: default' ./`
之前我们已经修改好了所有的yaml资源清单文件,接下来我们直接执行安装。安装也是非常简单,直接通过下面一行命令就可以安装完成:
kubectl apply -k .
可以执行下面这个行命令查看是否部署完成:
kubectl get all -o wide -n nfs-provisioner
看到READY为 1/1
并且STATUS状态为 Running
那么动态供给就已经部署完毕:
可以执行下面命令查询安装的动态供应存储类的名字:
kubectl get storageclass
nfs动态供应就已经安装完毕了
如果你只打算安装动态供给的存储类,那么到这里就结束了哦,接下来是KubeSphere相关的内容
此次安装的是最新的 v3.4.0
的 KubeSphere,可以通过以下命令下载资源清单文件(共两个):
wget \
https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/kubesphere-installer.yaml \
https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/cluster-configuration.yaml
其中这两个文件的作用:
我们需要修改一下 cluster-configuration.yaml
文件,还记得我们之前的那个存储类吗?我们记住这个名字:
然后我们开始修改这个文件:
vim cluster-configuration.yaml
可以看到后面注释的说明,所以我们将 nfs-client
这个存储类的名字写在后面:
然后我们先创建 kubesphere-installer.yaml
里面的资源:
kubectl apply -f kubesphere-installer.yaml
然后我们检查这个资源是否创建成功:
kubectl get pod -o wide -n kubesphere-system
同样当READY为 1/1
并且STATUS状态为 Running
的时候这个文件就执行完毕了:
接下来我们来执行 cluster-configuration.yaml
文件:
kubectl apply -f cluster-configuration.yaml
执行下面命令检查KubeSphere的执行日志:
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f
因为我使用的是云服务器,所以我使用任何一个云服务器的公网IP地址+端口就能访问KubeSphere了,默认的用户名/密码是 admin/P@88w0rd
:
同时我们来到NFS服务器共享的目录,可以看到KubeSphere的持久化数据存储在这:
因为KubeSphere的管理是基于项目的,所以我们先要创建一个项目,先点击企业空间:
创建一个项目其实就是创建了一个命名空间:
我们来设置mysql的密码,这个名字可以随便写,但是自己要记住:
最后创建的Secret会自动填充,但是注意MySQL设置root用户密码的环境变量名不能自定义,是由Docker规定死的 MYSQL_ROOT_PASSWORD
:
这篇文章就先写到这里,更多的KubeSphere操作,可以登录KubeSphere的官网了解,关注我,我以后一会写更多相关知识的哦!
KubeSphere官网:https://www.kubesphere.io/zh/