KubeSphere折腾记录
本文最后更新于 2024-09-03,文章内容距离上一次更新已经过去了很久啦,可能已经过时了,请谨慎参考喵。
前情提要
接上文:
上文写的有点太长了,重开一篇记录一下,整理一遍过程,同时继续折腾 kubesphere
三节点安装篇
其实就是上文的最后 kubesphere 重新开始3 部分,也是最后成功部署 kubesphere 三节点集群的一次过程
部署环境:
系统版本:Debian12.6
;内核 版本:6.1.0
;PVE平台:8.2.2
;CPU型号:x86_64_v2_AES
k8s-master1;10.10.10.56;2C8G100G
k8s-node1;10.10.10.57;2C8G100G
k8s-node2;10.10.10.58;2C8G100G
这里的 k8s-master1/node1/node2 都是指这台机器的 hostname ,可以在
/etc/hosts
中进行修改,或者使用命令hostnamectl set-hostname new_hostname
来修改,修改后重启生效。
首先配置普通用户使用 sudo
权限:(所有节点)
su # 切换到 root 用户
vim /etc/sudoers
# 新增普通用户权限
debian ALL=(ALL:ALL) ALL
安装小工具和依赖:(所有节点)
sudo apt update
sudo apt install curl openssl tar socat conntrack ebtables ipset -y
切换到 root 用户,配置时间同步:(所有节点)
su
# 看一下三台节点的时间是否同步
timedatectl
# 切换时区到亚洲上海
timedatectl set-timezone Asia/Shanghai
# 查看一下是否设置成功
timedatectl
# 安装时间同步工具
apt install chrony -y
# 查看时间同步服务器列表
chronyc -n sources -v
# 查看时间同步状态
chronyc tracking
# 核查三个节点的时间是否一样
timedatectl status
登录到 master 节点,测试 ssh 是否可以正常连接:
ssh debian@10.10.10.57
ssh debian@10.10.10.58
配置环境变量:(所有节点)(如果是国外机器,可以不用设置)
su
vim /root/.bashrc
# 最下面加入这一行
export KKZONE=cn
# 保存退出
source /root/.bashrc
# 退出 root 用户
exit
# 普通用户
vim ~/.bashrc
# 最下面加入这一行
export KKZONE=cn
# 保存退出
source ~/.bashrc
继续在 master 节点:(普通用户,不用切换 root 用户)
mkdir k8s-kubesphere && cd k8s-kubesphere
# 下载 KubeKey
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.1.5 sh -
# 下载完毕之后 ls 一下看看是否有 kk 这个文件
# 增加权限
chmod +x kk
# 生成配置文件
./kk create config --with-kubernetes v1.23.17 --with-kubesphere v3.4.1
注意这里的 kk 脚本版本
v3.1.5
,k8s 版本v1.23.17
,kubesphere 版本v3.4.1
,我都改成了兼容的最新的版本(截止 20240901)。
编辑配置文件: vim ./config-sample.yaml
(master 节点,普通用户)
spec:
hosts:
- {name: k8s-master1, address: 10.10.10.56, internalAddress: 10.10.10.56, user: debian, password: xxxxxx}
- {name: k8s-node1, address: 10.10.10.57, internalAddress: 10.10.10.57, user: debian, password: xxxxxx}
- {name: k8s-node2, address: 10.10.10.58, internalAddress: 10.10.10.58, user: debian, password: xxxxxx}
roleGroups:
etcd:
- k8s-master1
control-plane:
- k8s-master1
worker:
- k8s-node1
- k8s-node2
注意,这里是只修改这一部分内容即可,而不是删除的只剩下这部分。
其他配置项不用修改,默认最小安装。
安装集群和 kubesphere:(master 节点,普通用户)
./kk create cluster -f config-sample.yaml
等待代码跑完:
到这里可能会卡住,等待十几分钟或者半小时(根据网络情况),如果还没结束的话,不要手动结束,试试浏览器访问 10.10.10.56:30880
看看可不可以登陆上 kubesphere ,如果可以,说明安装成功了,如果不可以,说明还是网络原因导致一些镜像拉不下来,可以尝试给节点挂上全局代理(一定是全局代理,否则可能部分守护进程是不走普通代理的)再重新安装
我这里就是等待了十几分钟之后发现可以访问 kubesphere 控制台了,然后登录进去之后就发现这里已经显示安装成功了
输入初始账号和密码: admin/P@88w0rd
访问控制台。
然后终端就输出安装成功了:
按照提示,查看安装过程的日志:
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
查看集群的 pod 状态:
kubectl get pod --all-namespaces
所有的 pod 状态都在 running
,没毛病,安装成功!进入 web 控制台,查看集群和组件状态:
控制面板这里显示 master 节点有一个污点 pod,这是因为一般情况下,为了保证集群的稳定性,都不会让任务 pod 跑在 master 节点上的,查看系统组件,所有状态都是健康,部署成功。
增加节点
接上文,是用传统的三节点(1master2node)模式来安装的,这种模式一般只适用于测试环境,因为三节点模式并不是高可用状态,一旦 master 节点发生错误或者宕机,那么整个集群就会爆炸(bushi
所以我们来给上文的三节点集群再增加一个 master 节点,系统环境和其他三节点必须保持一致,我要增加的这个 master 节点配置还是一样的:
系统版本:Debian12.6
;内核 版本:6.1.0
;PVE平台:8.2.2
;CPU型号:x86_64_v2_AES
k8s-master2;10.10.10.59;2C8G100G
首先还是要初始化这台机器,例如时间同步、依赖安装等:
su # 切换到 root 用户
vim /etc/sudoers
# 新增普通用户权限
debian ALL=(ALL:ALL) ALL
# 安装依赖
sudo apt update
sudo apt install curl openssl tar socat conntrack ebtables ipset -y
# 配置时间同步
su
# 看一下节点的时间是否同步
timedatectl
# 切换时区到亚洲上海
timedatectl set-timezone Asia/Shanghai
# 查看一下是否设置成功
timedatectl
# 安装时间同步工具
apt install chrony -y
# 查看时间同步服务器列表
chronyc -n sources -v
# 查看时间同步状态
chronyc tracking
# 核查所有节点的时间是否一样
timedatectl status
登录到最初始的任务机,也就是 k8s-master1 节点,测试一下是否可以连接到新节点:
ssh debian@10.10.10.59
配置新节点 k8s-master2 环境变量:
su
vim /root/.bashrc
# 最下面加入这一行
export KKZONE=cn
# 保存退出
source /root/.bashrc
# 退出 root 用户
exit
# 普通用户
vim ~/.bashrc
# 最下面加入这一行
export KKZONE=cn
# 保存退出
source ~/.bashrc
返回任务机 k8s-master1 节点,修改配置文件 vim ./config-sample.yaml
:
spec:
hosts:
- {name: k8s-master1, address: 10.10.10.56, internalAddress: 10.10.10.56, user: debian, password: xxxxxx}
- {name: k8s-node1, address: 10.10.10.57, internalAddress: 10.10.10.57, user: debian, password: xxxxxx}
- {name: k8s-node2, address: 10.10.10.58, internalAddress: 10.10.10.58, user: debian, password: xxxxxx}
- {name: k8s-master2, address: 10.10.10.59, internalAddress: 10.10.10.59, user: debian, password: xxxxxx}
roleGroups:
etcd:
- k8s-master1
- k8s-master2
control-plane:
- k8s-master1
- k8s-master2
worker:
- k8s-node1
- k8s-node2
配置负载均衡服务器,还是修改这个配置文件:
spec:
controlPlaneEndpoint:
internalLoadbalancer: haproxy
domain: lb.kubesphere.local
address: ""
port: 6443
这是使用了 kubeKey 内置的 haproxy 高可用模式。
还是在 k8s-master1 这个节点上,使刚才修改的配置文件生效并增加新节点:(普通用户)
./kk add nodes -f config-sample.yaml
输入 yes,等待代码跑完。。。。。。
输入 kubectl get nodes
检查节点:
登录 web 控制台查看集群状态:
没什么问题,这样就完成集群的高可用配置和新增节点了喵。
单节点AllinOne
单节点我安装成功了,但是也没成功,因为给的内存太小了,导致监控组件的 pod 一直无法调度成功。
系统版本:Debian12.6
;内核 版本:6.1.0
;PVE平台:8.2.2
;CPU型号:x86_64_v2_AES
配置:2C-8G-100G
需要注意的是,单系统安装也必须具有 SSH 服务,请务必提前配置好。
首先安装部分小工具:
sudo apt install curl openssl tar -y
安装相关依赖:
sudo apt install socat conntrack ebtables ipset -y
配置环境变量:(所有节点)(如果是国外机器,可以不用设置)
su
vim /root/.bashrc
# 最下面加入这一行
export KKZONE=cn
# 保存退出
source /root/.bashrc
# 退出 root 用户
exit
# 普通用户
vim ~/.bashrc
# 最下面加入这一行
export KKZONE=cn
# 保存退出
source ~/.bashrc
和多节点安装差不多,不过不用生成配置文件,直接安装即可:
mkdir k8s-kubesphere && cd k8s-kubesphere
# 下载 KubeKey
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.1.5 sh -
# 下载完毕之后 ls 一下看看是否有 kk 这个文件
# 增加权限
chmod +x kk
# 切换 root 用户(多节点不用,单节点安装必须 root 用户)
su
# 直接安装 k8s 和 kubesphere
./kk create cluster --with-kubernetes v1.23.17 --with-kubesphere v3.4.1
等待代码跑完。。。。。。
还是卡在这里了,估计还是网络问题,等待了大概二十分钟左右,访问 web 页面已经可以进去了:
默认的帐户和密码 (admin/P@88w0rd
) 通过 <NodeIP>:30880
访问控制台:
报错:
request to http://ks-apiserver/oauth/token failed, reason: connect ECONNREFUSED 10.233.59.160:80
手动 Ctrl+C 结束任务,用下列命令查看一下安装日志:
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 控制台,刷新一下,登录,我靠,居然进去了:
赶紧看一下节点状态与组件状态:
发现是有四个监控组件异常,使用命令 kubectl get pod --all-namespaces
来查看所有 pod 状态:
如果有 pod 的状态是
ContainerCreating
,等待一会就好了(至少我是这样的)。
可以看到有四个 pod 状态是 Pending
,查阅了一下官方文档,尴尬的发现,原来是这台虚拟机的性能太弱了,导致资源无法调度。。。。。。
建议内存16G 起步,如果觉得不放心,可以重新执行一次安装集群的命令,就会直接跳安装成功,但是还是会无法调度(亲测),内存和 CPU 还是不够
事件中告警的原因其实是 CPU 不足,可以尝试一下 4C16G 的配置,官方演示视频中的配置为 8C16G,那么就先到这里啦,拜拜~