一、前言

     Rancher 是为使用容器的公司打造的容器管理平台。Rancher 简化了使用 Kubernetes 的流程,方便开发者可以随处运行 Kubernetes(Run Kubernetes Everywhere),以便于满足 IT 需求规范,赋能 DevOps 团队。当然 Rancher 2.x 已经完全转向了 Kubernetes。Rancher 2.x 可以部署和管理在任何地方运行的 Kubernetes 集群。Rancher 可以创建来自 Kubernetes 托管服务提供商的集群,自动创建节点并安装 Kubernetes 集群,或者导入任何已经存在的 Kubernetes 集群。Rancher 通过支持集群的身份验证和基于角色的访问控制(RBAC),使系统管理员能够从一个位置控制全部集群的访问。Rancher 可以对集群及其资源进行详细的监控和并在需要时发送告警,也可以将容器日志发送给外部日志系统,并通过应用商店与 Helm 集成。若具有外部 CI/CD 流水线系统,则可以将其与 Rancher 对接,如果没有,Rancher 也提供了简单易用的流水线实现自动部署和升级工作负载。除此之外,Rancher 还有很多开箱即用的功能用于更好的管理集群和业务应用,例如多集群应用,全局 DNS,服务网格,安全扫描,集群模版和基于 OPA 的策略管理等功能。综上所述,Rancher 是一个全栈式的 Kubernetes 容器管理平台,也是一个可以在任何地方都能成功运行 Kubernetes 的工具。

二、Rancher 2.X 架构

Rancher Server 由认证代理(Authentication Proxy)、Rancher API Server、集群控制器(Cluster Controller)、etcd 节点和集群 Agent(Cluster Agent) 组成。除了集群 Agent 以外,其他组件都部署在 Rancher Server 中。

k8s yarn对比 k8s与rancher_开发者

 

Rancher API Server基于Kubernetes API Server扩展构建,通过K8s标准的自定义资源对象扩展和各种自定义控制器实现对底层Kubernetes集群和各种资源的扩展和纳管

Authentication Proxy将所有Kubernetes API调用转发到下游集群,它与本地身份验证,Active Directory和GitHub等身份验证服务集成

Cluster Controller监视下游集群中的资源更改,使下游集群的当前状态达到所需状态,为群集和项目配置访问控制策略

Cluster Agent在下游用户集群中运行,连接到Rancher启动的Kubernetes集群的Kubernetes API,管理每个集群中的工作负载,pod创建和部署,在集群和Rancher服务器之间进行通信,以了解事件,统计信息,节点信息和运行状况

Node Agent在执行集群操作时,它用于与节点进行交互。集群操作的示例包括升级Kubernetes版本以及创建或还原etcd快照

1. Rancher API Server

Rancher API Server 是基于嵌入式 Kubernetes API Server 和 ETCD 数据库建立的,它提供了以下功能:

  • 授权和角色权限控制
  • 用户管理: Rancher API server 除了管理用户在公司内部的使用的认证信息之外,还管理用户访问外部服务所需的认证信息,如登录活动目录或 GitHub 所需的账号密码。
  • 授权: Rancher API server 负责管理权限控制策略 和 安全策略。
  • 基于Rancher使用 Kubernetes 的功能
  • 运行 Kubernetes 集群: Rancher API server 可以在已有节点上运行 Kubernetes 集群 ,或对 Kubernetes 进行版本升级。
  • 应用商店管理: Rancher 可以使用Helm Charts 应用商店重复部署应用。
  • 项目管理: 项目,是 Rancher 中的一个概念,Kubernetes 中并没有这个概念。项目由一个集群内的多个命名空间和多个访问控制策略组成,允许用户以组为单位,一次管理多个命名空间,对其进行 Kubernetes 相关操作。Rancher 用户界面提供了 项目管理 和 项目内应用管理 两个功能。
  • 流水线: 流水线 可以帮助开发者快速高效地上线新软件。Rancher 支持给每一个项目单独配置流水线。
  • Istio: Rancher 与 Istio 集成,管理员或集群所有者可以将 Istio 交给开发者,然后开发者使用 Istio 执行安全策略,排查问题,或为快速发布、灰度发布和 A/B 测试进行流量控制。
  • 配置云端基础信息
  • 同步节点信息: Rancher API server 可以同步集群内所有节点的信息。
  • 配置云端基础信息: 当 Rancher 与云服务提供商配置完了之后,可以在云端动态配置新节点和持久化存储。
  • 查看集群信息
  • 日志: Rancher 可以跟多种主流日志工具集成,可以设置 集群日志 或 项目日志。
  • 监控: 使用 Rancher,可以通过 Prometheus 监控集群节点、Kubernetes 组件、软件部署的状态和进度。可以设置 集群监控 或 项目监控。
  • 告警信息: 需要随时知道集群和项目的计划和非计划事件,才可以提高公司的运行效率。可以设置集群告警 或 项目告警。

三、Rancher API操作k8s集群

1,构建rancher client

获取api key->构建client

k8s yarn对比 k8s与rancher_API_02

k8s yarn对比 k8s与rancher_开发者_03

k8s yarn对比 k8s与rancher_Server_04

import rancher "pro/pkg/client-rancher/management/v3"
 
//token为ranchertoken
func newRancherManagementClient(token string) (*rancher.Client, error) {
	opts := clientbase.ClientOpts{
		URL:      "服务对应rancher api地址,如https://192.168.10.19/v3",
		TokenKey: token,
		Insecure: "是否跳过验证TLS链接证书验证,值为True或False",
	}
	cli, err := rancher.NewClient(&opts)
    if err != nil {
		return nil, err
	}
 
	return cli, nil
}

2,资源操作,如创建密文

func CreateSecretV3(secret *client.NamespacedSecret, token string) error {
    //传两个参数,第一个为要创建在哪个project下的projectID,第二个是连接rancher的token
	cli, err := client.newRancherManagementClient(secret.ProjectId, token)
	if err != nil {
		return err
	}
    	_, err = cli.NamespacedSecret.Create(secret)
	return err
}

 四、参考文章

1.https://cloud.tencent.com/developer/article/1637367