全栈式k8s编排产品Rancher(一)

Rancher入门

Rancher简介

Rancher 是一个全栈式的 Kubernetes 容器管理平台,也是一个可以在任何地方都能成功运行 Kubernetes 的工具。

Rancher 通过支持集群的身份验证和基于角色的访问控制(RBAC),使系统管理员能够从一个位置控制全部集群的访问。Rancher 可以对集群及其资源进行详细的监控和并在需要时发送告警,也可以将容器日志发送给外部日志系统,并通过应用商店与 Helm 集成。如果您具有外部 CI/CD 流水线系统,则可以将其与 Rancher 对接,如果没有,Rancher 也提供了简单易用的流水线来帮助您自动部署和升级工作负载。

官方文档:https://docs.rancher.cn/docs/rancher2.5/overview/_index/

Rancher架构

图描述的是用户通过 Rancher Server 管控 Rancher 部署的 Kubernetes 集群(RKE 集群)和托管的 Kubernetes 集群的(EKS)集群的流程。

以用户下发指令为例,指令的流动路径如下:

  1. 首先,用户通过 Rancher UI(即 Rancher 控制台) Rancher 命令行工具(Rancher CLI)输入指令;直接调用 Rancher API 接口也可以达到相同的效果。
  2. 用户通过 Rancher 的代理认证后,指令会进一步下发到 Rancher Server 。
  3. 与此同时,Rancher Server 也会执行容灾备份,将数据备份到 etcd 节点。
  4. 然后 Rancher Server 把指令传递给集群控制器。集群控制器把指令传递到下游集群的 Agent,最终通过 Agent 把指令下发到指定的集群中。

与下游集群交互

通过两个用户 Bob 和 Alice 的案例,了解 Rancher 启动和管理下游集群的具体过程,和每个 Rancher 组件的作用。

1. 认证代理

  图左上角一个叫做 Bob 的用户希望查看下游集群“User Cluster 1”里面正在运行的 pod。Bob 发起的请求会首先经过认证代理,通过认证之后,Rancher 的 认证代理才会把 API 调用命令转发到下游集群。

  默认状态下,Rancher 生成一个包含认证信息的kubeconfig文件,为 Rancher Server 和下游集群的 Kubernetes API Server 之间的通信提供认证。该文件包含了访问集群的所有权限。

2. 集群控制器和集群agent

  每一个下游集群都有一个集群 Agent 保持下游集群的集群控制器与 Rancher Server 之间的信息畅通。

集群控制器具有以下功能:

  • 检测下游集群的资源变化,如内存使用率、CPU 使用率等
  • 把下游集群从“当前”状态变更到“目标”状态
  • 配置集群和项目的访问控制策略
  • 通过调用 Docker Machine 和 Kubernetes Engine,如 RKE 和 GKE,创建集群。

  默认状态下,集群控制器连接 Agent,Rancher 才可以与下游集群通信。如果集群 Agent 不可用,集群控制器可以连接到节点 Agent,通过节点 Agent 实现用户和集群之间的通信。

  集群 Agent,也叫做“cattle-cluster-agent”,是在下游集群中运行的组件,它具有以下功能:

  • 连接使用 Rancher 部署的 Kubernetes 集群(RKE 集群)中的 Kubernetes API。
  • 管理集群内的工作负载,pod 创建和部署。
  • 根据每个集群的设置,配置 Role 和 RoleBindings
  • 实现集群和 Rancher Server 之间的消息传输,包括事件,指标,健康状况和节点信息等。

3. 节点agents

  如果集群 Agent 不可用,下游集群中的其中一个节点 Agent 会创建一个通信管道,由节点 Agent 连接到集群控制器,实现下游集群和 Rancher 之间的通信。使用DaemonSet部署节点 Agent ,这种方式可以确保下游集群内每个节点都成功运行节点 Agent。执行集群操作时,可以使用这种方式将指令下发到下游集群。集群操作包括:升级 Kubernetes 版本、创建 etcd 节点备份和恢复 etcd 节点

4. 授权集群端点

  Rancher Server 和下游集群之间有明显的延迟,或 Rancher Server 不可用时,用户可以通过授权集群端点连接下游集群,实现 Rancher Server 和集群之间的通信,降低网络延迟。只有 Rancher 部署的 Kubernetes 集群(RKE 集群)可以使用授权集群端点这个功能。导入的集群、托管的集群等,并不能够使用此功能。

  kube-api-auth 微服务向授权集群端点提供了用户认证功能。使用 kubectl 访问下游集群时,集群的 Kubernetes API Server 通过 kube-api-auth 对用户进行认证。kube-api-auth 认证功能同样只在 Rancher 部署的 Kubernetes 集群(RKE 集群)中有效。

重要文件

  • rancher-cluster.yml :RKE 集群配置文件。
  • kube_config_cluster.yml :集群的 kubeconfig 文件,它包含了访问集群的全部权限。如果 Rancher 出现故障,无法运行,您可以使用这个文件连接通过 Rancher 部署的 Kubernetes 集群(RKE 集群)。
  • rancher-cluster.rkestate :Kubernetes 集群状态文件,该文件含有访问集群的所有权限。只有使用 RKE 0.2.0 或以上版本时,才会创建该文件。

注意:后两个文件名的“rancher-cluster”部分取决于您如何命名 RKE 集群的配置文件。

posted @ 2022-09-05 16:52  _Zeno  阅读(111)  评论(0编辑  收藏  举报