Day 3 - Rancher 架构与安装方式介绍

本文将於赛後同步刊登於笔者部落格

有兴趣学习更多 Kubernetes/DevOps/Linux 相关的资源的读者,欢迎前往阅读

更多相关科技的技术分享,欢迎追踪 矽谷牛的耕田笔记

对於 Kubernetes 与 Linux Network 有兴趣的可以参阅笔者的线上课程

前言

前篇文章探讨了 Rancher 的基本概念与 Rancher 带来的好处,本章节则要探讨 Rancher 的架构
对其架构了解愈深,未来使用时要除错就会更知道要从什麽角度去侦错同时部署时也比较会有些基本概念为什麽官方会有不同的部署方式。

由於 Rancher 本身是一个管理 Kubernetes 的平台,同时又要提供 UI 介面给使用者管理,因此其本身就是由多个内部元件组成的,如下图(该图节录自官方网站)

注: 此为 v2.5 的架构

从官方的架构图中可以观察到, Rancher 本身除了 API Server 作为整体逻辑处理之外,还有额外的元件譬如

  1. Cluster Controller
  2. Authentication Proxy
  3. etcd

其中 Cluster Controller 可以用来控制不同类型的 Kubernetes Cluster,不论是透过 Rancher 所架设的 RKE 或是其他如 EKS/AKS 等。
这边要特别注意的,任何要给 Rancher 给控管的 Kubernetes Cluster 都会必须要於其丛集中安装一个 Cluster Agent。 Rancher 要透过 Agent 的帮忙才可以达到统一控管的效用。

API Server 方面本身面对的 Client 很多,有使用 UI 浏览的,有使用 CLI 操作,甚至连 Kubernetes API 也都是由 API 处理的。
这边解释一下为什麽 Kubernetes API 需要走 Rancher API Server,试想一个纯地端的网路环境,如果使用者想要透过 kubectl/helm 等指令去存取该 Kubernetes,这意味者该地端环境需要将 API Server 的 6443 port 给放出来,同时还要准备好相关凭证等。如果该 Kubernetes Cluster 是由 Rancher 所创立的,那 Rancher 可以透过与 Agent 的沟通过程来交换这些 Kubernetes API 的操作,这意味者使用者只要对 Rancher API Server 发送 Kubernetes API 等相关的指令,这些最後都会被 Rancher API Server 给转发到底下 Kubernetes Cluster 的 API Server。这样地端环境也不需要开启 6443 port,只要本身丛集内的 Agent 有跟 Rancher API Server 有保持连线即可。使用上大幅度简化整个操作流程。
最後提醒的是此功能并非一定要使用,针对 RKE 丛集也是有办法不经由 Rancher 而直接存取 Kubernetes 。

上述的架构图也清楚的告诉使用者,要架设一个 Rancher 服务要准备上述这些元件,而官方网站本身则提供的数种不同的安装方式,而这些方式又会分成两大类,单一节点或是多节点。
单一节点的安装方式适合测试使用,而生产环境下会建议采用多节点的方式去部署 Rancher Server,毕竟 Rancher 本身是管理多套 Kubernetes 丛集的服务,因此本身最好要有 HA 的机制去确保不会因为单一节点损毁而导致後面一连串的错误。

下图节录自官方网站

该架构图呈现了两种不同模式下的架构,最大的差别就只是 Rancher Server 本身到底如何被外界存取以及 Rancher Server 有无 HA 等特性。

单一节点的安装非常简单,只要使用 docker 指令就可以很轻松的起一个 Rancher Server,不过要特别注意的是透过这种方法部署的 Rancher 不建议当作生产环境,最好只是拿来测试即可。
其原理其实是透过一个 docker container 起 Rancher 服务,服务内会用 RKE 创建一个单一节点的 Kubernetes 节点,该节点内会把 Rancher 的服务都部署到该 Kubernetes 内。

多节点安装的安装概念很简单,就是把 Rancher 的服务安装到一个 Kubernetes 丛集内即可, Rancher 本身提供 Helm 的安装方式,所以熟悉 Helm 指令就可以轻松的安装一套 Rancher 到 Kubernetes 丛集内。
官方文件提供了不同种 Kubernetes 丛集的安装方式,包含

  1. RKE (使用 RKE 指令先行创建一个 K8S 丛集,再用 Helm 把 Rancher 安装进去)
  2. EKS
  3. GKE
  4. K3s (轻量级 RKE,针对 IoT 等环境设计的 Kubernetes 版本)
  5. RKE2 (针对美国安全相关部门所开发更为安全性的 RKE 版本)

除了上述所描述的一些安装方式外, Rancher 也跟 AWS 有相关整合,能够透过 CloudFormation 的方式透过 EKS 部署 Rancher 服务,详细的可以参阅Rancher on the AWS Cloud
Quick Start Reference Deployment

最後为了让整体的安装更加简化,Rancher 於 v2.5.4 後释出了一个实验的新安装方式,称为 RancherD
该服务会先创建一个 RKE2 的丛集,并且使用 Helm 将相关服务都安装到该 RKE2 丛集中。

最後要注意的是,不论是哪种安装方式,都需要针对 SSL 凭证去进行处理,这部分可以用 Rancher 自行签署,自行准备或是透过 Let's Encrypt 来取得都可以,所以安装时也需要对 SSL 有点概念会比较好,能的话最好有一个属於自已的域名来方便测试。
单一节点的 Docker Container 部署方式有可能会遇到 RKE 内部 k8s 服务凭证过期的问题,如果遇到可以参阅下列解决方式处理 Rancher container restarting every 12 seconds, expired certificates

下一篇文章便会尝试透过 RKE + Helm 的方式来看看如何架设 Rancher


<<:  Material UI in React [Day 2] Layout (Container & Box)

>>:  [iT铁人赛Day3]JAVA的键盘输入

零信任架构-可扩展存取控制标记语言(XACML)是用於授权的最佳存取控制策略语言

-示例 XACML 实现 基於风险和基於属性的存取控制是授权机制,而不是存取控制策略语言。SAML...

NEC SV9100 小总机WEBPRO设定问题

请问大神: NEC SV9100 小总机进线会到语音宣告,但按1会跑到特定分机(例711),目前分机...

Day10:例外处理,留下来或我跟你走

程序在执行的时候,有些时候我们会遇到一些例外的情况,我们一般会使用 try-catch 来拦截程序执...

Hello World: 编译环境建立

前两天猴子先偷偷把之前编完的执行档拿来验证, 今天来把 Cross Compiler 的部分补完。 ...

食谱搜寻系统开赛罗~~

主题 :从零开始食谱搜寻系统 Day1 (开赛) 开赛宣言 在开赛第一天,icebear希望自己可以...