树莓派搭建K3s和Dashboard

很久很久以前

浅记录一下k3s的搭建过程。

因为我的电脑太过于缓慢,再加上还是机械硬盘,跑虚拟机十分不称心,于是乎采购了三台树莓派准备搭建一个k8集群,因为k8s采用etcd作为存储,其为写入密集型数据库受限于树莓派的sd卡读写速度,故而采取专为边缘计算设计的轻便版k3s进行搭建。

搭建方式极其简便。

本文应持续更新,进行解释说明。

附上k3s的官方地址:点击进入

材料准备:三张树莓派在相同局域网内。

安装k3s主节点

进入官网就可以看到很醒目的安装脚本命令。

树莓派默认没有启用cgroups,所以需要去修改一下启动文件,路径为/boot/firmware/cmdline.txt,在最后端添加如下cgroup_memory=1 cgroup_enable=memory语句然后reboot

请确认每个主机拥有不同的主机名,如无请参考官方文档使用K3S_NODE_NAME环境变量传入脚本执行。

很贴心的文档大部分进行了中文汉化,打开中文之后会显示安装脚本的国内镜像,满分好评。

1
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

直接运行这条命令就可以安装所必需的内容了,

运行此安装后:

  • K3s 服务将被配置为在节点重启后或进程崩溃或被杀死时自动重启。
  • 将安装其他实用程序,包括 kubectlcrictlctrk3s-killall.shk3s-uninstall.sh
  • kubeconfig 文件将写入到 /etc/rancher/k3s/k3s.yaml,由 K3s 安装的 kubectl 将自动使用该文件。

安装从节点

使用一条简单的命令就可以安装完成从节点了。

1
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -

需要将K3S_URLK3S_TOKEN分别修改为自己的主节点地址(注意必须使用https)和主节点的token,token的地址如下/var/lib/rancher/k3s/server/node-token

至此我们的集群就搭建完成,使用如下命令get一下状态。

1
2
3
4
5
$ sudo kubectl get nodes
NAME STATUS ROLES AGE VERSION
rasp1 Ready control-plane,master 3d11h v1.31.3+k3s1
rasp2 Ready <none> 9h v1.31.3+k3s1
rasp3 Ready <none> 9h v1.31.3+k3s1

可以看到主从节点都已经进入了Ready的状态。

下一步我们安装Helm。

安装Helm3的步骤

Helm的安装过程会读取家目录下的配置文件,所以我们需要提前复制过来并且赋予权限。

1
2
3
mkdir $HOME/.kube
sudo cp /etc/rancher/k3s/k3s.yaml $HOME/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config

我们还可以使用如下命令检查系统空间下的k3s组件状态。

1
kubectl get pods -n kube-system

好吧这是纯题外话。

接着下载并且允许Helm的安装脚本。

1
2
3
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod u+x get_helm.sh
./get_helm.sh

这样就安装完成了。

接下来就可以安装dashboard了。

Dashboad的安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
# 先添加仓库
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
# 进行安装

#运行结果如下
$ helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
Release "kubernetes-dashboard" does not exist. Installing it now.
NAME: kubernetes-dashboard
LAST DEPLOYED: Fri Dec 20 14:09:54 2024
NAMESPACE: kubernetes-dashboard
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
*************************************************************************************************
*** PLEASE BE PATIENT: Kubernetes Dashboard may need a few minutes to get up and become ready ***
*************************************************************************************************

Congratulations! You have just installed Kubernetes Dashboard in your cluster.

To access Dashboard run:
kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-proxy 8443:443

NOTE: In case port-forward command does not work, make sure that kong service name is correct.
Check the services in Kubernetes Dashboard namespace using:
kubectl -n kubernetes-dashboard get svc

Dashboard will be available at:
https://localhost:8443

运行如下代码进行外部访问:

1
sudo kubectl -n kubernetes-dashboard port-forward --address 0.0.0.0 svc/kubernetes-dashboard-kong-proxy 8443:443

接着创建serviceaccount

1
2
3
4
5
6
7
8
9
10
sudo kubectl get serviceaccount -n kube-system
# 这条命令用来查看serviceaccount

sudo kubectl create serviceaccount dashboard-admin -n kube-system
# 这条创建了账号,接下来给账号赋权

sudo kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

#使用如下命令获取token
sudo kubectl -n kube-system create token dashboard-admin

然后我们继续运行代理的命令尝试生成的token去登录。


树莓派搭建K3s和Dashboard
https://steammilk.com/2024/12/20/2024-all/build-K3s/
作者
蒸奶泡
发布于
2024年12月20日
更新于
2025年1月8日
许可协议