前言
KubeSphere是Kubernetes的多集群管理的分布式操作系统,并且支持了DevOps工作流,并且它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用 (plug-and-play) 的集成。
代码语言:javascript复制KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。
KubeSphere 为用户提供构建企业级 Kubernetes 环境所需的多项功能,例如:
- 多云与多集群管理、
- Kubernetes 资源管理、
- DevOps、
- 应用生命周期管理、
- 微服务治理(服务网格)、
- 日志查询与收集、服务与网络、
- 多租户管理、
- 监控告警、
- 事件与审计查询、
- 存储管理、
- 访问权限控制、
- GPU 支持、
- 网络策略、
- 镜像仓库管理以及安全管理等。
kubernetes的安装部署也一直是一大痛点,但是KubeSphere开源了KubeKey可以一键在公有云或数据中心快速搭建 Kubernetes 集群,提供单节点、多节点、集群插件安装,以及集群升级与运维。
接下来的安装就是基于kubeKey进行的安装
1. 环境配置
本篇配置:
操作系统 | 硬件配置 | 数量 |
---|---|---|
CentOS 7.6 | 2 核 CPU,4 GB 内存,60 GB 磁盘空间 | 1台 |
官方支持的操作系统及最低配置
操作系统 | 最低配置 |
---|---|
Ubuntu 16.04, 18.04 | 2 核 CPU,4 GB 内存,40 GB 磁盘空间 |
Debian Buster, Stretch | 2 核 CPU,4 GB 内存,40 GB 磁盘空间 |
CentOS 7.x | 2 核 CPU,4 GB 内存,40 GB 磁盘空间 |
Red Hat Enterprise Linux 7 | 2 核 CPU,4 GB 内存,40 GB 磁盘空间 |
SUSE Linux Enterprise Server 15/openSUSE Leap 15.2 | 2 核 CPU,4 GB 内存,40 GB 磁盘空间 |
安装前最好保证环境是纯净环境,我这里是云服务器,重装了CentOS7.6系统
支持容器
代码语言:javascript复制使用KubeKey进行安装会默认安装最新容器,也可以在使用KubeKey进行安装前安装好指定容器
以下是支持的容器版本
支持的容器 | 版本 |
---|---|
Docker | 19.3.8 |
containerd | 最新版 |
CRI-O(试验版,未经充分测试) | 最新版 |
iSula(试验版,未经充分测试) | 最新版 |
Kubernetes依赖
代码语言:javascript复制KubeKey可以指定安装Kubernetes 和 KubeSphere ,但是不同版本的Kubernetes有不同的依赖要求
依赖项 | Kubernetes 版本 ≥ 1.18 | Kubernetes 版本 < 1.18 |
---|---|---|
socat | 必须 | 可选但建议 |
conntrack | 必须 | 可选但建议 |
ebtables | 可选但建议 | 可选但建议 |
ipset | 可选但建议 | 可选但建议 |
2. 配置软件依赖
第一步: 关闭防火墙
代码语言:javascript复制systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
第二步:关闭swap分区
代码语言:javascript复制swapoff -a
echo "vm.swappiness=0" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
第三步:配置epel源
代码语言:javascript复制rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
第四步:更新yum
代码语言:javascript复制yum -y update
第五步:安装依赖组件
也就是上面的Kubernetes依赖里的内容,全部安装
代码语言:javascript复制yum install -y ebtables socat ipset conntrack
3. 安装KubeSphere和kubernetes
使用KubeKey可以选择安装KubeSphere和kubernetes的其中一个,也可以全部安装
第一步:下载KubeKey
如果网络不好的小伙伴无法下载默认源,执行以下命令设置国内下载
代码语言:javascript复制export KKZONE=cn
下载KubeKey:
代码语言:javascript复制curl -sfL https://get-kk.kubesphere.io | VERSION=v2.2.1 sh -
给KubeKey添加可执行权限
代码语言:javascript复制chmod x kk
第二步:安装KubeSphere和kubernetes
在安装前请先检查hostname,如果不符合规则会报以下错误
代码语言:javascript复制error: Pipeline[CreateClusterPipeline] execute failed: Module[InitKubernetesModule] exec failed:
failed: [VM-20-8-centos] [AddWorkerLabel] exec failed after 5 retires: add worker label failed: Failed to exec command: sudo -E /bin/bash -c "/usr/local/bin/kubectl label --overwrite node VM-20-8-centos node-role.kubernetes.io/worker="
Error from server (NotFound): nodes "VM-20-8-centos" not found: Process exited with status 1
这时候就需要修改hostname,因为我们是单机安装就设置为master吧,执行以下命令
代码语言:javascript复制hostnamectl --static set-hostname master
设置完成后使用hostnamectl status
命令进行核验
执行以下命令安装KubeSphere和kubernetes:
代码语言:javascript复制./kk create cluster --with-kubernetes v1.22.10 --with-kubesphere v3.3.0
如果只需要安装KubeSphere或者kubernetes其中一个去掉–with的另一个就可以
这次安装的时间很长,起身活动一下
第三步:安装完成核验
安装完成后执行以下命令查看安装结果
代码语言:javascript复制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
输出信息会显示 Web 控制台的 IP 地址和端口号,默认的 NodePort 是 30880
。现在可以使用默认的帐户和密码 (admin/P@88w0rd
) 通过 <NodeIP>:30880
访问控制台。
第四步:登陆系统
在浏览器上访问ip 30880的地址出现以下页面
使用默认的帐户和密码 (admin/P@88w0rd
)进行登陆,登陆后就可以探索KubeSphere了
但是真正使用k8s集群单机是不可以的,下篇文章是多节点集群的配置