树莓派安装k3s

作者 : 开心源码 本文共2990个字,预计阅读时间需要8分钟 发布时间: 2022-05-13 共207人阅读

简介

看过k3s架构的同学应该会知道怎样实现k3s的高可用,在1.0.0之前k3s是原生不支持高可用的,假如你要做到高可用,那么就只能自己搭建一个高可用的外部数据库,而后让k3s连接这个外部的高可用数据库来实现k3s的高可用,但是k3s在1.0.0之后实现了自己的高可用,他的高可用是使用自己内部的DQLite来实现的,但是这种高可用方式还是处于测试阶段,我尝试了很屡次还是有少量bug的,所以为了简单可控,我就不使用高可用的方法在树莓派上安装k3s了

架构

我一共有4个树莓派,所以一个是master其余都是worker节点

  • 10.10.10.10

  • 10.10.10.13
  • 10.10.10.11
  • 10.10.10.12

修改主机名

首先要修改主机名

hostnamectl set-hostname rpi-k8s-master1.bboysoul.com

其余节点一样我其余节点的主机名是rpi-k8s-slave1.bboysoul.com

禁用ipv6

vim /boot/cmdline.txt

ipv6.disable=1

关闭swap
vim /etc/rc.local

加上

dphys-swapfile swapoff

把所有节点FORWARD链设置成accept

iptables -P FORWARD ACCEPT

这步十分的重要,假如不做会导致worker 节点的pods 访问不了master 节点的apiserver

安装k3s

之后就是安装k3s

下载k3s

wget rancher/k3s/releases/download/v1.0.0/k3s-armhf

移动并且重命名

mv k3s-armhf /usr/local/bin/k3s && chmod +x /usr/local/bin/k3s

检查系统能否符合要求

k3s check-config

假如出现iptables版本不符合,请先忽略,我们继续

上面两步四个节点都要操作

之后再master节点启动

nohup k3s server --kube-apiserver-arg service-node-port-range=1-30000 --docker &

为了方便管理我使用的是docker作为容器管理的工具,默认k3s使用的是containerd,还有设置了apiserver的端口范围

master节点启动完成没问题之后启动worker节点上的k3s
首先找到NODE_TOKEN,NODE_TOKEN存储在master节点上的

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

这个文件下

之后启动

nohup k3s agent --server https://k3s.bboysoul.com:6443 --token K1089f376f5bc64458d8b19f42bdcaf7035547cce846406026994d1ed8b4fa68d16::server:02d0845746cdb75b9ee3e9a8b8146595 --docker &

注意肯定要给你的master节点设置一个dns解析,我的是k3s.bboysoul.com这个域名

当主从节点一律启动完成之后你执行k3s kubectl get pods -A会是下面这个状态

?  ~ k3s kubectl get pods -ANAMESPACE     NAME                                      READY   STATUS      RESTARTS   AGEkube-system   helm-install-traefik-lfdv8                0/1     Completed   0          16hkube-system   svclb-traefik-wsxrj                       3/3     Running     0          16hkube-system   svclb-traefik-cttnn                       3/3     Running     0          16hkube-system   svclb-traefik-nn7kz                       3/3     Running     0          16hkube-system   traefik-65bccdc4bd-8w245                  1/1     Running     0          16hkube-system   coredns-d798c9dd-2vnr2                    1/1     Running     1          16hkube-system   local-path-provisioner-58fb86bdfd-6664n   1/1     Running     1          16hkube-system   metrics-server-6d684c7b5-2vbc4            1/1     Running     0          16hkube-system   svclb-traefik-vrlnz                       3/3     Running     0          16h

执行k3s kubectl get nodes会是下面这个状态

?  ~ k3s kubectl get nodes   NAME                          STATUS   ROLES    AGE   VERSIONrpi-k8s-slave3.bboysoul.com   Ready    <none>   16h   v1.16.3-k3s.2rpi-k8s-slave1.bboysoul.com   Ready    <none>   16h   v1.16.3-k3s.2rpi-k8s-slave2.bboysoul.com   Ready    <none>   16h   v1.16.3-k3s.2rpi-k8s-master.bboysoul.com   Ready    master   17h   v1.16.3-k3s.2

确定没问题了之后我们优化下k3s自带的traefik

vim /var/lib/rancher/k3s/server/manifests/traefik.yaml

apiVersion: helm.cattle.io/v1kind: HelmChartmetadata:  name: traefik  namespace: kube-systemspec:  chart: https://%{KUBERNETES_API}%/static/charts/traefik-1.77.1.tgz  set:    rbac.enabled: "true"    ssl.enabled: "true"    serviceType: "NodePort"    service.nodePorts.http: "80"    service.nodePorts.https: "443"    dashboard.enabled: "true"    dashboard.domain: "traefik.bboysoul.com"    metrics.prometheus.enabled: "true"    kubernetes.ingressEndpoint.useDefaultPublishedService: "true"

我加了就下面几句

    serviceType: "NodePort"    service.nodePorts.http: "80"    service.nodePorts.https: "443"    dashboard.enabled: "true"    dashboard.domain: "traefik.bboysoul.com"

一个是使用NodePort这个service 第二个是设置nodeport的端口,我就直接80和443了,最后是把dashboard打开而后设置访问dashboard的域名是traefik.bboysoul.com

接着执行下这个文件

k3s kubectl apply -f /var/lib/rancher/k3s/server/manifests/traefik.yaml

欢迎关注Bboysoul的博客www.bboy.app
Have Fun

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 树莓派安装k3s

发表回复