快速安装k3s kubernetes集群

2022-02-27 12:50:07 浏览数 (1)

K3s 是 Rancher 发布的经过完全认证的 Kubernetes 发行版。K3s 易于使用且更轻量,全部组件都打包在了一个二进制文件里。并且这个二进制文件小于 100 MB。

下面介绍在三台centos7服务器上快速搭建k3s kubernetes集群。

基础环境

主机

操作系统

IP

rancher01

centos7

10.0.2.9

rancher02

centos7

10.0.2.78

rancher03

centos7

10..2.211

安装MySQL 5.7数据库

rancher01节点安装mysql,安装方法参考:centos7安装mysql

在mysql中创建k3s数据库。

代码语言:javascript复制
create database k3s;

安装并启动k3s Server集群

以root用户,在rancher01,rancher02,rancher03三个节点先后执行以mysql数据库信息、token为基本配置的k3s Server安装和启动脚本,具体如下所示:

其中,–token表示自定义token配置

–datastore-endpoint表示mysql数据库连接信息

代码语言:javascript复制
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server 
--token=ABCDEFGHIJK 
--datastore-endpoint="mysql://root:password@tcp(10.0.2.9:3306)/k3s"

确认 K3s 是否创建成功

代码语言:javascript复制
[root@rancher01 ~]# k3s kubectl get nodes
NAME        STATUS   ROLES                  AGE   VERSION
rancher02   Ready    control-plane,master   2d    v1.22.6 k3s1
rancher01   Ready    control-plane,master   2d    v1.22.6 k3s1
rancher03   Ready    control-plane,master   2d    v1.22.6 k3s1

保存并使用 kubeconfig 文件

在每个 Rancher Server 节点上安装 K3s 时,会在节点上/etc/rancher/k3s/k3s.yaml位置创建一个kubeconfig文件。该文件包含用于完全访问集群的凭据,您应该将此文件保存在安全的位置。

要使用此kubeconfig文件,

  1. 安装 Kubernetes 命令行工具kubectl。
  2. 将文件/etc/rancher/k3s/k3s.yaml复制并保存到本地计算机上的~/.kube/config文件中。
  3. 在这个 kubeconfig 文件中,server参数为 localhost。您需要手动更改这个地址为负载均衡器的 DNS,并且指定端口 6443。(Kubernetes API Server 的端口为 6443,Rancher Server 的端口为 80 和 443。)以下是一个示例k3s.yaml

结果: 您现在可以使用kubectl来管理您的 K3s 集群。如果您有多个 kubeconfig 文件,可以在使用kubectl时通过传递文件路径来指定要使用的 kubeconfig 文件:

代码语言:javascript复制
kubectl --kubeconfig ~/.kube/config/k3s.yaml get pods --all-namespaces

有关kubeconfig文件的更多信息,请参考 K3s 集群访问或官方 Kubernetes 文档中关于使用kubeconfig文件访问集群的部分。

Helm Chart 安装 Rancher

Rancher 使用 Kubernetes 的 Helm 软件包管理器安装。Helm Charts 为 Kubernetes YAML 清单文档提供了模板语法。

有了 Helm,我们可以创建可配置的部署,而不只是使用静态文件。

在https://github.com/helm/helm/releases中下载helm,并复制到/usr/sbin目录下

使用helm repo add命令添加含有 Rancher Chart 的 Helm Chart 仓库。

请将命令中的<CHART_REPO>,替换为lateststablealpha。更多信息,请查看选择 Rancher 版本来选择最适合你的仓库。

  • latest: 建议在尝试新功能时使用。
  • stable: 建议在生产环境中使用。(推荐)
  • alpha: 未来版本的实验性预览。

下面以latest为例:

代码语言:javascript复制
helm repo add rancher-latest http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/latest

为 Rancher 创建 Namespace

我们需要定义一个 Kubernetes Namespace,在 Namespace 中安装由 Chart 创建的资源。这个命名空间的名称为 cattle-system

代码语言:javascript复制
kubectl create namespace cattle-system

选择你的 SSL 选项

Rancher Server 默认需要 SSL/TLS 配置来保证访问的安全性。

