树莓派上的 K8S 集群挂了,怎么办? 原 荐

树莓派上的 K8S 集群挂了,怎么办?
                                                原
                                                    荐

作者 |Lukasz Raczylo

编译|云原生计算编辑部

昨晚在我的树莓派上进行更新的时候,所有节点突然停止检测网络接口,并且无法恢复!!!

那时我有两个选择,但都torrent用什么软件可以打开很费时:

方法1:提早起床,并按照我自己之前的文章手动重建ansible实战,也许还rTorrent会发现ansible面试题一些改进的余地。我已经亲身试验了很多prometheus什么次:这种方法很容易出错,主要是输入错误或跳过一个或两个kubernetes怎么读步骤,然后在接下来的半个小时试图找出到底发生了什么事,再抹去一切并从头开始一遍又一遍。

方法2:及早醒悟并从头开始编码,这样可以grafana插件让我的最终解决方案实现执行一次并永久使用,使整个集群的重建和生产尽可能容易地进行复制。当然,grafana模板这将意味着更多的停机时间。但是,它的好处将是长期的,这使我不必担心集群本身,并最终将其视为一个稳定的解决方案,可以向其迁移整个本地基础架构。

自动化传奇开始

在开始任何工作之前,我都非常专注于基础知识,并提出了在整个过程中遵循的一些traefik原则。这样创建的环境各部分之间的代码之间kubernetes中文文档逻辑上有很多分隔,因此亲爱的读者,您可以更容易地更改代码或注释掉整个文件以禁用此处或此处的少量功能。

原则1:在树莓派上设置 Kubernetes 集群可以分为三个部分:设置grafana es存储卡,在系统级别上进行节点配置,最后扩展 Kubernetes 资源。

原则2:在我的旧ansible命令版 Intetraefik nginxl NUC 上运行着一个NFS服grafana教程务,该服务已连接到 DROBO 存储。很适合ansible自动化运维将它用作所有节点的永久共享存储。

原则3:树莓派的集群在我的家庭网络中grafana模板的 VLAN 中运行,因此保护它不是我的优先事项,所有服务以及节点都应易于访问,kubernetes翻译而无需处理 credentials。

要重现结果(或使其发挥作用),您将需要:

  • Mac:当我有空安装Linux VM时,我可能会在脚本中添加平台监测部分

  • Artorrent linuxnsible:我使用的版本为2.10.6

  • Terraform:用0.13.4编写,也适用于0.14.8

  • Make:任意版本应该ansible模块均可使用

树莓派集群:步骤1

树莓派使用存储卡作为其硬盘驱动器。这可能不是最佳选择,并且绝对ansible模块不会给您最大的读写操作速度,但对于业余爱好项目而言,rtorrent 限速应该足够了。

步骤1需要注意什么?

  • 格式化存储卡

  • 将存储卡分为两个分区-1GB +其余存储卡

  • 将Alpine Linux镜像复制到存储卡上

  • 创建系统覆盖

系统覆盖负责设置 Promisc 模式下的 eth0(对于MetalLB来说是必需的),grafana读音并配置 SSH 免密登陆。

重要提示:检查001-prepare-card.sh的来源kubernetes pdf请确保刚才插入的存储卡实际上是/dev/disk5,否则可能会丢失数据。

结果:准备6张存torrent是什么格式的文件储卡大约需要一分钟。

树莓派集群:步骤2

这一步才是真正有趣的开始。我grafana es猜你已经把存储卡插入到你的树莓派,连接了torrent文件网盘怎么打开所有的电缆(网络和电源),并允许它们启动?你现在需要Ansible获取你torrentkitty怎么打开的设备的 IP 地址——你可以通过连接屏幕到每一个设备并执行ifconfig etorrentialth0或者登录到你的路由器并检查来实现。用合适的值调整pi-hosts.txt

[masters]pi0ansible_host=192.168.50.132#Pi0
[workers]pi1 ansible_host=192.168.50.135 # Pi1pi3 ansible_host=192.168.50.60  # Pi3pi4 ansible_host=192.168.50.36  # Pi4pi2 ansible_host=192.168.50.85  # Pi2pi5 ansible_host=torrent用什么软件可以打开192.168.50.230 # Pi5

重要提示:今后很少有事情需要pi0主机名。

将以下内容添加到~/.ssh/config,强制将所有pi *主机作为根连接。

Host pi?  User root  Hostname %h.local

