一文读懂如何部署具有外部数据库的高可用 K3s

介绍

您是否在以高可用模式部署 Kubernetes 并配置远程备份数据库时遇到了困难?本文将为您介绍如何在具有外部数据库 Postgres 的 HA 配置中部署 K3s。

K3s(https://k3s.io/)是用于物联网和边缘计算的认证 Kubernetes 发行版。我将它部署在 IBM Z 大型机中的虚拟机上。我没有选择 etcd,而是使用了 Postgres 作为 K3s 集群的存储方案。我以非 HA 模式部署了 Postgres。想了解如何在 HA 模式下部署 Postgres 的信息,请参阅官方文档:https://www.postgresql.org/docs/13/high-availability.html

Postgres 和 K3s 集群之间的通信是 SSL 安全的。我在 K3s server 前面的第 4 层使用了 Nginx 进行负载均衡。我们以后可能需要添加新的服务器节点或关闭服务器。因此,如果不使用 K3s Server IP 而是使用负载均衡器,我们就能避免这类麻烦,还可以实现 HA。请注意,Nginx 负载均衡器也可能成为单一故障点。有关在 HA 模式下部署 Nginx,请参阅文档:https://www.nginx.com/products/nginx/high-availability/

HA 配置

下图描述了我在 HA 模式下部署具有两个节点的 K3s 集群的方式。即使一台 Server 出现故障,另一台 Server 仍然可以访问,而且负载均衡器能将所有请求路由到可访问的 Server。由于 K3s 的所有组件都是无状态的,即使 Server 出现故障,我们也不会丢失任何信息。所有信息都存储在 Postgres 中,并且必须是 HA。

具有负载均衡器和数据库的 K3s HA 模式

环境

在开始之前,你需要以下环境:

操作系统 - SLE15SP2 虚拟机 - 5 VCPU - 2 RAM - 8 GB 磁盘 - 30 GB Arch - s390x

以下是我使用的各个虚拟机的 IP 地址,你可以随时在本文查阅这些 IP 地址代表的含义:

K3s Server 1 - 10.161.129.54K3s Server 2 - 10.161.129.154K3s Agent - 10.161.129.196Postgres - 10.161.129.212Nginx - 10.161.129.118

我在大型机 (s390x) 虚拟机中部署,你也可以在其他任何架构上使用相同的命令。现在,我们来看看安装 Postgres 和 K3s 集群的命令。

安装 Postgres

我在其中一台虚拟机上安装了 postgres10。我们将该虚拟机命名为 Postgres。你可以复制粘贴以下命令来安装 Postgres。为了安全起见,请确保 Postgres 数据库和 K3s 集群之间存在相互 TLS 通信。我使用了自签名证书来识别使用 OpenSSL 创建的 Postgres。

Postgres 虚拟机
  • 使用 zypper 安装 Postgres 包:
zypper -n in postgresql10 postgresql10-server
systemctl start postgresql
  • 创建 K3s 数据库、用户角色并授予用户角色的所有访问权限:
sudo -u postgres psql
create database K3s;
create user K3s with encrypted password 'K3s';
grant all privileges on database K3s to K3s;
exit;

我们将使用 K3s 数据库来存储集群信息。我们使用 K3s 用户来为 K3s 集群进行 Postgres 数据库身份验证。

  • 创建标识 Postgres 服务器的自签名证书并将它们存储在 /var/lib/pgsql/dat
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值