树莓派4安装k3s-阿里云开发者社区

 知识中心     |      2020-05-05 00:00:00

[环境]

树莓派4,4GB版本。单节点的k8s还是要多一些内存。
系统ubuntu20.04,arm64版本
docker 19.03
k3s 1.17.4+k3s1

[步骤]

安装ubuntu20.04

之前的版本存在不能完全利用3G以上内存的问题,在ubuntu20.04上都不存在,放心的装。在官网下载arm64版本,烧录刀tf卡带,等待开机 https://ubuntu.com/download/raspberry-pi

ubuntu镜像源

用vim或者sed在 /etc/apt/sources.list 中修改镜像源为阿里云,20.04的代号就是focal
https://mirrors.aliyun.com/ubuntu-ports/

安装桌面

本想着支持国产,用个优麒麟的,奈何arm64的beta版本不给力,还是原生的好,挑一个xubuntu

sudo apt-get update
sudo apt-get install xubuntu-desktop

ubuntu 的网络配置从18以后就改成了netplan,这里用的wifi,配置如下,把自己wifi名和密码填入即可wifi.png

安装docker19.03

k3s默认使用的containerd,对这玩意不熟悉,还是上docker。ubuntu20的docker-ce镜像源还没出,先用18的顶着。在/etc/apt/sources.list中加上

deb https://mirrors.aliyun.com/docker-ce/linux/ubuntu/bionic stable
sudo apt-get update
sudo apt-cache madison docker-ce
apt install docker-ce

修改docker配置,新建 /etc/docker/daemon.json

{
    "log-driver": "json-file", 
    "log-opts": {"max-size": "100m","max-file": "5"},
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}

由于arm64版的ubuntu20.04上默认没有开启cgroup memory support,在启动k3s的时候会启动失败,需要在 /boot/firmware/cmdline.txt 中最后添加显式开启

cgroup_memory=1 cgroup_enabel=memory

然后reboot,docker info就正常了
docker.PNG

离线安装k3s

鉴于国内github访问的速度,用离线方式安装k3s更合适。访问 https://github.com/rancher/k3s/releases/tag/v1.17.4+k3s1 并参考离线安装文档 https://rancher.com/docs/k3s/latest/en/installation/airgap/

下载 k3s-airgap-images-arm64.tar 和 k3s-arm64 文件,远程登陆树莓派4,并通过lszrz的rz传输这两个文件到 /home/ubuntu 目录下,导入docker images

sudo cp k3s-arm64 /usr/local/bin/k3s
sudo chmod +x /usr/local/bin/k3s
sudo mkdir -p /var/lib/rancher/k3s/agent/images/
sudo cp ./k3s-airgap-images-arm64.tar /var/lib/rancher/k3s/agent/images/
sudo docker load -i /var/lib/rancher/k3s/agent/images/k3s-airgap-images-arm64.tar

ubuntu中自带firefox,访问github获取和保存安装脚本https://github.com/rancher/k3s/blob/v1.17.4%2Bk3s1/install.sh
保存至ubuntu任意目录,这边还是用/home/ubuntu目录,指明离线安装,并将runtime改成docker

chmod +x install.sh
INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC="--docker" ./install.sh

然后这个精简版的k8s就可以使用了,service k3s status

server中自带了client和kubectl,可以直接用,单节点的k3s就安装好了。
kubectl.PNG

部署第一个应用

su -
docker pull nextcloud
kubectl create namespace nextcloud
kubectl create deployment nextcloud --image=nextcloud -n nextcloud
kubectl expose deployment nextcloud -n nextcloud --port=80 --name=nextcloud