
捡垃圾好多年,攒了好多个机顶盒,都可以运行armbian系统,但每个盒子的磁盘都只有8G,用来跑docker服务没几个就磁盘满了,老是要我来规划哪些个服务跑在哪个机顶盒上,还要在路由器上设置端口转发,十分得不优雅,急需部署一套集群来自动编排这些docker应用,并且便宜的机顶盒如Q5仅需50元一个,以后资源不够了加机也很方便,还能挂载局域网中的共享存储给集群使用,非常的现代化
hostname | IP | 型号 | CPU内存配置 | 磁盘 | Role |
---|---|---|---|---|---|
k3s-master-octupos | 192.168.123.3 | 章鱼星球 | 8C2G | 8G | Master |
k3s-worker-n1 | 192.168.123.4 | 斐讯N1 | 4C2G | 8G | Worker |
1.系统准备
- 下载章鱼星球和斐讯N1的armbian镜像ophub/amlogic-s9xxx-armbian
- 使用balenaEtcher写入U盘
- 机顶盒插入U盘,上电开机,如果机顶盒中已经是armbian或openwrt系统会默认从U盘启动,如果是安卓系统,可以安装Reboot to liberelec(需要root权限)从U盘启动
- 执行命令刷入armbian系统
armbian-install
,刷写完输入命令poweroff
关机,拔出U盘重新上电
2.部署k3s Master节点
# 安装k3s的master节点
curl -sfL https://get.k3s.io | sh -
# 如果安装失败可以使用ranher的镜像源来安装
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
# 安装完成后查看集群状态
kubectl get nodes
# 查看token,在下一步创建worker节点时需要认证
cat /var/lib/rancher/k3s/server/node-token
3.部署worker节点
- 需要用到token和Master节点的ip,在geekhour的教程中部署了多个worker节点,所以将token和ip写入到了环境变量中,利用for循环给多个worker进行部署,我暂时只有一个worker,直接输入token和ip也可以
export MASTER_IP=192.168.123.3
export TOKEN=部署Master节点时获取的token
bash -c "curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=\"https://$MASTER_IP:6443\" K3S_TOKEN=\"$TOKEN\" sh -"
此时再去Master节点上执行kubectl get node
可以看到集群一主一从两个节点已经ready
但是在worker节点上执行kubectl get node
出现了报错
4.解决worker节点无法执行kubectl命令
询问chatgpt,给出的解决办法如下:
- 确认worker节点的kubectl配置
kubectl config view
- 从
kubectl config view
的输出来看,worker节点的kubectl配置为空,需要从master节点获取一份正确的配置,在 K3s 集群中,默认的 Kubeconfig 文件位于 /etc/rancher/k3s/k3s.yaml。我需要将这个文件复制到你的用户目录中,并设置 KUBECONFIG 环境变量指向它。 - 复制k3s.yaml到worker节点
mkdir -p ~/.kube scp root@192.168.123.3:/etc/rancher/k3s/k3s.yaml ~/.kube/config
- 修改文件权限
确保kubectl可以访问这个文件,设置正确的文件权限:chmod 600 ~/.kube/config
- 设置KUBECONFIG环境变量
确保你的KUBECONFIG环境变量指向这个配置文件。你可以在终端中临时设置它,或者将其添加到你的shell配置文件(例如.bashrc或.zshrc)中:
如果你希望这个设置在每次登录时都生效,可以将上面的命令添加到你的shell配置文件中。例如,编辑.bashrc文件:export KUBECONFIG=$HOME/.kube/config
echo 'export KUBECONFIG=$HOME/.kube/config' >> ~/.bashrc source ~/.bashrc
- 验证配置
现在你可以验证kubectl是否已经正确配置并能够连接到你的K3s集群。
5.安装Helm
Helm安装在任何可以访问 Kubernetes 集群的机器上,不一定要安装在Master节点上
执行命令curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
6.安装cert-manager
# 添加Helm Chart仓库
helm repo add "stable" "https://charts.helm.sh/stable" --force-update
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
# 定义一个Kubernetes名称空间,Chart创建的资源应该安装在这个名称空间中:cattle-system
kubectl create namespace cattle-system
# 安装cert-manager
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.5/cert-manager.crds.yaml
# Add the Jetstack Helm repository
helm repo add jetstack https://charts.jetstack.io
# Update your local Helm chart repository cache
helm repo update
# Install the cert-manager Helm chart
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace
master点也报了这个连接超时的错,再把步骤4中chatgpt给出的解决办法在master节点也操作一遍
mkdir -p $HOME/.kube
sudo cp /etc/rancher/k3s/k3s.yaml $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=$HOME/.kube/config
echo 'export KUBECONFIG=$HOME/.kube/config' >> ~/.bashrc
source ~/.bashrc
重新安装cert-manager
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace
又报了个等待超时的错,但是查看cert-manager命名空间下的资源,都挺健康,可能是由于机顶盒性能太弱起来的太慢导致超时,所以我直接进行下一步
重装完k3s 1.28版本后又试了一遍,应该确实是因为pod启动得慢了
7.安装Rancher
helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=rancher.tianfeng.com
蚌埠住了😰竟然要版本低于1.29.0
8.卸载k3s,重装低版本
按照官方文档来操作
可以先停止k3s服务再进行卸载
sudo systemctl stop k3s
sudo systemctl disable k3s
重新安装低于1.29的k3s,这里我使用最后一个1.28版本
# 重新安装master节点的k3s
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.28.9+k3s1 sh -
worker节点:
export MASTER_IP=192.168.123.3
export TOKEN=部署Master节点时获取的token
bash -c "curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.28.9+k3s1 K3S_URL=\"https://$MASTER_IP:6443\" K3S_TOKEN=\"$TOKEN\" sh -"
9使用portainer
机顶盒性能太弱,部署rancher一直无法正常启动,换成轻量化的portainer来管理
阅读量
loading...