你可以从以下三种证书来源中选择一种,证书将用来在 Rancher Server 中终止 TLS:

  • Rancher 生成的 TLS 证书: 在这种情况下,你需要在集群中安装 cert-manager。 Rancher 利用 cert-manager 签发并维护证书。Rancher 将生成自己的 CA 证书,并使用该 CA 签署证书。然后 cert-manager 负责管理该证书。
  • Let’s Encrypt: Let’s Encrypt 选项也需要使用 cert-manager。但是,在这种情况下,cert-manager 与 Let’s Encrypt 的特殊颁发者相结合,该颁发者执行获取 Let’s Encrypt 颁发的证书所需的所有操作(包括请求和验证)。此配置使用 HTTP 验证(HTTP-01),因此负载均衡器必须具有可以从公网访问的公共 DNS 记录。
  • 使用你已有的证书: 此选项使你可以使用自己的权威 CA 颁发的证书或自签名 CA 证书。 Rancher 将使用该证书来保护 WebSocket 和 HTTPS 流量。在这种情况下,你必须上传名称分别为tls.crttls.key的 PEM 格式的证书以及相关的密钥。如果使用私有 CA,则还必须上传该 CA 证书。这是由于你的节点可能不信任此私有 CA。 Rancher 将获取该 CA 证书,并从中生成一个校验和,各种 Rancher 组件将使用该校验和来验证其与 Rancher 的连接。

设置

Chart 选项

描述

是否需要 cert-manager

Rancher 生成的证书(默认)

ingress.tls.source=rancher

使用 Rancher 生成的 CA 签发的自签名证书此项为默认选项

Let’s Encrypt

ingress.tls.source=letsEncrypt

使用Let’s Encrypt颁发的证书

你已有的证书

ingress.tls.source=secret

使用你的自己的证书(Kubernetes 密文)

以已有证书为例

使用 一键生成 ssl 自签名证书脚本 来快速生成符合 rancher 要求的自签名证书。

在此选项中,将使用你自己的证书来创建 Kubernetes secret,以供 Rancher 使用。

运行这个命令时,hostname 选项必须与服务器证书中的 Common NameSubject Alternative Names 条目匹配,否则 Ingress controller 将无法正确配置。

尽管技术上仅需要Subject Alternative Names中有一个条目,但是拥有一个匹配的 Common Name 可以最大程度的提高与旧版浏览器/应用程序的兼容性。

如果你想检查证书是否正确,请查看如何在服务器证书中检查 Common Name 和 Subject Alternative Names。

  • 如上所述,为你的证书设置适当的hostname
  • replicas设置为 Rancher 部署所使用的复制数量。默认为 3;如果你的集群中少于 3 个节点,你应填写实际节点数量。
  • 设置ingress.tls.sourcesecret
  • 要安装一个特定的 Rancher 版本,使用--version 标志,例如:--version 2.3.6
  • 如果你安装的是 alpha 版本,Helm 要求在命令中加入--devel选项。
代码语言:javascript复制
helm install rancher rancher-latest/rancher 
 --namespace cattle-system 
 --set hostname=rancher02.com 
 --set replicas=3 
 --set ingress.tls.source=secret

添加 TLS Secret(千万不要遗漏该步):现在已经部署了 Rancher,还需参考添加 TLS Secret 发布证书文件,以便 Rancher 和 ingress 控制器可以使用它们。

注意: 可以使用 一键生成 ssl 自签名证书脚本 来快速生成符合 rancher 要求的自签名证书。该脚本会自动生成本文中所需要的 tls.crttls.keycacerts.pem

只有当我们在 cattle-system 命名空间,将自签名证书和对应密钥配置到 tls-rancher-ingress 的密文中,Kubernetes 才会为 Rancher 创建所有的对象和服务。

将服务器证书和任何所需的中间证书合并到名为 tls.crt 的文件中,将您的证书密钥拷贝到名称为 tls.key 的文件中。

例如,acme.sh在fullchain.cer文件中提供了服务器证书和中间证书。在这种情况下,您应该将fullchain.cer文件重命名为tls.crt,将证书秘钥文件重命名为tls.key

使用 kubectl 创建 tls 类型的密文。

代码语言:javascript复制
kubectl -n cattle-system create secret tls tls-rancher-ingress 
  --cert=tls.crt 
  --key=tls.key

提示: 如果您想要更换证书,您可以使用 kubectl -n cattle-system delete secret tls-rancher-ingress 来删除 tls-rancher-ingress 密文,之后使用上面的命令创建一个新的密文。如果您使用的是私有 CA 签发的证书,仅当新证书与当前证书是由同一个 CA 签发的,才可以替换。

网页访问rancher

初始化访问rancher时需要设置登录密码,可使用随机密码或者自定义密码。

参考文章

  1. 使用 RKE 安装 Kubernetes | Rancher文档
  2. 使用外部数据库实现高可用安装 | Rancher文档
  3. MySQL安装 – 从大数据到人工智能 (lrting.top)

本文为从大数据到人工智能博主「xiaozhch5」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://cloud.tencent.com/developer/article/1947949

0 人点赞