資安

樹莓派4安裝k3s

[環境]

樹莓派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

Leave a Reply

Your email address will not be published. Required fields are marked *