概述

KubeSphere 是 GitHub 上的一个开源项目,是成千上万名社区用户的聚集地。很多用户都在使用 KubeSphere 运行工作负载。对于在 Linux 上的安装,KubeSphere 既可以部署在云端,也可以部署在本地环境中,例如 AWS EC2、Azure VM 和裸机等。

KubeSphere 为用户提供轻量级安装程序 KubeKey(该程序支持安装 Kubernetes、KubeSphere 及相关插件),安装过程简单而友好。KubeKey 不仅能帮助用户在线创建集群,还能作为离线安装解决方案。

  • Control plane node:主节点,通常托管控制平面,控制和管理整个系统。

  • Worker node:工作节点,运行部署在工作节点上的实际应用程序。

KubeKey(由 Go 语言开发)是一种全新的安装工具,替代了以前使用的基于 ansible 的安装程序。KubeKey 为您提供灵活的安装选择,您可以仅安装 Kubernetes,也可以同时安装 Kubernetes 和 KubeSphere。

KubeKey 的几种使用场景:

  • 仅安装 Kubernetes;
  • 使用一个命令同时安装 Kubernetes 和 KubeSphere;
  • 扩缩集群;
  • 升级集群;
  • 安装 Kubernetes 相关的插件(Chart 或 YAML)。
  • 为什么选择 KubeKey

    • 以前基于 ansible 的安装程序依赖于许多软件,例如 Python。KubeKey 由 Go 语言开发,可以消除在多种环境中出现的问题,确保成功安装。
    • KubeKey 支持多种安装选项,例如 All-in-One多节点安装以及离线安装
    • KubeKey 使用 Kubeadm 在节点上尽可能多地并行安装 Kubernetes 集群,使安装更简便,提高效率。与旧版的安装程序相比,它极大地节省了安装时间。
    • KubeKey 提供内置高可用模式,支持一键安装高可用 Kubernetes 集群。
    • KubeKey 旨在将集群作为对象来进行安装,即 CaaO。

资源要求:

最小化安装:仅安装 KubeSphere 所需的最少系统组件。以下是最低资源要求:

  • 2 个 CPU
  • 4 GB 运行内存
  • 40 GB 存储空间

步骤 1:准备 Linux 主机

系统要求

系统 最低要求(每个节点)
Ubuntu 16.04,18.04,20.04, 22.04 CPU:2 核,内存:4 G,硬盘:40 G
Debian Buster,Stretch CPU:2 核,内存:4 G,硬盘:40 G
CentOS 7.x CPU:2 核,内存:4 G,硬盘:40 G
Red Hat Enterprise Linux 7 CPU:2 核,内存:4 G,硬盘:40 G
SUSE Linux Enterprise Server 15 /openSUSE Leap 15.2 CPU:2 核,内存:4 G,硬盘:40 G

备注

  • /var/lib/docker 路径主要用于存储容器数据,在使用和操作过程中数据量会逐渐增加。因此,在生产环境中,建议为 /var/lib/docker 单独挂载一个硬盘。

  • CPU 必须为 x86_64,暂时不支持 Arm 架构的 CPU。

节点要求

  • 所有节点必须都能通过 SSH 访问。
  • 所有节点时间同步。
  • 所有节点都应使用 sudo/curl/openssl/tar

容器运行时

您的集群必须有一个可用的容器运行时。如果您使用 KubeKey 搭建集群,KubeKey 会默认安装最新版本的 Docker。或者,您也可以在创建集群前手动安装 Docker 或其他容器运行时。

支持的容器运行时 版本
Docker 19.3.8+
containerd 最新版
CRI-O(试验版,未经充分测试) 最新版
iSula(试验版,未经充分测试) 最新版

依赖项要求

KubeKey 可以一同安装 Kubernetes 和 KubeSphere。根据要安装的 Kubernetes 版本,需要安装的依赖项可能会不同。您可以参考下表,查看是否需要提前在节点上安装相关依赖项。

依赖项 Kubernetes 版本 ≥ 1.18 Kubernetes 版本 < 1.18
socat 必须 可选,但建议安装
conntrack 必须 可选,但建议安装
ebtables 可选,但建议安装 可选,但建议安装
ipset 可选,但建议安装 可选,但建议安装

