使用Kuboard spray部署Kubernetes 1.24.3 集成Harbor私有镜像库

一、简介

Kubernetes:
Kubernetes是一个可以移植、可扩展的开源平台,使用 声明式的配置 并依据配置信息自动地执行容器化应用程序的管理。在所有的容器编排工具中(类似的还有 docker swarm / mesos等),Kubernetes的生态系统更大、增长更快,有更多的支持、服务和工具可供用户选择。

Kuboard-Spray
Kuboard-Spray 是一款可以在图形界面引导下完成 Kubernetes 高可用集群离线安装的工具。

Kuboard
Kuboard 是一款免费的 Kubernetes 管理工具,提供了丰富的功能,结合已有或新建的代码仓库、镜像仓库、CI/CD工具等,可以便捷的搭建一个生产可用的 Kubernetes 容器云平台,轻松管理和运行云原生应用。您也可以直接将 Kuboard 安装到现有的 Kubernetes 集群,通过 Kuboard 提供的 Kubernetes RBAC 管理界面,将 Kubernetes 提供的能力开放给您的开发/测试团队。

Harbor
Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为docker容器的技术正是借鉴了集装箱的原理。所以,Harbor正是一个用于存储Docker镜像的企业级Registry服务。
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

二、前期环境准备

1. 设备清单

设备类型IP地址域名/主机名os 版本
Kuboard spray172.18.1.224kuboard-spraycentos7.9
Harbor/NFS:172.18.1.225myharbor.unite-puxi.localcentos7.9
Kubernetes Master node172.18.1.220k8s-mcentos7.9
Kubernetes Work node1172.18.1.221k8s-n1centos7.9
Kubernetes Work node2172.18.1.222k8s-n2centos7.9
CA server172.18.1.240ca.unite-puxi.localwindows server 2016
DNS sever172.17.1.1ad_query.unite-puxi.localwindows server 2012

2. Linux 系统环境准备

内核升级

centos 内核版本为3.10 ,但是kubernetes 1.24.3(后续简称k8s)安装环境对内核版本有要求,我们需要升级到最新的内核版本

 #查看当前内核版本
 uname -r
#添加内核rpm 下载源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
# 安装最新内核
 yum --enablerepo=elrepo-kernel install -y kernel-lt
# 设置开机从新内核启动 
grub2-set-default 'CentOS Linux (5.4.206-1.el7.elrepo.x86_64) 7 (Core)'
# 升级内核后需要重新启动
reboot
# 查看当前内核版本
uname -r
5.4.197-1.el7.elrepo.x86_64
# 卸载旧内核
yum remove -y kernel kernel-tools
# 重启系统,可以发现旧内核已经没有了
 reboot
• 升级系统依赖和常用工具
# 升级系统依赖$
yum update -y
# 安装常用工具
yum install -y nano net-tools wget bind-utils

修改主机名和IP 地址

我所有的Linux系统都是从模板复制的,所以需要修改主机名和IP地址,避免主机名和IP地址冲突

# 修改主机名
hostnamectl --static set-hostname kuboard-spray
# 修改网络信息
nano /etc/sysconfig/network-scripts/ifcfg-ens192
# 修改 root 用户的密码
passwd root
# 完成以上操作后,重启系统即可
reboot

三、kuboard-spray 部署及配置

1.安装docker

#检查系统是否安装旧版本docker
yum remove docker  docker-common docker-selinux docker-engine
#检查docker 安装包
yum list installed | grep docker
#若存在旧的安装包进行删除
yum remove docker-ce.x86_64 
#安装相关的依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
#设置docker 安装的yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#查看当前可安装的docker版本
yum list docker-ce --showduplicates | sort -r
#安装最新的docker版本
yum install docker-ce -y
#启动并加入开机自启动
 systemctl start docker
systemctl enable docker
查看docker版本
docker version
#修改docker pull 镜像源
nano /etc/docker/daemon.json
{
"registry-mirrors": ["https://pn9i1n15.mirror.aliyuncs.com"]
}
systemctl restart docker

2.安装kuboard-spray v1.2.0

