安装 multipass
brew install multipass
部署K3s集群
1: 检查multipass是否成功安装
-
命令:
multipass version -
说明: 这一步检查系统中是否已经安装了multipass工具。
2: 创建并启动主节点虚拟机
- 命令:
multipass launch --name master --cpus 1 --memory 1G --disk 5G - 说明: 使用multipass创建并启动名为
master的虚拟机,配置为1个CPU核心、1GB内存和5GB磁盘空间。
3: 创建并启动第一个工作节点虚拟机
- 命令:
multipass launch --name worker-node-1 --cpus 1 --memory 1G --disk 5G - 说明: 创建并启动名为
worker-node-1的工作节点虚拟机,配置与主节点相同。
4: 创建并启动第二个工作节点虚拟机
- 命令:
multipass launch --name worker-node-2 --cpus 1 --memory 1G --disk 5G - 说明: 创建并启动名为
worker-node-2的工作节点虚拟机,配置与前两个节点相同。
5: 获取主节点的IPv4地址
- 命令:
MASTER_IP=$(multipass info master | grep IPv4 | awk '{print $2}') - 说明: 从
multipass info master命令的输出中提取主节点的IPv4地址,并将其存储在MASTER_IP变量中。
6: 在 master 节点上安装并启动K3s服务
- 命令:
multipass exec master -- /bin/bash -c "curl -sfL https://get.k3s.io | sh - && sudo systemctl enable k3s && sudo systemctl start k3s" - 说明: 通过
multipass exec在主节点上执行命令,下载并安装K3s服务,并设置服务开机自启后启动。
7: 获取 K3s 服务的 token
- 命令:
TOKEN=$(multipass exec master -- sudo cat /var/lib/rancher/k3s/server/node-token) - 说明: 从主节点获取 K3s 服务的 token,以便后续在第一个工作节点上使用。
8: 在第一个工作节点上安装K3s服务
- 命令:
multipass exec worker-node-1 -- /bin/bash -c "curl -sfL https://get.k3s.io | K3S_URL=https://${MASTER_IP}:6443 K3S_TOKEN=$TOKEN sh -" - 说明: 在
worker-node-1上执行命令,使用主节点的IP地址和获取到的token安装K3s服务。
9: 在第二个工作节点上安装K3s服务
- 命令:
multipass exec worker-node-2 -- /bin/bash -c "curl -sfL https://get.k3s.io | K3S_URL=https://${MASTER_IP}:6443 K3S_TOKEN=$TOKEN sh -" - 说明: 在
worker-node-2上执行与第一个工作节点相同的命令,完成K3s服务的安装。
通过以上步骤,可以部署一个简单的K3s集群。
验证K3s集群是否成功搭建:
使用kubectl命令:
在主节点上,运行
kubectl get node。
测试k3s 集群
1.首先我们在master节点 创建一个 nginxdemo.yaml 文件
文件内容
# 指定API版本,这里是apps/v1,表示我们正在使用Apps API的v1版本
apiVersion: apps/v1
# 指定Kubernetes对象的类型,这里是Deployment,表示我们要创建一个部署
kind: Deployment
# 定义元数据,包括部署的名称
metadata:
name: nginxdemo
# 定义部署的规格
spec:
# 设置副本数量,这里设置为1,表示创建一个Nginx实例
replicas: 1
# 定义选择器,用于匹配模板中的标签,这里是匹配名称为nginxdemo的对象
selector:
matchLabels:
name: nginxdemo
# 定义Pod模板的元数据和规格
template:
metadata:
# 为Pod添加标签,这里是名称为nginxdemo
labels:
name: nginxdemo
spec:
# 定义容器规格
containers:
- name: nginxdemo
# 使用Nginx镜像
image: nginx
# 暴露容器的80端口
ports:
- containerPort: 80
然后再执行
kubectl apply -y nginxdemo.yaml
文件内容
# 指定API版本,这里是v1,表示我们正在使用Core API的v1版本
apiVersion: v1
# 指定Kubernetes对象的类型,这里是Service,表示我们要创建一个服务
kind: Service
# 定义元数据,包括服务的名称
metadata:
name: nginxsvc
# 定义服务的规格
spec:
# 设置服务类型为NodePort,表示服务将在集群的每个节点上公开端口,并通过NodePort映射到目标端口
type: NodePort
# 定义端口映射
ports:
- port: 82 # 服务端口,用于接收外部请求
protocol: TCP # 协议类型,这里是TCP
targetPort: 80 # 目标端口,这里是Nginx容器的80端口
name: http # 端口名称,方便管理和引用
nodePort: 30055 # NodePort,用于在集群的每个节点上公开服务
# 定义选择器,用于匹配Pod模板中的标签,这里是匹配名称为nginxdemo的对象
selector:
name: nginxdemo
继续执行
kubectl apply -t nginxsrv.yaml
可以看到,svc已经部署成功,并给出了CLUSTER-IP,10.43.0.1,我们可以用两种方式访问nginxdemo
- 在集群内用http://10.43.161.28:82/
- 在集群外用http://192.168.64.9:30055/、http://192.168.64.10:30055/、http://192.168.64.11:30055/
- 我们分别来访问一下
安装 kuboard
Kuboard 是一个用于 Kubernetes 集群的管理和监控工具
在本地执行
sudo docker run -d \ # 以守护进程模式运行 Docker 容器
--name=kuboard \ # 为容器指定名称为 kuboard
-p 80:80/tcp \ # 将容器的 80 端口映射到宿主机的 80 端口,用于 HTTP 访问
-p 10081:10081/tcp \ # 将容器的 10081 端口映射到宿主机的 10081 端口,用于Kuboard Agent通信
-e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \ # 设置环境变量,指定 Kuboard Agent 服务器的 TCP 端口为 10081
-v /root/kuboard-data:/data \ # 将宿主机上的 /root/kuboard-data 目录挂载到容器的 /data 目录,用于持久化数据
swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3 # 指定要拉取的镜像及其版本
然后浏览器访问 http://localhost/kuboard/cluster 按照提示添加 Kubernetes Cluster List
大功告成