网络和 DNS 要求

  • 请确保 /etc/resolv.conf 中的 DNS 地址可用,否则,可能会导致集群中的 DNS 出现问题。
  • 如果您的网络配置使用防火墙规则或安全组,请务必确保基础设施组件可以通过特定端口相互通信。建议您关闭防火墙。有关更多信息,请参见端口要求
  • 支持的 CNI 插件:Calico 和 Flannel。其他插件也适用(例如 Cilium 和 Kube-OVN 等),但请注意它们未经充分测试。

提示

  • 建议您使用干净的操作系统(即不安装任何其他软件)。否则,可能会产生冲突。
  • 如果您从 dockerhub.io 下载镜像时遇到问题,建议提前准备仓库的镜像地址(即加速器)。请参见为安装配置加速器为 Docker Daemon 配置仓库镜像

本示例包括以下三台主机,其中主节点充当任务机。

主机 IP 主机名 角色
192.168.0.2 control plane control plane, etcd
192.168.0.3 node1 worker
192.168.0.4 node2 worker

一.安装系统后操作(所有主机执行)

1.修改时间

yang@master:~$ tzselect

在这里我们选择亚洲 Asia,确认之后选择中国(China),最后选择北京(Beijing),选择1

2.复制文件到/etc目录下

root@ubuntu:/# sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

3.查看时间,是否正确,是否为+0800时区

date -R

Wed, 26 Oct 2022 10:29:22 +0800

二.安装容器引擎及系统设置(所有主机执行)

1.安装docker

Install Docker Engine on Ubuntu
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
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
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io 

2.ubuntu设置普通用户也能执行docker命令

通过将用户添加到docker用户组可以将sudo去掉,命令如下:

sudo groupadd docker #添加docker用户组

sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中

newgrp docker #更新用户组 

3.设置开机挂载nas(根据自己需求,看是否需要挂载)

sudo touch /etc/rc.local
sudo nano rc.local
#!/bin/bash
mount -t cifs -o username=admin,password=HNT8Oqub,iocharset=utf8 //192.168.1.2/server1 /nas/
exit 0 sudo chmod +x /etc/rc.local
sudo reboot
# 进入挂载的/nas 目录下查看,是否挂载成功
sudo apt update
sudo apt upgrade -y
sudo apt install nfs-common
sudo mkdir /nas
sudo systemctl enable rc-local.service ## 设置开机启动rc.local服务
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service 

4.关闭Swapoff分区

4.1 临时关闭

swapoff -a

4.2 永久关闭

yang@master:~$ sudo vim /etc/fstab 

# /etc/fstab: static file system information.
#
#/swap.img none swap sw 0 0

4.3 查看

yang@master:~$ free -h
total used free shared buff/cache available
Mem: 3.8Gi 2.1Gi 163Mi 4.0Mi 1.6Gi 1.5Gi
Swap: 0B 0B 0B

说明:---Swap一行全部为0则为关闭状态

5.更换镜像源

5.1 首先备份系统自带的源,以防修改错误!

命令:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.back

5.2 修改系统镜像源

文件目录:/etc/apt/sources.list

修改sources.list文件,将http://.*archive.ubuntu.com和http://.*security.ubuntu.com或者阿里云源(http://mirreors.aliyun.com)替换成http://repo.huaweicloud.com,可以参考如下命令:

sudo sed -i "s@http://mirrors.aliyun.com/@http://repo.huaweicloud.com/@g" /etc/apt/sources.list
sudo sed -i "s@http://.*archive.ubuntu.com/@http://repo.huaweicloud.com/@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com/@http://repo.huaweicloud.com/@g" /etc/apt/sources.list

5.3 更新镜像源列表索引

sudo apt-get update

5.4 更新更换源后的软件版本

sudo apt-get upgrade

6.修改主机名

yang@master:~$ hostnamectl set-hostname master
yang@node:~$ hostnamectl set-hostname node

步骤 2:下载 KubeKey (master执行)

1.先执行以下命令以确保您从正确的区域下载 KubeKey。

export KKZONE=cn

2.执行以下命令下载 KubeKey:

curl -sfL https://get-kk.kubesphere.io | VERSION=v2.2.2 sh -

备注:1.下载 KubeKey 后,如果您将其传输至访问 Googleapis 同样受限的新机器,请您在执行以下步骤之前  务必再次执行 export KKZONE=cn 命令。

   2. 执行以上命令会下载最新版 KubeKey (v2.2.2),您可以修改命令中的版本号下载指定版本。
