raspberry4B搭建集群实战

集群的规划

如今的时代显然已经跨域20世纪的互联网时代跨入了物联网大数据的时代。为了能够紧跟时代的步伐个人决定学习大数据、云原生等新技术。说到这些技术都必须基于Paas 平台的支撑。个人之前使用过阿里云、华为云等需要支付一定的资金。为了节省开支和能够更深层次的了解分部署计算应用的整体结构,所以我决定使用raspberry来模拟计算机集群,搭建一个属于自己的微集群。

基于上面的考虑本次集群的规划从以下2个方面来考虑

1.经济方面

2.实用方面

集群物理图

搭建集群

master主控安装

系统的烧录

安装docker

设置apt-repostory

1
2


docker-ce=5:20.10.7~3-0~debian-bullseye

docker-ce-cli=5:20.10.7~3-0~debian-bullseye

containerd.io=1.4.6-1

1
apt-get install -y docker-ce=5:20.10.7~3-0~debian-bullseye docker-ce-cli=5:20.10.7~3-0~debian-bullseye containerd.io=1.4.6-1

系统的一些基础配置

kubectl、kubelet、kubeadm 安装

kuberentes 引导式安装集群

初始化主节点

1
2
3
4
5
6
7
8
9
10
11
#所有机器添加master域名映射,以下需要修改为自己的
echo "192.168.1.110 cluster-endpoint" >> /etc/hosts

#主节点初始化
kubeadm init \
--apiserver-advertise-address=192.168.1.110 \
--control-plane-endpoint=cluster-endpoint \
--image-repository k8simage \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=172.31.0.0/16

[ERROR SystemVerification]: missing required cgroups: memory 问题

这个问题一般是由树莓派的兼容性相关配置错误引起的 Cgroup 问题。

解决方案

1
2
3
4
5
$ vi /boot/cmdline.txt

net.ifnames=0 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline cgroup_enable=memory cgroup_memory=1 rootwait fixrtc

$ reboot

[ERROR Swap]: running with swap on is not supported. Please disable swap

Swap 分区在开启状态下无法进行 kubeadm init

解决方案

1
2
$ swapoff -a
$ free -m

节点安装

docker

  1. set apt-get repository
1
2
3
4
5
6
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
  1. add docker official GPG key

    1
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  2. 设置apt稳定版本库

    1
    2
    3
    4
    5
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    sudo apt-get update
  3. install docker-ce docker-ce-cli containerd.io

    1
    apt-get install -y docker-ce=5:20.10.7~3-0~debian-bullseye docker-ce-cli=5:20.10.7~3-0~debian-bullseye containerd.io=1.4.6-1
  4. 设置加速私服、docker 开机启动

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "log-opts": {
    "max-size": "100m"
    },
    "storage-driver": "overlay2"
    }
    EOF
    systemctl enable docker --now
    sudo systemctl daemon-reload
    sudo systemctl restart docker

系统基础配置

1
2
3
4
5
6
7
8
9
10
11
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

echo "192.168.1.110 cluster-endpoint" >> /etc/hosts

kubelet、kubeadm 安装

1
2
3
apt-get install -y kubectl=1.20.9-00 kubelet=1.20.9-00 kubeadm=1.20.9-00

systemctl enable kubelet --now

kubeadm init

1
2
3
swapoff -a
echo "cgroup_enable=memory cgroup_memory=1" >> /boot/cmdline.txt
reboot

join master

vim json格式化工具

capture_20211212191335313