一、简介

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 spray 172.18.1.224 kuboard-spray centos7.9
Harbor/NFS: 172.18.1.225 myharbor.unite-puxi.local centos7.9
Kubernetes Master node 172.18.1.220 k8s-m centos7.9
Kubernetes Work node1 172.18.1.221 k8s-n1 centos7.9
Kubernetes Work node2 172.18.1.222 k8s-n2 centos7.9
CA server 172.18.1.240 ca.unite-puxi.local windows server 2016
DNS sever 172.17.1.1 ad_query.unite-puxi.local windows 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/

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

  1. kubespray v2.21.0 部署 kubernetes v1.24.0 集群

    文章目录 1. 前言 2. 创建7台虚拟机 3. 部署 git 3.1 dnf 安装 3.2 tar 安装 4. 下载 kubespray 介质 5. 配置 zsh 终端 6. 配置互信 7. 安装 ...

  2. kubespray v2.21.0 在线定制部署升级 kubernetes v1.24.0 集群【2】

    文章目录 简介 创建 虚拟机模板 虚拟机名称 配置静态地址 配置代理 yum 配置 配置主机名 安装 git 安装 docker 安装 ansible 配置内核参数 安装 k8s 定制安装 kuber ...

  3. 87: 企业监控系统部署 、 搭建Harbor私有仓库 、 总结和答疑

    Top NSD PROJECT3 DAY04 案例1:部署zabbix监控服务器 案例2:制作Zabbix客户端RPM软件包 案例3.Zabbix自动化监控 案例4.自定义Zabbix监控项目 案例5 ...

  4. 部署企业私有镜像仓库Harbor

    私有镜像仓库有许多优点         1)节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可;         2)提供镜像资源利用,针对于公司内部使用的镜像, ...

  5. 一份详尽的利用 Kubeadm部署 Kubernetes 1.13.1 集群指北

    2019独角兽企业重金招聘Python工程师标准>>> 概 述 Kubernetes集群的搭建方法其实有多种,比如我在之前的文章<利用K8S技术栈打造个人私有云(连载之:K8S ...

  6. 有史以来最详细 安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题)

    安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题) 官方文档:https://github.com/kubernetes/dashboard 参考文章 ...

  7. 二进制部署Kubernetes v1.13.4 HA可选

    本次采用二进制文件方式部署,本文过程写成了更详细的ansible部署方案 https://github.com/zhangguanzhang/Kubernetes-ansible 和之前的步骤差不多都 ...

  8. CentOS 使用二进制部署 Kubernetes 1.13集群

    CentOS 使用二进制部署 Kubernetes 1.13集群 一.概述 kubernetes 1.13 已发布,这是 2018 年年内第四次也是最后一次发布新版本.Kubernetes 1.13 ...

  9. kubeadm部署kubernetes

    kubeadm部署kubernetes kubeadm 部署方式介绍 单master节点环境准备 卸载kubernetes kubeadm init命令文档 kubeadm 部署方式介绍 1.使用ku ...

  10. 使用docker engine 运行时 集群部署 kubernetes v1.23

    硬件环境: 使用 VMware16 模拟3台服务器,建立1个control plane(master),2个work 节点的kubernetes集群 使用 Ubuntu server 20.04 TL ...

最新文章

  1. Github 代码上边的Raw、Blame、History是啥意思?
  2. 秒拍副总裁陈太锋:如何通过数据分析提升有效播放量
  3. 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表
  4. php.ini不见了,php.ini找不到
  5. Android NDK学习(七):NDK 编译支持 C++特有的库
  6. c语言专属英语单词,C语言 V 编程英语单词.doc
  7. http服务器响应格式,熟悉Http协议的请求和响应格式,编写一个简单的Http服务器。 基本要求:1 正确解...
  8. 对openflow 1.0协议的扩展
  9. Map 3D API二次开发学习指南
  10. Matlab中fread函数用法
  11. 制作U盘DOS启动盘详细教程及工具,及DOS下升级BIOS方法,传统BIOS升级为UEFI
  12. 背离意味着趋势正在减弱
  13. 逆思维:GAN不能生成什么?Seeing What a GAN Cannot Generate
  14. 如何评估互联网广告效果
  15. Mantis集成富文本插件
  16. 为什么那么多人中途都放弃了
  17. easypoi 语法_高中英语语法:高中英语必修1选修8全八册知识点总结
  18. Abaqus后处理 - 常用技巧
  19. CVE-2010-0188漏洞点定位
  20. Agile Office 365 免积分下载

热门文章

  1. 《平凡的世界》造就不平凡的人生 --路遥
  2. Xshell连接路由器或交换机Console口
  3. 使用Java将中文转化为拼音
  4. java if里面并列_多个if语句并列-两个if语句并列-if语句两个并列条件怎么表示
  5. Spring Boot整合JPA
  6. coreldraw x5 选择工具快捷键_CorelDRAW X5实用教程:X5版本常用快捷键
  7. 一.什么是java面向对象 (小白神器)
  8. 关于魔兽守卫军的改进建议
  9. SSM+jsp整合步骤(注解开发)
  10. ipad+PDF Expert:买前生产力,买后生产力