快速安装k3s kubernetes集群

举报
从大数据到人工智能 发表于 2022/03/09 01:51:44 2022/03/09
【摘要】 K3s 是 Rancher 发布的经过完全认证的 Kubernetes 发行版。K3s 易于使用且更轻量,全部组件都打包在了一个二进制文件里。并且这个二进制文件小于 100 MB。下面介绍在三台centos7服务器上快速搭建k3s kubernetes集群。 基础环境主机操作系统IPrancher01centos710.0.2.9rancher02centos710.0.2.78ranche...

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数据库。

create database k3s;

安装并启动k3s Server集群

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

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

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

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 是否创建成功

[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 文件:

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>,替换为latest,stable或alpha。更多信息,请查看选择 Rancher 版本来选择最适合你的仓库。

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

下面以latest为例:

helm repo add rancher-latest http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/latest

为 Rancher 创建 Namespace

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

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.crt和tls.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 Name 或 Subject Alternative Names 条目匹配,否则 Ingress controller 将无法正确配置。

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

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

  • 如上所述,为你的证书设置适当的hostname。
  • 将replicas设置为 Rancher 部署所使用的复制数量。默认为 3;如果你的集群中少于 3 个节点,你应填写实际节点数量。
  • 设置ingress.tls.source为secret。
  • 要安装一个特定的 Rancher 版本,使用--version 标志,例如:--version 2.3.6。
  • 如果你安装的是 alpha 版本,Helm 要求在命令中加入--devel选项。
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.crt、tls.key 和 cacerts.pem

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

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

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

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

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时需要设置登录密码,可使用随机密码或者自定义密码。

image.png

参考文章

  1. 使用 RKE 安装 Kubernetes | Rancher文档
  2. 使用外部数据库实现高可用安装 | Rancher文档
  3. MySQL安装 - 从大数据到人工智能 (lrting.top)
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。