3.为 kk 添加可执行权限:
chmod +x kk

步骤 3:开始安装(master执行)

支持矩阵

1.若需使用 KubeKey 来安装 Kubernetes 和 KubeSphere 3.3.0,请参见下表以查看所有受支持的 Kubernetes 版本。

KubeSphere 版本 受支持的 Kubernetes 版本
v3.3.0 v1.19.x、v1.20.x、v1.21.x、v1.22.x、v1.23.x(实验性支持)

2.在本快速入门教程中,您只需执行一个命令即可进行安装,其模板如下所示:

sudo ./kk create cluster [--with-kubernetes version] [--with-kubesphere version]

3.若要同时安装 Kubernetes 和 KubeSphere,可参考以下示例命令:

sudo ./kk create cluster --with-kubernetes v1.22.10 --with-kubesphere v3.3.0

备注

  • 安装 KubeSphere 3.3.0 的建议 Kubernetes 版本:1.19.x、1.20.x、1.21.x、v1.22.x 和 v1.23.x(实验性支持)。如果不指定 Kubernetes 版本,KubeKey 将默认安装 Kubernetes v1.23.7。有关受支持的 Kubernetes 版本的更多信息,请参见支持矩阵

4.执行该命令后,KubeKey 将检查您的安装环境,结果显示在一张表格中。有关详细信息,请参见节点要求依赖项要求。输入 yes 继续安装流程。

5.如果未安装socat和conntrack,执行以下命令:

sudo apt install -y socat conntrack

说明:

  socat:特点就是在两个数据流之间建立通道

  conntrack:跟踪并且记录连接状态 

步骤 4:验证安装结果

1.输入以下命令以检查安装结果。

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

2.输出信息会显示 Web 控制台的 IP 地址和端口号,默认的 NodePort 是 30880。现在,您可以使用默认的帐户和密码 (admin/P@88w0rd) 通过 <NodeIP>:30880 访问控制台。

#####################################################
### Welcome to KubeSphere! ###
##################################################### Console: http://192.168.0.2:30880
Account: admin
Password: P@88w0rd NOTES:
1. After you log into the console, please check the
monitoring status of service components in
"Cluster Management". If any service is not
ready, please wait patiently until all components
are up and running.
2. Please change the default password after login. #####################################################
https://kubesphere.io 20xx-xx-xx xx:xx:xx
#####################################################

3.登录至控制台后,您可以在系统组件中查看各个组件的状态。如果要使用相关服务,您可能需要等待部分组件启动并运行。您也可以使用 kubectl get pod --all-namespaces 来检查 KubeSphere 相关组件的运行状况。

4.执行kubenetes集群安装后必要程序

  mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

说明:

负责报错,各个服务器之间无法通信,导致连不上
error: Pipeline[AddNodesPipeline] execute failed: Module[KubernetesStatusModule] exec failed:
failed: [master] [GetClusterStatus] exec failed after 3 retires: get kubernetes cluster info failed: Failed to exec command: sudo -E /bin/bash -c "/usr/local/bin/kubectl --no-headers=true get nodes -o custom-columns=:metadata.name,:status.nodeInfo.kubeletVersion,:status.addresses"
The connection to the server localhost:8080 was refused - did you specify the right host or port?: Process exited with status 1

5. 使普通用户可以使用kubectl命令

sudo mkdir -p /home/yang/.kube/conf/
sudo cp /etc/kubernetes/admin.conf /home/yang/.kube/conf/
sudo chown yang.yang/home/yang/.kube/conf/admin.conf

5.1 添加环境变量  

sudo cat /home/yang/.bashrc
export KUBECONFIG=/home/yang/.kube/conf/admin.conf
5.2 使其生效
sudo source /home/yang/.bashrc

5.3修改sudoers 文件中的权限

sudo nano /etc/sudoers
在root 下面添加
yang  ALL=(ALL) NOPASSWD:/usr/bin/kubectl
说明:
  yang  代表的是用户名,根据自己的用户名进行修改

步骤5:增加工作节点

KubeSphere 使用一段时间之后,由于工作负载不断增加,您可能需要水平扩展集群。自 KubeSphere v3.0.0 起,您可以使用全新的安装程序 KubeKey 将新节点添加到集群。从根本上说,该操作是基于 Kubelet 的注册机制。换言之,新节点将自动加入现有的 Kubernetes 集群。KubeSphere 支持混合环境,这意味着新添加的主机操作系统可以是 CentOS 或者 Ubuntu。

