本文为树莓派折腾日记
那个风扇和 oled 是可以一起安装的,风扇只需要 一个 3v 电源,任意一个地线,就可以
看博主后天入职的心情,心情如果好,再共享用到的所有软件😉
操作系统选择
centos
centos 目前只有 32 位的系统,且 oled 不知道怎么弄,对于一个用习惯了xx云的人来说,centos 还是莫名的亲切
- 没有找到在内核中开启 IIC 的办法
- etcd 在 arm32 架构下执行失败,官方也没有 arm 的二进制包
- 博主安装了 go 环境然后自行编译了一份 etcd 然后 ……
- 对于树莓派来说,你这心跳的资源消耗让我很担心啊
- etcd 在 arm64 位 cpu 上属于可用级别 arm 上处于
实现
级别,可能是能调好的,但我是不会闹了
- 博主安装了 go 环境然后自行编译了一份 etcd 然后 ……
- 所以最后博主还是选用了 centos 安装了 k3s(k8s 阵亡{{{(>_<)}}})
raspbian
好!
对于官方rasbian系统,检查boot目录下是否有kernel8.img如果没有就 rpi-update然后添加arm_64bit=1到config.txt,执行uname -a 你会看到内核从v7l(armhf)变v8(arm64)了
使用 raspbian 64位 安装 k8s 应该还是带的动的,歪果仁都试过了,因为博主之前配置没有配置对,然后 k3s 一直重启,导致 cpu 一直 200% 。博主吓得从 k8s 改 k3s 了
ubuntu64
这个系统的好处是 64 位系统,但是那个开机速度???感觉卡卡的,故放弃了
环境准备
这里先上 centos 的,其他系统的之后补上
不要往 arm 的 cpu 里头写 amd64 的系统,不要问我为啥知道,我已经弄坏一张内存卡了o( ̄┰ ̄*)ゞ
国内源
# 你就把 mirrorlist 注释掉,然后把 前面那一段换成 mirrors.huaweicloud.com/centos-altarch/7
baseurl=https://mirrors.huaweicloud.com/centos-altarch/7/os/$basearch/
......
扩容
fdisk /dev/mmcblk0
p
# 输入d再输入3(表示delete第三分区),再输入n,p新建一个主要分区,3则表示第三分区
d
3
xxxxx
# 重点,接下来输入 p 中打印的 /dev/mmcblk0p2 中 Start 的值不然系统会坏的(别问我为什么会知道的···)。
p # 可以看到扩容前后的结果
w # 输入w(保存并退出) #reboot 重启树莓派
resize2fs /dev/mmcblk0p3 #
df -h # 查看扩容后的正确容量
固定IP
在 /etc/sysconfig/network-scripts
中创建 ifcfg-ethxx,xx 通过 ifconfig 查看
# 使用 ifconfig 查看 #
HWADDR=xx:xx:xx:xx:xx:xx
TYPE=Ethernet
BOOTPROTO=static
# Server IP #
IPADDR=192.168.137.10
# Subnet #
PREFIX=24
# Set default gateway IP #
GATEWAY=192.168.137.1
# Set dns servers #
DNS1=192.168.137.1
DNS2=8.8.8.8
DNS3=114.114.114.114
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
# Disable ipv6 #
IPV6INIT=no
NAME=eth0
# 使用'uuidgen eth0' 生成 #
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
DEVICE=eth0
ONBOOT=yes
k8s 环境配置
当然,我们安装的是 k3s 此处可以免了
- 关闭selinux
sed -i "s/SELINUX\=.*/SELINUX=disabled/g" /etc/selinux/config
- 关闭防火墙
systemctl disable firewalld && systemctl stop firewalld
- 修改主机名
hostnamectl set-hostname Role_name
- 添加hosts解析
echo -e "192.168.137.10 kmaster10\n192.168.137.20 kworker20\n192.168.137.30 kworker30" >> /etc/hosts
- 设置k8s内核参数
cat << EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 vm.swappiness=0 EOF
modprobe br_netfilter echo "modprobe br_netfilter" >> /etc/rc.local
sysctl -p /etc/sysctl.d/k8s.conf
- 关闭系统swap
swapoff -a # 修改fstab文件,关闭swap的自动挂载。
- 修改防火墙策略
/sbin/iptables -P FORWARD ACCEPT echo "sleep 60 && /sbin/iptables -P FORWARD ACCEPT" >> /etc/rc.local
- 安装依赖包
yum install -y epel-release yum install -y yum-utils device-mapper-persistent-data lvm2 net-tools conntrack-tools wget
- 时间同步
yum -y install ntpdate /usr/sbin/ntpdate -u ntpserver1: ntp1.aliyun.com /usr/sbin/ntpdate -u ntp1.aliyun.com
安装 docker
# 不要按普通的 centos 的方式来安装,好像 centos raspberry pi 中可以直接安装
yum install docker
k3s 安装
博主试了 1.7x 结果暴毙,想想,版本太新了,换回了 1.0 版本。你看 1.0 版本之前有那么多 rc1 rc2 rc3 rc4… 靠谱了
- 下载images
https://github.com/rancher/k3s/releases/download/v1.0.0/k3s-airgap-images-arm.tar - 使用 docker 导入 k3s 镜像,这样就不会出现拉不下镜像k8s.gcr.io/pause:xx 了
docker load -i k3s-airgap-images-arm.tar
- 使用离线安装包
mkdir -p /var/lib/rancher/k3s/agent/images cp k3s-airgap-images-arm.tar /var/lib/rancher/k3s/agent/images
- 跳过下载,使用 docker 做为 k3s 的容器,不安装 traefik(博主怕卡)
export INSTALL_K3S_SKIP_DOWNLOAD=true
export INSTALL_K3S_EXEC="--docker --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666 --no-deploy traefik"
- 下载下载二进制 k3s,将 k3s-armhf 改为 k3s 放在
/usr/local/bin
中
https://github.com/rancher/k3s/releases/download/v1.0.0/k3s-armhf - 修改 docker 的 cgroup,kubelet文件驱动默认cgroupfs, 而我们安装的docker使用的文件驱动是systemd, 造成不一致, 导致镜像无法启动。
# 修改docker.service vi /lib/systemd/system/docker.service
# 找到 --exec-opt native.cgroupdriver=systemd \ # 修改为: --exec-opt native.cgroupdriver=cgroupfs \
# 重启 docker systemctl daemon-reload systemctl restart docker
- 下载 k3s 安装脚本
https://raw.githubusercontent.com/rancher/k3s/release/v1.0/install.sh- master 端
sh install.sh
- worker 端添加 K3S_TOKEN 这样 worker 安装的是 agent
# K3S_TOKEN去master的/var/lib/rancher/k3s/server/node-token 找. export K3S_URL=https://myserver:6443 export K3S_TOKEN=XXX
sh install.sh
- master 端
- 最后,
kubectl get nodes
(NotReady 是因为我关机啦啊)