背景
几天前,我们在云服务器上搭建了一个 rancher 平台,迈向了混合云的第一步。今天尝试将本地集群连接到 rancher 上面,实现统一管理。
基础概念
Fleet
这里要用到的功能主要是 Fleet,见 官方文档。
这个产品主要是做多集群的管理,提供了一个统一的访问入口,我正好需要这个。😆
子集群怎么连接到 rancher 平台?
一开始我以为是直接拿子集群的 config 传上去就行了,不过 rancher 想的更周全一点,我连内网穿透都不需要了。
Cluster Agent
只需要在子集群上面跑一个 agent,就可以了。
这样子,只需要管理平台能够被公网访问,其他所有集群就都可以注册到集群了。
非常利好我这种在家里开 IDC 的人,在一个地方管理所有集群,非常爽。
前置准备
其实,我在证书这里卡了好久,最后是通过这种方式成功的。
首先,参考 官方关于证书管理的文档,重新配置一下 rancher。
|
|
这里其实我也还没有搞明白,就把自己的配置放出来供参考吧。
|
|
大概就是说,不使用私有 CA,并且使用 Let’s Encrypt 的证书。
然后,agentTLSMode: system-store
这个选项,是我卡了好久,在 这里 看到的。
之前的情况是,不管我是导入集群还是创建集群,都会报类似下面这样的错误:
Strict CA verification is enabled but encountered error finding root CA
[fatal] aborting system-agent installation due to requested strict ca verification with no ca checksum provided
好像和一个叫做Strict CA verification
的策略有关,但是我怎么也没有配置好证书,所以就调整那个选择,把这个功能关掉了。
导入集群
剩下的就很简单了,界面上面点点的,然后会显示一条命令,然后在需要导入的机器上面执行一下就行了。
由于主要是界面操作,所以就引用一下官方文档的描述
注册集群
1. 点击 **☰ > 集群管理**。
2. 在**集群**页面上,单击**导入集群**。
3. 选择集群类型。
4. 使用**成员角色**为集群配置用户授权。点击**添加成员**添加可以访问集群的用户。使用**角色**下拉菜单为每个用户设置权限。
5. 如果你在 Rancher 中导入一个通用 Kubernetes 集群,请执行以下步骤:
a. 点击**集群选项**下的 **Agent 环境变量**,为 [rancher cluster agent](https://ranchermanager.docs.rancher.com/zh/how-to-guides/new-user-guides/launch-kubernetes-with-rancher/about-rancher-agents) 设置环境变量。你可以使用键值对设置环境变量。如果 Rancher Agent 需要使用代理与 Rancher Server 通信,则可以使用 Agent 环境变量设置 `HTTP_PROXY`,`HTTPS_PROXY` 和 `NO_PROXY` 环境变量。
b. 启用项目网络隔离,确保集群支持 Kubernetes `NetworkPolicy` 资源。用户可以通过**项目网络隔离**选项下的**高级选项**下拉菜单进行操作。
6. 单击**创建**。
7. 此处会显示 `cluster-admin` 权限的先决条件(参见上文的**先决条件**),其中包括满足先决条件的示例命令。
8. 将 `kubectl` 命令复制到剪贴板,并在配置了 kubeconfig 的节点上运行该命令,从而指向要导入的集群。如果你不确定配置是否正确,请在运行 Rancher 显示的命令之前运行 `kubectl get nodes` 进行验证。
9. 如果你使用自签名证书,你将收到 `certificate signed by unknown authority` 的消息。要解决此验证问题,请将 Rancher 中显示的以 `curl` 开头的命令复制到剪贴板。然后在配置了 kubeconfig 的节点上运行该命令,从而指向要导入的集群。
10. 在节点上运行完命令后,单击**完成**。
**结果**:
- 集群已注册并分配了 **Pending** 状态。Rancher 正在部署资源来管理你的集群。
- 当集群状态变为 **Active** 后,你可访问集群。
- **Active** 集群分配了两个项目,分别是 `Default`(包含命名空间 `default`)和 `System`(包含命名空间 `cattle-system`、`ingress-nginx`、`kube-public` 和 `kube-system`)。
最后,就可以直接给本地的集群打开一个 rancher 的 dashboard,♪٩(´ω`)و♪。
总结
有一大半的的时间卡在那个证书的事情上了,英文的文档看的也不是很懂,不过还是学到了很多关于证书的那些东西。
目前只搞定了导入集群,从干净的系统上创建集群还不行,会报错,好像又是和证书相关的 >_<
|
|
还有就是,创建集群的时候看到了一个熟悉的面孔
其实我上个月已经搞起来了的,只不过只有一台机器,没啥必要。
感觉可以试试把 terraform 的部署平台从 pxe 转移到 vSphere 上,毕竟是企业级的产品,应该就没那么多 bug 了吧(pxe 的 provider 坑死我了)。
既然 rancher 可以直接在 vSphere 上面创建的话,那,是不是可以实现:当我机器不够用了,服务要炸了的情况,直接在 rancher 上面点几下,就可以自动创建节点,安装系统,配置节点并接入集群。
想想就好幸福。🥰🥰