1.在master上使用 KubeKey 检索集群信息。以下命令会创建配置文件 (sample.yaml)。

./kk create config --from-cluster 

备注:

如果您的机器上已有配置文件,就可以跳过此步骤。例如,若要将节点添加到由 KubeKey 设置的多节点集群,如果您没有删除该集群,则可能仍拥有该配置文件。

2.在配置文件中,将新节点的信息放在 hosts 和 roleGroups 之下。该示例添加了两个新节点(即 node1 和 node2)。这里的 master1 是现有节点。

···
spec:
hosts:
- {name: master1, address: 192.168.0.3, internalAddress: 192.168.0.3, user: root, password: Qcloud@123}
- {name: node1, address: 192.168.0.4, internalAddress: 192.168.0.4, user: root, password: Qcloud@123}
- {name: node2, address: 192.168.0.5, internalAddress: 192.168.0.5, user: root, password: Qcloud@123}
roleGroups:
etcd:
- master1
control-plane:
- master1
worker:
- node1
- node2
···

备注:

  • 添加新节点时,请勿修改现有节点的主机名。

  • 用自己的主机名替换示例中的主机名。

3.node 安装依赖项(node 主机上执行)

sudo apt install socat conntrack -y

4.master 执行以下命令

./kk add nodes -f sample.yaml
5.重启 后节点就安装好了
systemctl daemon-reload && systemctl restart kubelet && systemctl restart docker

6.安装完成后,您将能够在 KubeSphere 的控制台上查看新节点及其信息。在集群管理页面,选择左侧菜单节点下的集群节点,或者执行命令 kubectl get node 以检查更改。

yang@master:~$ kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master,worker 17h v1.22.10
node Ready worker 16h v1.22.10

5.KubeSphere控制面板查看

以下是使用的常用命令:

1.设置master一般情况下不接受pod调度
sudo kubectl taint nodes master node-role.kubernetes.io/master=true:NoSchedule
2.master运行pod
kubectl taint nodes master node-role.kubernetes.io/master-
3.master不运行pod
kubectl taint nodes master node-role.kubernetes.io/master=:NoSchedule

4.查看master表示不运行pod

yang@master:~$ kubectl describe node master |grep Taints
Taints: node-role.kubernetes.io/master=true:NoSchedule

5.查看master表示运行pod

yang@master:~$ kubectl describe node master |grep Taints
Taints: <none>
6.查看master node 的name 和roles
kubectl describe node node1
7.去掉master的roles worker
yang@master:~$ kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master,worker 2d22h v1.22.10
node Ready worker 2d21h v1.22.10
yang@master:~$ sudo kubectl label node master node-role.kubernetes.io/worker-
node/master labeled
yang@master:~$ kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 2d22h v1.22.10
node Ready worker 2d21h v1.22.10
8.查看api-server服务 的类型
sudo kubectl -n kubesphere-system get svc
9.将 ks-apiserver 的服务类型变更为 NodePort
sudo kubectl -n kubesphere-system patch service ks-apiserver -p '{"spec":{"type":"NodePort"}}'

 

