K3s 是一个轻量级的 Kubernetes。由于运行 K3s 所需的资源相对较少,所以 K3s 也适用于开发和测试场景。本文根据官方文档并结合前辈的相关经验对 k3s + Rancher 的集群搭建过程进行记录。

1 环境准备

本文示例环境:安装了 window 10 的个人笔记本电脑,通过 VMware Workstation 16 Pro 虚拟机创建的 CentOS 7 虚拟主机。虚拟主机的安装创建,本文不做具体展开,有需要的可以自己搜索。

CentOS 需要运行以下命令,关闭 firewalld。

systemctl disable firewalld --now

2 安装 k3s

国内用户,运行以下命令快速安装:

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

查看版本号:

k3s --version

查看 k3s 所有 node 的详细信息:

kubectl get node -o wide

查看 pod 状态:

kubectl get pods --all-namespaces

3 安装 Docker

curl https://releases.rancher.com/install-docker/20.10.sh | sh

可以从 GitHub 仓库 中找到 Rancher 所有的 Docker 版本。

4 安装 Helm

官网 下载 Helm 最新版本的二进制安装包到本地。

4.1 下载

wget https://get.helm.sh/helm-v3.6.2-linux-amd64.tar.gz

4.2 解压

tar -zxvf helm-v3.6.2-linux-amd64.tar.gz

4.3 移动到/usr/local/bin目录下

mv linux-amd64/helm /usr/local/bin/

4.4 添加 Helm Chart 仓库

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

5 安装 Rancher

5.1 为 Rancher 创建 Namespace

kubectl create namespace cattle-system

5.2 生成 CA 证书

openssl genrsa -aes256 -passout pass:123456 -out cacerts.pem 2048

5.3 使用私有 CA 签发证书

kubectl -n cattle-system create secret generic tls-ca \
  --from-file=cacerts.pem=./cacerts.pem

5.4 安装

helm install rancher rancher-stable/rancher \
  --namespace cattle-system \
  --set hostname=rancher.lervor.com \
  --set ingress.tls.source=secret \
  --set privateCA=true

Rancher 默认部署 3 个节点,如果你的集群中少于 3 个节点,你应填写实际节点数量。通过增加参数 --set replicas=3,并将其中的 3 改成实际节点数量。

执行以上命令可能出现以下错误:

Error: Kubernetes cluster unreachable: Get "http://localhost:8080/version?timeout=32s": dial tcp [::1]:8080: connect: connection refused

其出错原因为:
helm v3 版本不再需要 Tiller,而是直接访问 ApiServer 来与 k8s 交互,通过环境变量 KUBECONFIG 来读取存有 ApiServre 的地址与 token 的配置文件地址,默认地址为 ~/.kube/config

解决方式:
按如下方式手动配置 KUBECONFIG 环境变量后再重新执行安装命令:

export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

5.5 修改 host

由于本文环境是在本地内网搭建的 rancher,因此只能通过修改主机的 host 来指定域名,具体是修改 C:\Windows\System32\drivers\etc 文件夹中的 hosts 文件最后增加 192.168.20.128 rancher.lervor.com 映射。

至此,通过 https://rancher.lervor.com 就可以看到 rancher 的操作界面了。

本文中使用的域名 rancher.lervor.com 可以按需修改成自己的域名(不一定是存在的域名)。

特别注意:如果是虚拟主机,至少需要分配 2G 内存 + 2 核 CPU(建议 3G 内存 + 4 核 CPU),否则可能因资源不足导致集群启动失败。