因为我们已经准备好了微机,所以我们需要为 Ansiblgrafanae 运行做好准备。使用001-prepare- anable .sgrafana插件h脚本可以轻松完成此操作,ansible使用该脚本将将 ssh 到 pi-hosts 文件中指定的每个服务器,为NTP配置 chrony 并安装 Python 解释器。

重要提示:您可能需要检查rpi.yaml文件并根据需要调整vars部分。

成功执行此步骤后,您可以执行ansible-playbook rpi.yaml -f 10来运行Ansible,该运行将按以下顺序进行:

常见操作:

  • 安装必要的软件包

  • 分区并格式化 RPI 存储卡

  • grafana读音“更大”的分区设置为系统磁盘

  • 添加所有 fstab 条目

  • 提交更改

  • rtorrent安卓新启动树莓派以从“permanentkubernetes怎么读”分区启动

KUBEMASTER:

  • 使用prometheus一键降级 kubeadm 设置主节点

  • 将令牌prometheus什么意思存储在本地(在static/token_file

  • root在树莓派上设置可以访问 kubectl 的用户

  • 将 Kubernetes 配置保存在本地(在static/kubecgrafana监控tl.conf

KUBEWORKER:

  • 将 token 复制到 worker 节点

  • 它使 worker 通过 token 文件加入您的主服务器

  • kubectl.conf复制到 workers 的root用户

基本操作:

  • 从 Master 上移除污点,使其参torrent是什么格式的文件与工作负载

  • 在节点上安装py3-pip,PyYaml和helm

如果您还在阅读(恭喜您),您刚刚完成了基本的Kubernetes集群。我相prometheus监控mysql信,这就像执行几个脚本然后等待它们完成一样简单,而且肯定比手动方kubernetes 安装法更好。

重要提示:您可以任意多次运行它。一旦完成,你的存储卡就不会重新格式化。

结果:安装6节点的基本 Kubernetes 集群大概需要花费几分钟,具体的时间取决于你的网络链接prometheus什么状态。

树莓派集群:步骤3

成功执行前两个步骤后,您应该已经准备好将树莓派的集群用于第一个部署。只需很少的基本设grafana监控置步骤即可使其按需运行,但是请猜测一下……它traefik2们也被自动设置,并由 Tergrafanaraform 来负责。

traefikkubernetes架构让我们看一下配置:

# Variables used for barebone kubernetes setupnetwork_subnet    = "192.168.50"
net_hosts = {  adguard = "240"  adguard_catchall = "249"  traefik = "234"  torrent_rpc = "245"}
nfs_storage = {  general = "/media/nfs"  torrent = "/mnt/drobo-storage/docker-volumes/totorrentkitty怎么打开rrent"  adguard = "/mnt/drobo-storage/docker-volumes/adansible模块guard"}
# Egrafana读音NV variable: Tgrafana漏洞RAEFIK_API_KEY sets traefik_api_key# ENV variable: GH_USER, GH_PAT for authentication with private conttraefik 配置文件ainers

您可以看到我正在1kubernetes集群92.168.50.0/24网络中运行集群,但是默认情况下,MetalLB 将使用地址200-250作为网络地址池的“end”。当我有了我的家庭 torrent 服务器和来自Adguard 的 DNS 时,我希望它们具有特定Ansible的地址,连同 Trakubernetes怎么读efik 平衡器为仪表板提供“东西”。

重要提示:

nfs_*_path值应与您在步骤2中更新的设置兼容。
确保您的 Kubernetes 配置文件~/.kube/configgrafana教程新了static/kubernetes.conf的访问细节,我正在使用home-k8s作为grafana使用上下文名称。

Terraforming有什么作用?

  1. 网络
    安装 flannel和
    host-gw的配置补丁;
    安装metalLB并将网络设置为
    var.network_subnet200–250;

  2. Traefik
    安装 Traefik 代理,并通过 metalLB 负载平衡器将其公开到您的家庭网络。Traefik 仪表板本身可以通过以下ktorrent方式访问
    traefik.local

树莓派上的 K8S 集群挂了,怎么办?
                                                原
                                                    荐

在树莓派集群上运行的 Traefik 仪表板

Adguard

使用 NFS 安装具有持久卷声明的 Adguard DNS 服务;
通过 traefik 公开仪表板,并通过家庭网络中的专用IP公开服务本身,如下所示:adguard.local

树莓派上的 K8S 集群挂了,怎么办?
                                                原
                                                    荐

在树莓派集群上运行的 Adguaransible自动化运维d Home

Promegrafana模板theus
在所有节点上安装和部署 Prometheus 监控堆栈ansible读音和 grafana。更新 Prprometheus和zabbixometheus DaemonSet,从而消除了进行卷挂载的必要性。它也通过 traefik 将 grafana 曝光为grafana.local。默认的 grafana 用户/密码组prometheustorrent是什么格式的文件akubernetes面试题dmin:adAnsiblemin。Grafana 附带一个预装的插件 devopsprodigrafana使用教程gi - kuansible自动化运维begrafi -traefik和nginx的区别app,我认为这是用于集群监控的最佳插件。

在树莓派集群上运行的 Grafana 仪表板

Kubernetes Dashboard
安装 KubernetesDkubernetes架构ashboard并通过 traefik 将其公开k8s.local

在树莓派集群上运行的 Kubernetes 仪表板

1.Torrent
使用 Flood Web 界面安装和部署torrent服务器(rTografana模板rrent)。通过公开kubernetes面试题仪表板torrent.local。它使用大traefik 配置文件量的挂载来存储数据和配置。有一个将复制设置为1traefik官网的理由:-rTorrent的lock file有问题,并且由于它使用共享目录,因此如果检测到lock file件,它就不会启动。(在我的私有配置中)rTorrent被设置为监听端口23340。

2.备份

由于traefik集群树莓派运行在存储卡上,由于经常读写操作,存储卡可能会磨损,所以我决定在NFS中添加etcd的定期备份。它们每天运行一次,在t erraform 应用的配置下——每个备份“重量”约为32兆字节。

为了使操作更简单,我创建了 Makefile,该文件应该可以帮助您进行设置。您可能需要设置以下环境变量。

TRAEFIK_API_KEY // Traefik API keyGH_USER //traefik音标 Github userGH_PAT // Github Personal Access Tansible教程oken

重要提示:Gitorrentialthub 证书现在还没有使用,但我计划很快添加身份验证,以便从 GHCR 提取私有镜像。

ADDITIONAL_ARGS=-var 'traefik_api_key=$(TRAEFIK_API_KEY)' -var "github_user=$(GH_Utraefik dubboSER)" -var "github_pat=$(GH_grafana插件TOKEN)"
apansible自动化运维ply:  cd infrastructure;ansible实战 terragrafana监控form apply $(ADDITIONAL_ARGS) -aprometheus什么uto-approve -var-file ../varprometheus什么iables.tfvarprometheuss
plan:  cd infrastructure; terrtraefik nginxaform plan $(ADDITIONAL_ARGS) -var-file ../variables.tfvars
destroy:  cd inftraefik音标rastructure; terraform destroy $(ADDITIOrtorrent安卓NAL_ARGS) -var-file ../variables.tfvars
destrprometheus教程oy-target:  cd infrastructure; terraform destroy $(ADDITIONAL_ARGS) -var-file ../variables.tfvagrafana教程rs -target $(TARGET)
refresh:  cd infrastructure; terrafAnsibleorm retraefik 配置文件fresh $(ADDITIONAL_ARGS) -var-file ../variables.tfvars
init:  cd infrastructure; rgrafana读音m -fr .terraform; terrafprometheus名词解释orm init
import:  cd infrastructure; terraform import $(ADDITIONAL_ARGS) -vkubernetes 安装ar-file ../variaprometheus一键降级bles.tfvars $(ARGS)
lint:terraformfmt-recursiveinfrastructraefik 配置文件ture/

总结

所有代码可在 GitHub 上的 lukaszraczgrafana使用教程ylo / rpi-home-cgrafana教程luster-setup 中使用,任何人均可免费使用和修改)。我还发布了具有支持 ARMkubernetes 安装64 处理器的多体系结构的定制构建的 docker 映像(rTorrent和Flood)grafana使用教程

自动化可以节省时间,节省精力,而且绝对可以完成工作。我经常清除整个集群,并使用前面提到的存储库从头开始prometheus教程构建,以确保它按预期工作。我将保持这篇文章和存储库的最新功能和特性。

原文链接:traefik音标

https://itnext.io/i-broke-Ansiblemy-kubernetes-cluster-running-on-raspberry-pi-35kubernetes怎么读5Ansible234a24d

重磅!云原生计算交群成立

扫码添加小助手即可申请加入,一定要备注:traefik名字-公司/学校-地kubernetes教程,根据格式备ansible教程注,才能torrentkitty怎么打开通过且邀请进群。

了解更多微服traefik集群务、云原生技术的相关信息,请关注我们的微信公众号【云原生计算】