去年由于工作关系一直没有编写学习记录.最近正在使用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文件.
- 修改主机名
在这里记录下当时遇到的坑-如何修改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
重启后即可完成主机名的修改.
- 配置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基础环境搭建完毕!