# 使用docker run 部署kuboard-spray v1.2.0
docker run -d \
  --restart=unless-stopped \
  --name=kuboard-spray \
  -p 80:80/tcp \
  -e TZ=Asia/Shanghai \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/kuboard-spray-data:/data \
  eipwork/kuboard-spray:v1.2.0-amd64

3.配置Kuboard-spay

加载资源包

默认部署的账号为admin,密码为Kuboard123在这里插入图片描述
导入最新的k8s资源包在这里插入图片描述
加载资源包在这里插入图片描述
等待资源包加载完成在这里插入图片描述

使用kuboard-spray 部署k8s 单Master节点集群

选取对应的资源包和设置好集群名称在这里插入图片描述
添加节点,Master节点和etcd节点在同一台设备上,并且etcd节点应为奇数个,同时输入IP和密码;Work 节点输入IP和密码即可保存在这里插入图片描述
点击确认,开始部署在这里插入图片描述
等待部署完成,kuboard不仅可以部署一台全新的k8s平台出来,还会同步部署一个kuboard的管理组件在Master节点上,可以很容易的管理和使用k8s集群。

在这里插入图片描述

四、kuboard配置

登录kuboard 查看k8s 集群状态

默认用户:admin
默认密码:Kuboard123
使用集群的kuboard-admin查看集群状态,kuboard既有管理员权限,我们本次不涉及账号和角色的测试,所以后续操作都使用kuboard-admin.在这里插入图片描述
在这里插入图片描述

存储类配置

容器应用的数据如需持久化,需要定义持久化存储用以保存应用数据。
在这里插入图片描述

部署NFS

在NFS 服务器端

#执行以下命令安装 nfs 服务器所需的软件包
yum install -y rpcbind nfs-utils
# 创建 exports 文件,文件内容如下:
nano /etc/exports
/root/nfs_root/ *(insecure,rw,sync,no_root_squash)
#执行以下命令,启动 nfs 服务
mkdir/root/nfs_root
systemctl enable rpcbind
systemctl enable nfs-server
systemctl start rpcbind
systemctl start nfs-server
exportfs -r
执行测试
exportfs

在NFS 客户端(k8s master和work节点)

#执行以下命令安装 nfs 客户端所需的软件包
yum install -y nfs-utils
#执行以下命令检查 nfs 服务器端是否有设置共享目录
showmount -e 172.18.1.225
# 输出结果如下所示
Export list for172.18.1.225:
/root/nfs_root *
#执行以下命令挂载 nfs 服务器上的共享目录到本机路径 /root/nfsmount
mkdir /root/nfsmount
mount -t nfs 172.18.1.225:/root/nfs_root /root/nfsmount
# 写入一个测试文件
echo "hello nfs server">/root/nfsmount/test.txt
在 nfs 服务器上执行以下命令,验证文件写入成功
cat /root/nfsmount/test.txt

创建存储类

在kuboard上创建存储分类在这里插入图片描述

部署监控及日志组件

这部分不做过多介绍,需要注意的就是,我们前面创建的存储分类是在这些组件创建时需要调用,这些组件也是以容器的形式部署在集群中,可以实时收集集群的使用情况在这里插入图片描述
部署后效果图
概览:在这里插入图片描述
资源监控套件
在这里插入图片描述
在这里插入图片描述
日志监控
在这里插入图片描述

部署一个nginx容器

填写基本信息在这里插入图片描述
配置容器的名称和镜像名称以及映射的端口在这里插入图片描述
部署完成后,容器处于running状态在这里插入图片描述
测试访问
在这里插入图片描述

五、Harbor 部署及配置

Harbor部署

我们仍然使用docker 进行harbor的部署,对于docker部分,参照之前的配置

