树莓派集群安装K3S记录

去年由于工作关系一直没有编写学习记录.最近正在使用K8S,正好利用以前的树莓派来搭建一个学习环境 并记录自己的学习成果.

一.硬件环境准备

还是采用原有四台树莓派3来做为硬件设备.

二.操作系统安装

利用flash刷新HypriotOS至最新版本(1.12.3) 下载地址
刷新教程可以参考前期的文章:树莓派3 HypriotOS安装
这次配置了一个static.yml文件

#cloud-config
# vim: syntax=yaml
#

# Set your hostname here, the manage_etc_hosts will update the hosts file entries as well
hostname: kmaster
manage_etc_hosts: true
# don't write debian.org into apt mirrors
apt_preserve_sources_list: true

# You could modify this for your own user information
users:
  - name: sunsl
    gecos: "Hypriot Pirate"
    sudo: ALL=(ALL) NOPASSWD:ALL
    shell: /bin/bash
    groups: users,docker,video
    plain_text_passwd: admin
    lock_passwd: false
    ssh_pwauth: true
    chpasswd: { expire: false }

package_upgrade: false

# Static IP address
write_files:
  - content: |
      persistent
      # Generate Stable Private IPv6 Addresses instead of hardware based ones
      slaac private
      # static IP configuration:
      interface eth0
      static ip_address=192.168.31.50/24
      # static ip6_address=fd51:42f8:caae:d92e::ff/64
      static routers=192.168.31.1
      static domain_name_servers=8.8.8.8
    path: /etc/dhcpcd.conf
# These commands will be ran once on first boot only
runcmd:
  # Pickup the hostname changes
  - 'systemctl restart avahi-daemon'

  # Activate WiFi interface
#  - 'ifup wlan0'

运行flash进行SD卡的格式化安装

flash -u static.yml hypriotos-rpi-v1.12.3.img

这里存在一个问题就是设置静态地址并未产生效果,由于这次试验重点不在这里,所以没有去深入查找问题.用户名和密码已正常更新.后期有时间再找问题吧.

刷新结束后记得对系统进行更新升级

sudo apt update && sudo apt upgrade -y

如果更新时出现无法更新时可以追加google的dns服务器,我这边出现无法更新时用这种方法就可以更新了.

$ sudo nano /etc/resolvconf/resolv.conf.d/base
#增加两个nameserver 
nameserver 8.8.8.8
nameserver 8.8.4.4

重启设置就可以了.
升级后Docker会从19.03.12升级至20.10.3

三.系统初始化配置

这一步主要是把所有的主机统一命名及写hosts文件.

  1. 修改主机名
    在这里记录下当时遇到的坑-如何修改hostname.很多文章都是说直接修改/etc/hostname,但对于最新的Raspbian或者说HypriotOS来说直接修改后重启是无效的.也尝试过修改/boot/user-data,这个应该是在第一次启动时有效(未做试验).正常的处理办法是修改/etc/cloud/cloud.cfg文件
$ sudo nano /etc/cloud/cloud.cfg

preserve_hostname: false
修改
preserve_hostname: true

执行命令 hostnamectl set-hostname 主机名

hostnamectl set-hostname kmaster

重启后即可完成主机名的修改.

  1. 配置hosts文件
    这个也不是直接修改/etc/hosts文件,而是需要修改/etc/cloud/templates/hosts.debian.tmpl文件,由于我准备利用4台树莓派做集群,1台mater,3台node,所以我在文件尾部追加了如下信息:
192.168.31.50 kmaster
192.168.31.51 knode1
192.168.31.52 knode2
192.168.31.53 knode3

四.安装K3S

这里要隆重介绍下https://www.rancher.cn/ 这个网址,利用他们的K3S文档可以快速搭建起所需的K3S环境.特别是针对国内用户,如果你是用"curl -sfL https://get.k3s.io | sh -"来进行安装 的话,我就呵呵了.
正常的安装姿势应该是:

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

下载安装速度还是很让人满意的,很快就完成了主节点的安装.
追加node节点需要知道主节点下的node_token:

$ sudo cat /var/lib/rancher/k3s/server/node-token

复制显示出来的token至命令中,替换mynodetoken.还要将myserver:6443改为自己定义的IP地址,我这里的master节点ip为192.168.31.50.

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://192.168.31.50:6443 K3S_TOKEN=mynodetoken sh -

在剩下的三台树莓派分别运行以上命令.需要注意的是,这时立即返回master节点利用"kubectl get nodes"进行查看是得不到结果的,要等一会才行.用"kubectl get pods --all-namespaces"查看pod更新没有可能:),主要是后续下载问题吧.

时间长短要看网络情况,这个安装过程我这边持续了两个多小时,所以大家最好是晚上装,早上看结果.省得想我一样一直盯到两三点了还在查找为什么我的安装不成功.

至此4台树莓派的K3S基础环境搭建完毕!


你可能感兴趣的:(树莓派集群安装K3S记录)