在树莓派上搭建 Raspbian 系统下的 Kubernetes 集群
在树莓派上搭建 Raspbian 系统下的 Kubernetes 集群
· · 341 次点击 ·
·
开始浏览
我们将介绍,如何在三个树莓派上,创建出一套 Kubernetes 集群并正常使用。在这种场景下,主节点的内存和 CPU 资源较有限,执行 Kubernetes 任务时性能会有折扣,想做升级也不容易。
在开始之前,我们先介绍 K3s 这个项目。K3s 被誉为是最轻量级的 Kubernetes 发行版,它针对低配的 x86 和 ARM 处理器优化,可以让 Kubernetes 在树莓派上运行得更好。
基于 Raspbian 的 kubernetes 集群本文我们将介绍如何使用 K3s 在树莓派上创建 Kubernetes 集群。系统我们用的是树莓派最流行的 Raspbian。
在开始创建 Kubernetes 集群之前,我们需要准备,
至少一个树莓派,包括 SD 卡和电源 网线,普通网线即可 交换机或路由器,以便将所有树莓派连接到一个内网中安装的大部分工作都依赖网络,因此还需要能访问公网网络。
在这个集群里,我们会使用三个树莓派。其中一个树莓派作为主节点,我们将它命名为 kmaster,并为其分配一个静态 IP 192.168.0.50(注:假设使用的私有网段是 192.168.0.0/24),而另外两个树莓派作为工作节点,分别命名为 knode1 和 knode2,也分别分配 192.168.0.51 和 192.168.0.52 两个 IP 地址。
当然,如果你的内网网段和我的不一样,注意 IP 与集群个节点角色的对应关系。
为了能通过主机名直接访问节点,我们会更新每个节点的 /etc/hosts 文件,记录IP到主机名的对应关系:
echo -e 192.168.0.50 kmaster | sudo tee -a /etc/hosts echo -e 192.168.0.51 knode1 | sudo tee -a /etc/hosts echo -e 192.168.0.52 knode2 | sudo tee -a /etc/hosts部署主节点
在部署主节点前,我们默认你已经完成树莓派操作系统的安装,注意使用最新的 Raspbian,这个步骤可以参考网上的其他文章,这里不展开介绍。在主节点上,启动 SSH 服务,将主机名设置为 kmaster,并调整 IP 地址为 192.168.0.50。
通过 ssh 连接主节点,并安装 k3s:
local$ ssh pi@kmaster kmaster$ curl -sfL https://get.k3s.io | sh -
等到命令完成后,一个单节点集群就已经运行起来了。让我们检查一下,在这个派上执行命令后,可以看到以下输出,
kmaster$ sudo kubectl get nodes NAME STATUS ROLES AGE VERSION kmaster Ready master 2m13s v1.14.3-k3s.1部署工作节点
主节点完成安装后,我们开始部署工作节点。在工作节点上安装 K3s 时,会用到 join token 连接令牌,它可以使用如下命令从主节点上获取到。获取到令牌 join token 后,先保存起来,便于后续使用,
sudo cat /var/lib/rancher/k3s/server/node-token
我们把两个树莓派工作节点的主机名分别设置为 knode1 和 knode2,并将 IP 地址分别调整为 192.168.0.51 和 192.168.0.52。调整完成后,就可以开始安装 K3s 了。
通过 ssh 连接到 knode1 上,执行类似的安装命令。在工作节点上安装 K3s 和之前差不多,需要加上额外的参数,表明它是一个工作节点,需要连接到已有的集群上,
curl -sfL http://get.k3s.io | K3S_URL=https://192.168.0.50:6443 / K3S_TOKEN=保存下来的JOIN_TOKEN sh -
K3S_TOKEN 的值需要替换成保存下来的连接令牌。命令执行完后,在 knode2 的树莓派上重复这个安装过程。
访问Kubernetes集群knode2的安装完成后,集群基本进入可用状态。这时如果我们要查看或更改集群,需要登录到集群的主节点 kmaster 上用 kubectl 操作,这有些麻烦。因此我们会将 kubectl 放到 PC 上使用。首先,在主节点上获取一些必要的配置信息,在 kmaster 上执行:
sudo cat /etc/rancher/k3s/k3s.yaml
复制上面命令的输出,然后在本地PC上创建 ~/.kube 目录,在其中创建配置文件 config,并将上面复制的内容写入。随后我们需要编辑这个配置文件 ~/.kube/config ,更新server的地址为网络地址。
找到记录 server: https://localhost:6443,修改为, server: https://192.168.0.50:6443
如果 PC 上还没有安装 kubectl 的话,就可以开始安装了。Kubernetes 官方网站上有各种平台安装 kubectl 的方法说明,我使用的是 Debian 系统,所以我的安装方法是这样的:
sudo apt update sudo apt install -y apt-transport-https curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo deb https://apt.kubernetes.io/ kubernetes-xenial main | sudo tee -a/etc/apt/sources.list.d/kubernetes.list sudo apt update sudo apt install kubectl
上面几个命令的作用是添加了一个包含 Kubernetes 的 Debian 软件库,获取 GPG 密钥,然后更新软件包列表并安装 kubectl。如果 kubectl 有更新,我们将会通过标准软件更新机制收到通知。
现在在本地 PC 上就可以查看 Kubernetes 集群了,:
local-pc$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
kmaster Ready master 12m v1.14.3-k3s.1
knode1 Ready worker 103s v1.14.3-k3s.1
knode1 Ready worker 103s v1.14.3-k3s.1
至此,我们已经完成一个三节点的 Kubernetes 集群的创建,可以开始愉快的玩耍了。
K3s 的蛋蛋如果执行 kubectl get pods --all-namespaces,就会看到其它服务的一些 Pod,比如 Traefik。Traefik 在这里起到是反向代理和负载均衡器的作用,它可以让流量从单个入口进入集群后引导到集群中的各个服务。Kubernetes 支持这种机制,但 Kubernetes 本身不提供这个功能,因此 Traefik 是一个不错的选择。
341 次点击
加入收藏
相关文章
- Airbnb的动态kubernetes集群扩缩容
- Kubernetes中Nginx配置热加载
- kubernetes基础入门知识点
- 3-Kubernetes入门之Ubuntu安装部署集群
- 11-kubernetes入门学习之网络设计实现方案
- 17-Kubernetes进阶学习之集群升级迁移和维护实践
- Kubernetes-Web-UI-Kuboard安装使用
- Prometheus监控实战系列十九:监控Kubernetes集群(上篇)
- Prometheus监控实战系列二十:监控Kubernetes集群(下篇)
- 什么是微服务、容器和Kubernetes
- kubernetes 集群离线部署
- 关于 Kubernetes集群性能监控的一些笔记
- 【K8S】kubernetes概念和架构(一)
- Kubernetes 运维记录(5)
- Kubernetes 故障排查工具- Robusta 解析
- Devtron:一款超强大的 Kubernetes DevOps 平台
- 基于kubernetes的etcd集群部署
- 为什么kubernetes推荐使用ipvs
- Kubernetes 缺少的多租户功能,你可以通过这些方式实现
- 新的加密货币 Dero 挖矿活动,正以Kubernetes集群为目标进行
- kubernetes安装prometheus监控集群状态
- kubernetes部署nacos集群
- kubernetes安装es集群
- 如何使用kubeaudit审查Kubernetes集群中的常见安全控制策略
- kubernetes集群使用spinnaker完成自动化部署
- Kubernetes集群之熟悉kubectl基础命令
- Kubernetes 之 YAML 语法
- Docker 深感 Mesos、Kubernetes 威胁,Engine 中内置编排