#关闭、禁用、卸载 firewalld 防火墙
systemctl stop firewalld &&systemctl disable firewalld &&yum -y remove firewalld
# 安装 iptables
yum install -y iptables iptables-services
# 启用 iptables
systemctl start iptables &&systemctl enable iptables
# 清空 iptables
iptables -F &&service iptables save
-----------------------------------------------------------------------
#安装 docker-compose
#安装 pip,可以使用yum install python-pip,但是 centos 7.9 默认源只有 python3-pip 版本的,所以我们采用源码安装
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip2.py
python get-pip2.py
pip install docker-compose
------------------------------------------------
#下载 harbor 安装包
#下载地址:https://github.com/goharbor/harbor/releases
#导入到安装harborlinux中
#解压安装包
tar -zxvf harbor-offline-installer-v2.5.3.tgz
#生成harbor使用的证书请求文件和key
mkdir /root/certs
cp /etc/pki/tls/openssl.cnf v3.cnf
#修改v3.cnf文件
nano v3.cnf
req_extensions = v3_req # 取消注释
[ v3_req ] ###添加以下内容
subjectAltName = @alt_names
[alt_names]
DNS.1=myharbor.unite-puxi.local
DNS.2=unite-puxi.local
DNS.3=myharbor
#生成私钥和证书请求文件
openssl req -newkey rsa:4096 -sha256 -subj "/C=CN/ST=SHANGHAI/L=SHANGHAI/O=PUXI/OU=PUXI/CN=myharbor.unite-puxi.local" -config v3.cnf -nodes -keyout myharbor.key -out myharbor.csr
#在证书服务器上将CSR文件导入,生成harbor的服务器证书
--------------------------------------------------------------------------------------------
修改harbor的配置文件
cp harbor.yml.tmpl harbor.yml
nano /root/harbor/harbor.yml 
hostname: myharbor.unite-puxi.local  ###修改主机名
certificate: /root/certs/myharbor.crt  ###修改harbor证书位置
private_key: /root/certs/myharbor.key  ###修改harbor私钥位置
#执行harbor 安装
./install.sh
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-portal ... done
Creating redis         ... done
Creating harbor-db     ... done
Creating registry      ... done
Creating registryctl   ... done
Creating harbor-core   ... done
Creating harbor-jobservice ... done
Creating nginx             ... done
✔ ----Harbor has been installed and started successfully.----
---------------------------------------------------------------------------------
#导入harbor 的CA证书,确保docker可以正确的登录到harbor,并且推送images
mkidr /etc/docker/certs.d/myharbor.unite-puxi.local
#在目录下导入CA.crt
[root@myharbor myharbor.unite-puxi.local]# ls
ca.crt
#重启doocker 服务	
systemctl restart docker

在证书服务器上将CSR文件导入,生成harbor的服务器证书
在这里插入图片描述

Harbor 导入镜像

登录Harbor 创建project
在这里插入图片描述

#使用docker 登录Harbor
docker login myharbor.unite-puxi.local -u admin -p Harbor12345
#使用docker pull image
docker pull vulnerables/web-dvwa
#使用docker 为镜像打标签
docker tag vulnerables/web-dvwa myharbor.unite-puxi.local/mylab/vulnerables/web-dvwa
#使用docker 将镜像上传到Harbor中
docker push  myharbor.unite-puxi.local/mylab/vulnerables/web-dvwa

我们可以在harbor 上看到我们上传的镜像
在这里插入图片描述

六、K8s 使用Harbor的本地镜像库部署一个容器

证书问题

由于最新的k8s1.24.3 不再使用docker 作为容器引擎,而是使用containerd 作为容器引擎。
所以集群在pull 镜像的时候不再使用docker pull ,而是使用nerdctl pull,但是此时nerdctl 在调用harbor时会出现证书报错问题,此时我们可以修改containerd的配置文件忽略证书报错。

#在所有的k8s节点忽略证书问题
nano /etc/containerd/config.toml
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."myharbor.unite-puxi.local"]
    endpoint = ["https://myharbor.unite-puxi.local"]
  [plugins."io.containerd.grpc.v1.cri".registry.configs]
    [plugins."io.containerd.grpc.v1.cri".registry.configs."myharbor.unite-puxi.local".tls]
      insecure_skip_verify = true
#重启containerd进程
systemctl restart containerd

部署dvwa

创建secret
在这里插入图片描述
测试从harbor pull image 部署dvwa
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
访问dvwa
在这里插入图片描述
访问dvwa的容器日志
在这里插入图片描述

七、总结

这个文档主要偏向于部署,后续一些组件的详细应用有时间会详细学习并整理
参考链接:
https://kuboard.cn/

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值