利用sealos+kuboard搭建中文化带web管理的k8s集群
利用sealos+kuboard搭建中文化带web管理的k8s集群
教程视频来源:
视频和笔记资料领取:微信CSmas0222
sealos作者:
中本呆:sealos 作者创业心路历程16 赞同 · 0 评论文章
其他关于sealos直接搭建集群的文章:
【工具】使用 sealos 部署 k8s 集群blog.csdn.net/xiaoliizi/article/details/126998976
sealos 离线部署 k8s 高可用集群www.cnblogs.com/lfl17718347843/p/16074745.html
Rainbond:开源云原生平台对比 KubeSphere vs Rainbond15 赞同 · 1 评论文章
kuboard的小缺点:不给钱只能看当天一天的操作日志审计~~~
不过,如果能每天定时发到elk的话,应该也能实现白嫖所有日志
kuboard,saelos,rancher都是基于kubeadm的,理论上直接用kubeadm也可以,这个算进阶内容了
一、主机准备(所有节点必须执行!!)
所有节点同步执行的办法:
1.1 配置主机名
# hostnamectl set-hostname xxx
<p>k8s-master01
k8s-master02
k8s-master03
k8s-worker01
PS.master节点如果挂掉两台,仍然可用
为什么这里不给worker节点做高可用?
1.2 设置静态IP地址
序号 | 主机名 | 主机IP |
---|---|---|
1 | k8s-master01 | 192.168.10.142 |
2 | k8s-master02 | 192.168.10.143 |
3 | k8s-master03 | 192.168.10.144 |
4 | k8s-worker01 | 192.168.10.145 |
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="ec87533a-8151-4aa0-9d0f-1e970affcdc6"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.10.xxx"
PREFIX="24"
GATEWAY="192.168.10.2"
DNS1="119.29.29.29"
1.3 配置主机名与IP地址解析
下面解析是管理员添加,sealos在运行过程中,也会自动添加主机名与IP地址解析关系。
# /etc/hosts
192.168.10.142 k8s-master01
192.168.10.143 k8s-master02
192.168.10.144 k8s-master03
192.168.10.145 k8s-worker01
1.4 升级内核
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org</p>
<p>yum -y install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm</p>
<p>yum --enablerepo="elrepo-kernel" -y install kernel-lt.x86_64</p>
<p>awk -F ' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg</p>
<p>grub2-set-default "CentOS Linux (5.4.204-1.el7.elrepo.x86_64) 7 (Core)"</p>
<p>reboot
二、sealos准备(只需要在一个master节点执行)
下面有sealos官方给的安装办法,如果发现安装有问题可以去官方查看最新的安装办法
sealos 安装 | sealoswww.sealyun.com/zh-Hans/docs/getting-started/installation
wget https://github.com/labring/sealos/releases/download/v4.2.0/sealos_4.2.0_linux_amd64.tar.gz <br />
&& tar zxvf sealos_4.2.0_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin</p>
<h1 id="sealos version">sealos version</h1>
<p>{"gitVersion":"4.0.0","gitCommit":"7146cfe","buildDate":"2022-06-30T14:24:31Z","goVersion":"go1.17.11","compiler":"gc","platform":"linux/amd64"}sealos 安装 | sealos</p>
<h1 id="sealos version">sealos version</h1>
<p>{"gitVersion":"4.0.0","gitCommit":"7146cfe","buildDate":"2022-06-30T14:24:31Z","goVersion":"go1.17.11","compiler":"gc","platform":"linux/amd64"}
三、使用sealos部署kubernetes集群(只需要在一个master节点执行)
kubernetes集群默认使用containerd
sealos run labring/kubernetes:v1.24.0 labring/calico:v3.22.1 --masters 192.168.10.142,192.168.10.143,192.168.10.144 --nodes 192.168.10.145 --passwd centos</p>
<h1 id="kubectl get nodes">kubectl get nodes</h1>
<p>NAME STATUS ROLES AGE VERSION
k8s-master01 Ready control-plane 16h v1.24.0
k8s-master02 Ready control-plane 16h v1.24.0
k8s-master03 Ready control-plane 16h v1.24.0
k8s-worker01 Ready <none> 16h v1.24.0</p>
<h1 id="kubectl get pods -n kube-system">kubectl get pods -n kube-system</h1>
<p>NAME READY STATUS RESTARTS AGE
coredns-6d4b75cb6d-59ph5 1/1 Running 1 (15h ago) 16h
coredns-6d4b75cb6d-wz6tx 1/1 Running 1 (15h ago) 16h
etcd-k8s-master01 1/1 Running 1 (15h ago) 16h
etcd-k8s-master02 1/1 Running 1 (15h ago) 16h
etcd-k8s-master03 1/1 Running 1 (15h ago) 16h
kube-apiserver-k8s-master01 1/1 Running 3 (15h ago) 16h
kube-apiserver-k8s-master02 1/1 Running 1 (15h ago) 16h
kube-apiserver-k8s-master03 1/1 Running 1 (15h ago) 16h
kube-controller-manager-k8s-master01 1/1 Running 3 (15h ago) 16h
kube-controller-manager-k8s-master02 1/1 Running 1 (15h ago) 16h
kube-controller-manager-k8s-master03 1/1 Running 1 (15h ago) 16h
kube-proxy-5l26r 1/1 Running 1 (15h ago) 16h
kube-proxy-cfbkh 1/1 Running 1 (15h ago) 16h
kube-proxy-g92fs 1/1 Running 1 (15h ago) 16h
kube-proxy-zsjxv 1/1 Running 1 (15h ago) 16h
kube-scheduler-k8s-master01 1/1 Running 3 (15h ago) 16h
kube-scheduler-k8s-master02 1/1 Running 1 (15h ago) 16h
kube-scheduler-k8s-master03 1/1 Running 1 (15h ago) 16h
kube-sealyun-lvscare-k8s-worker01 1/1 Running 1 (15h ago) 16h
四、使用kuboard实现k8s集群托管
序号 | 主机名 | 主机IP |
---|---|---|
1 | kuboard-server | 192.168.10.146 |
PS.这里要用不在k8s集群中的一台主机来做kuboard!!!!!
4.1 kuboard部署及访问(必须在k8s集群以外的一台机器执行!!)
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
systemctl enable --now docker
#下面docker的命令注意!!!,这个ip也必须根据集群中实际的电脑ip来写!!!否则web里面看到的agent下载ip也是不对的
docker run -d --restart=unless-stopped --name=kuboard -p 80:80/tcp -p 10081:10081/tcp -e KUBOARD_ENDPOINT="http://192.168.10.146:80" -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" -v /root/kuboard-data:/data eipwork/kuboard:v3
之后注意!! 必须/etc/sysctl.conf加一个路由
echo "net.ipv4.ip_forward=1 " >> /etc/sysctl.conf #增加一行net.ipv4.ip_forward=1
sysctl -p #让内核修改生效
在浏览器打开地址http://这台机器的IP
,输入用户名admin
,默认密码Kuboard123
,即可登录 Kuboard-Spray 界面
4.2 kuboard添加k8s集群
[root@k8s-master01 ~]# kubectl apply -f kuboard-agent.yaml</p>
<p>namespace/kuboard created
serviceaccount/kuboard-admin created
clusterrolebinding.rbac.authorization.k8s.io/kuboard-admin-crb created
serviceaccount/kuboard-viewer created
clusterrolebinding.rbac.authorization.k8s.io/kuboard-viewer-crb created
deployment.apps/kuboard-agent-du7gv7 created
deployment.apps/kuboard-agent-du7gv7-2 created
[root@k8s-master01 ~]# kubectl get pods -n kuboard
NAME READY STATUS RESTARTS AGE
kuboard-agent-du7gv7-2-84f65f77b8-rcb4x 1/1 Running 0 54s
kuboard-agent-du7gv7-56c7cb9564-m78qx 1/1 Running 0 54s
选择管理的身份!!!,必须选择kuboard-admin,这个是权限最大的账户!!
五. 用kuboard面板添加nfs存储
5.1 nfs服务器搭建
找一台电脑安装nfs
yum install -y nfs-utils rpcbind
假设这台电脑的sdb硬盘要用作nfs,那么配置好了先挂挂载给/data目录
# 对sdb进行分区,单分区占全盘
parted /dev/sdb mklabel gpt
parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100%</p>
<h1 id="等待sdb1分区创建">等待sdb1分区创建</h1>
<p>sleep 10</p>
<h1 id="格式化sdb1分区">格式化sdb1分区</h1>
<p>mkfs.ext4 /dev/sdb1</p>
<h1 id="创建挂载点并挂载">创建挂载点并挂载</h1>
<p>mkdir -p /data
mount /dev/sdb1 /data</p>
<h1 id="开机自动挂载sdb1分区">开机自动挂载sdb1分区</h1>
<p>echo "/dev/sdb1 /data ext4 defaults 0 0" | sudo tee -a /etc/fstab
*************************************************************
然后nfs-server服务设为开机自启动,并现在启动
systemctl enable --now nfs-server
之后去面板上创建存储类,把nfs的/data目录做成存储
一秒钟就干完了~~~
[root@k8s-master01 ~]# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
kubemsb-nfs nfs-kubemsb-nfs Delete WaitForFirstConsumer false 46s
能看到存储类已经在集群里面了
六.firewalld防火墙的处理
6.1 官方的端口说明
关于端口的官方说明可见地址:
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
假设k8s部署情况如下:
主机名 | 主机IP |
---|---|
k8s-master | 172.17.185.91 |
k8s-node01 | 172.17.185.92 |
k8s-node02 | 172.17.185.93 |
k8s-node03 | 172.17.185.94 |
所有机器上执行如下命令:
# 确保开启防火墙服务
systemctl restart firewalld</p>
<h1 id="将集群内所有的节点IP配置到防火墙可信区中">将集群内所有的节点IP配置到防火墙可信区中</h1>
<p>firewall-cmd --permanent --zone=trusted --add-source=172.17.185.91
firewall-cmd --permanent --zone=trusted --add-source=172.17.185.92
firewall-cmd --permanent --zone=trusted --add-source=172.17.185.93
firewall-cmd --permanent --zone=trusted --add-source=172.17.185.94</p>
<h1 id="增加防火墙规则">增加防火墙规则</h1>
<p>firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -j ACCEPT -m comment --comment "kube-proxy redirects"
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 1 -j ACCEPT -m comment --comment "docker subnet"</p>
<h1 id="设置防火墙伪装ip, 打开NAT,默认是关闭状态">设置防火墙伪装ip, 打开NAT,默认是关闭状态</h1>
<p>firewall-cmd --add-masquerade --permanent</p>
<h1 id="所有k8s的NodePort端口添加到例外">所有k8s的NodePort端口添加到例外</h1>
<p>firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp</p>
<h1 id="重新加载配置">重新加载配置</h1>
<p>firewall-cmd --reload
编辑于 2023-05-21 10:49・IP 属地上海