kubeSphere v3.3.0+kubernetes v1.22.10 集群部署的更多相关文章

  1. kubeadm安装kubernetes V1.11.1 集群

    之前测试了离线环境下使用二进制方法安装配置Kubernetes集群的方法,安装的过程中听说 kubeadm 安装配置集群更加方便,因此试着折腾了一下.安装过程中,也有一些坑,相对来说操作上要比二进制方 ...

  2. Ubuntu16.04搭建kubernetes v1.11.2集群

    1.节点介绍         master      cluster-1      cluster-2      cluster-3 hostname        k8s-55      k8s-5 ...

  3. kubernetes 1.4.5集群部署

    2016/11/16 23:39:58 环境: centos7 [fu@centos server]$ uname -a Linux centos 3.10.0-327.el7.x86_64 #1 S ...

  4. 五、Kubernetes_V1.10集群部署-master-部署组件

    一.配置apiserver 1.生成启动文件 cat > /usr/lib/systemd/system/kube-apiserver.service <<EOF [Unit] De ...

  5. 二、Kubernetes_V1.10集群部署-master-etcd

    1.ETCD集群服务器: (1)172.18.6.39 (2)172.18.6.40 (3)172.18.6.41 1.安装etcd # yum -y install etcd 2.发布证书 cp - ...

  6. openshift3.10集群部署

    简介 openshift是基于k8s的开源容器云. 要求 系统环境:CentOS 7.5 搭建一个master节点,两个node节点 注意: openshift3 依赖docker的版本为1.13.1 ...

  7. Redis3.0.1 Stable版本的集群部署(Mac)

    本文档基于如下原始文档(CentOS)创建: http://blog.csdn.net/xu470438000/article/details/42971091 修改了一些路径的错误,补全了一些命令执 ...

  8. 四、Kubernetes_V1.10集群部署-master-创建kubeconfig

    1.生成配置文件 # 创建 TLS Bootstrapping Token # export BOOTSTRAP_TOKEN=$( /dev/urandom | od -An -t x | tr -d ...

  9. hadoop2.7.3+spark2.0.1+scala2.11.8集群部署

    一.环境 4.用户 hadoop 5.目录规划 /home/hadoop/app    #程序目录 /home/hadoop/data  #数据目录     #打开文件的最大数 vi /etc/sec ...

  10. 六、Kubernetes_V1.10集群部署-node-部署节点组件

    一.配置kubelet 1.配置启动文件 # cat > /usr/lib/systemd/system/kubelet.service <<EOF [Unit] Descripti ...

随机推荐

  1. 前端防错以及好用小tips指南总结

    @前端防錯以及好用小tips指南總結 1.一般情況下我們接收到的都是對象格式,某些情況下,需要接到後端傳過來的奇怪的字符串格式的JSON,需要解析成對象,但是有時候他們傳過來的格式有問題,會報錯 解決 ...

  2. 作业详解及流程控制之for循环

    作业详解及流程控制之for循环 目录 作业详解及流程控制之for循环 一.作业详解 1.根据用户输入内容打印其权限 2.编写用户登录程序 4.猜年龄的游戏 二.流程控制之for循环 三.while循环 ...

  3. 【新晋开源项目】内网穿透神器[中微子代理] 加入 Dromara 开源社区

    1.关于作者 dromara开源组织成员,dromara/neutrino-proxy项目作者 名称:傲世孤尘.雨韵诗泽 名言: 扎根土壤,心向太阳.积蓄能量,绽放微光. 拘浊酒邀明月,借赤日暖苍穹. ...

  4. vue学习笔记(一) ---- vue指令(总体大纲)

    一.什么是Vue 官方文档:https://cn.vuejs.org/v2/guide/ 关键字: 渐进式框架 自底向上增量开发 视图层 单文件组件 复杂的单页应用 复杂的单页应用: 顾名思义,单页应 ...

  5. Kubernetes(k8s)控制器(一):deployment

    目录 一.系统环境 二.前言 三.Kubernetes 控制器 四.Deployment概览 五.创建deployment 六.修改deploy副本数 6.1 kubectl edit deploy ...

  6. Task记录3 :ContinueWith ,CancellationToken,的结合

    static void Main(string[] args) { //1.创建取消令牌数据 CancellationTokenSource tokenSource = new Cancellatio ...

  7. Redis-05持久化

    1 Redis持久化 RDB(Redis DataBase) AOF(Append Only File) 2 RBD 2.1 基本说明 在指定的时间间隔内将内存中的数据集快照写入磁盘文件,它恢复时将快 ...

  8. Activiti02流程基本功能使用

    主要分为一下几个步骤: 1.画图 2.部署流程-把图的信息转入到数据表格中 3.创建流程实例-开始一个流程-实际发起了一个流程 4.执行任务:获取任务+完成任务 1.画图 画了一个简单的流程图,图形文 ...

  9. 云端智创 | 批量化生产,如何利用Timeline快速合成短视频?

    本文内容整理自「智能媒体生产」系列课程第三讲:开发者实战,由阿里云智能视频云技术专家分享云剪辑Timeline的功能及使用方法.云剪辑OpenAPI的使用流程.短视频批量生产的基本原理以及使用Time ...

  10. SQL 实现全字段分组,每组取一条记录,记录满足:组内时间最大,组内不同类型数量求和

    1 SELECT 2 TT.CLASS_ID AS "classId", 3 TT.TEMPLATE_ID AS "templateId" , 4 TT.MSG ...