Skip to content

树莓派初体验(2)——安装k8s

安装容器运行时

  • 如果使用 Docker,参考下面的 “安装Docker”
  • 如果使用 containerd,参考下面的 “安装containerd”

安装Docker

参考 Install Docker Engine on Ubuntu.

修改 cgroup driver 为 systemd,可以参考 Changing the cgroup driver to systemd on Red Hat Enterprise Linux.

不修改 cgroup driver 也没事,只不顾在安装 k8s 的时候会有一个 warning,不影响。

安装containerd

containerd 官方不提供 ARM64 编译版本,因此需要自己编译,参考 Build containerd from source.

首先安装 Golang,参考 Download and install.

然后安装相关的依赖工具:

shell
wget -c https://github.com/protocolbuffers/protobuf/releases/download/v3.17.0/protoc-3.17.0-linux-aarch_64.zip
sudo unzip protoc-3.17.0-linux-aarch_64.zip -d /usr/local

sudo apt install btrfs-progs libbtrfs-dev

sudo apt install make gcc pkg-config libseccomp-dev

手动 build runc:

shell
git clone https://github.com/opencontainers/runc
cd runc
make
sudo make install

手动 build containerd 并启动:

shell
git clone https://github.com/containerd/containerd
cd containerd
make
sudo make install

sudo cp containerd.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable containerd.service
sudo systemctl start containerd.service

安装k8s

首先安装 kubeadm、kubelet、kubectl,参考 安装 kubeadm

然后初始化集群,参考 使用 kubeadm 创建集群

shell
sudo su
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository=registry.aliyuncs.com/google_containers

如果有如下报错:

error execution phase preflight: [preflight] Some fatal errors occurred:
	[ERROR SystemVerification]: missing required cgroups: memory

可以参考 Raspberry Pi 4 Ubuntu 19.10 cannot enable cgroup memory at boostrap,修改 /boot/firmware/cmdline.txt 添加 cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 即可。

另外由于 google registry 无法访问,这里使用阿里云的 registry 地址。在此有坑,可能报错如下:

[ERROR ImagePull]: failed to pull image registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0: output: Error response from daemon: pull access denied for registry.aliyuncs.com/google_containers/coredns/coredns, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

如果出现该错误,那么需要手动 pull 一下 coredns 的镜像:

shell
docker pull coredns/coredns:1.8.0
docker tag coredns/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0

集群初始化后:

shell
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

然后部署网络插件,参考 Installing Addons

因为只有一个节点,可以执行如下命令允许 master 节点调度 pod:

shell
kubectl taint nodes --all node-role.kubernetes.io/master-

安装Helm

参考 安装Helm