Rancher2.0 业务逻辑及概念

       摘要:本文档重点介绍Rancher2.0 业务逻辑及K8s(Kubernetes)相关概念,为方便理解,文档根据Rancher UI界面从Global 、Cluster、Project 分层次介绍在不同业务层次的相关业务逻辑,资源操作与重要概念。

  • Global

如图所示,在global层可操作的资源对象有Cluster,Node Drivers, Catalogs,Users, Settings, Security。

  1. Cluster

Cluster由Kubernetes管理,包含了运行容器应用的机器的集合。

如图,在global层可add Cluster。

  1. Add Cluster
  1. 选择创建cluster的方式,方式有四种: ① In a hosted Kubernetes provider 方式,可选择的有Google Conrtainer Engine, Amazon EKS,② Azure Kubernetes Service,此方式下输入Cluster Name Member Roles, Account Access 信息后由提供商完成创建过程;Import existing cluster 方式,此方式可导入一个已存在的cluster;③ From nodes in an infrastructure provider , 此方式下可根据已存在的node Template,根据实际需求定义etcd、 Control Plane、Worker 的节点数量;④ Custom ,此方式下 由自己提供虚拟或物理机添加为集群节点。
  2. 为cluster添加member roles,选择user 添加为member,该member 的role 可以设定为Owner、Member、ReadOnly、Custom。 如果选定的是Cusom Roles,可自定义授权,可授权限有Create Projects,Manage Cluster Members,Manage Nodes,Manage Storage, View All Projects, View Cluster Members, View Nodes
  1. Edit Cluster

通过Edit 可对已存在的Cluster 进行修改,包括 Cluster Namex修改, Member Roles修改,Cluster Options 修改,Customize Node Run Command。

  1. Cluster Options 包括 Kubernetes Version,NetWork Provider, Cloud Provide。操作方式可通过ui 、Edit as YAML 及 Read from File。
  2. Node Options 包括 node role 定该节点是 etcd 、Control、worker。可多选。

Etcd:etcd是一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。用于保存集群信息。

Control:用于集群控制的节点。

Worker:用于具体业务工作的节点。

  1. Delete Cluster

删除选定Cluster。

 

  1. Node Drivers

 

 

 

Node Driver 用于创建cluster 的 From nodes in an infrastructure provider 方式,处于 active状态的 Node Driver 可在创建集群时被选择。可对Node Drivers 进行的操作如图所示。

  1. Catalogs

Catalog 是Global层的,它被所有的Cluster和Projects 共享。

 

如图,可以选择启用或者不启用官方的catalogs,可以自定义添加catalogs。Catalogs用于在Project层Launch自己所需要的应用。

  1. Users

 

在全局层登陆者有权限管理用户时,可对user进行操作,包括 Add User, Deactivate, Delete, Edit。

Add User 包括添加 UserName、Password、Display Name,Global Permissions。通过Global Permission 对添加的User 的权限进行设置。

  1. Standard User:Standard Users can create new clusters and manage clusters and projects they have been granted access to.
  2. Administrator:Administrators have full control over the entire installation and all resources in all clusters.
  3. Custom:Choose individual permissions for the user.
  1. Settings

通常情况下不需要修改Setting中的内容。

 

Cacerts : 验证ssl证书所需的CA证书,此CA证书仅适用于自签SSL证书。若SSL证书是权威CA机构所颁发,则要求删除此CA证书。

Engine-install-url : 默认的Docker 引擎安装URL(用于大多数Machine Driver)

Engine-iso-url : 默认OS安装URL(用于Machine vSphere Drivers)

Ui-pl : 公司名称专用标签。

Ingress-ip-domain : 用于自动生成Ingress主机的通配域名。

Server-url : 默认的rancher Server的访问地址,必须是HTTPS。集群中的所有的主机都必须能够访问此地址。

System-default-registry :用于RKE部署系统服务时镜像的拉取,其他服务拉取镜像不生效。

  1. Security

 

 

 

在Security中 可以对 Roles 、Pod Security Policies 、Authentication 进行操作。

  1. 对Roles的操作包括对全局角色的编辑,Cluster Roles 的add、edit、clone,对Project Roles的Add 、edit、clone。在添加roles时,可以通过Grant Resources 对roles设定对不同资源的不同操作权限。
  2. Pod Security Political 是指 Pod 安全策略 是集群级别的资源,它能够控制 Pod 运行的行为,以及它具有访问什么的能力。 PodSecurityPolicy对象定义了一组条件,指示 Pod 必须按系统所能接受的顺序运行。更多了解:http://docs.kubernetes.org.cn/690.html
  3. Authentication ,使用第三方服务身份验证。

 

  • Cluster

 

如图,在Cluster层可操作的资源对象包括 Cluster、Nodes、Storage、Projects\Namespce、Members、Tools。

  1. Cluster

可启动Launch Kubectl 打开shell界面操作cluster。

可Edit cluster或Delete cluster,具体操作内容同Global层的cluster 中的Edit操作。

  1. Nodes

对Node的操作包括 :

  Cardon:此功能对于在小型维护窗口(如重新启动,升级或停用)期间在节点上执行短任务非常有用。完成后,重新启动并通过取消协调使节点再次可调度。

  Delete : 删除该节点。

  Drain :此功能对于执行节点维护(如内核升级或硬件维护)非常有用。它可以防止新的pod在重新分发现有pod时部署到节点,以便用户不会遇到服务中断。

       Edit:为节点添加 Custom Name,Description, Labels。 其中labels  是 key/value 对,用于注释和做节点调用的决定。

  1. Storage

如图,Storage包括Persistent Volumes和 Storage Class。

  1. Persistent Volumes : 部署需要保​​留数据的应用程序时,您需要创建Persistent Volumes。Persistent Volumes允许从运行应用程序的pod中存储外部应用程序数据。此存储实践允许维护应用程序数据,即使应用程序的pod失败也是如此。Persistent Volumes是预先配置的存储卷,您可以稍后将其绑定到窗格。每个预先配置的卷对应于Kubernetes持久卷。启动应用程序时,它会创建绑定到Persistent Volumes的持久卷声明(PVC)。PVC对应于Docker卷。每个PVC绑定到一个PV,其中包括PVC所需的最少资源。

通过Add Persistent Volume 设定 Name,Volume Plugin,Customize(Customize Advanced options。

  1. Storage Class : 动态存储卷供应基于StorageClass的API对象的来实现,集群管理员能够按需定义StorageClass对象,每一个StorageClass对象能够指定一个存储卷插件(即供应者)。集群管理员能够在一个集群中定义各种存储卷供应,用户不需要了解存储的细节和复杂性,就能够选择符合自己要求的存储。

过程如图所示:

 

 

 

 

  1. Projects/Namespaces

                Project是Ranher中引入的组织对象,可以减轻集群管理的负担。可以使用projects实现muti-tenancy(多租户)。

                Project在namespace之外的Kubernetes集群中提供了额外的组织级别。在层次方面: Cluster包含Project , Project 包含 NameSpace。

                Rancher Project允许您在Project级别应用资源和访问权限来解决此问题。然后,Project中的每个namespace都会继承这些资源和策略,因此您只需将它们分配给project一次,而不是将它们分配给每个namespace。

 

 

在cluster层,如上图所示可以对project和namespace进行管理,如Add Project,Edit Project,Delete Project,Add NameSpace ,Edit namespace , Delete namespace ,move namespace。

  1. Member

对Cluster层的member进行操作,包括添加,删除member。选择已存在User作为member,分配member相关权限。Cluster Permissions包括 :

Owner:Owners have full control over the Cluster and all resources inside it.

Member: Members can manage the resources inside the Cluster but not change the Cluster itself.

Custom: 自定义member,可为User选择的角色有:Create Projects,Manage Cluster Members,Manage Nodes, Manage Storage, View All Projects, View Cluster Members, View Nodes。

  1. Tools

Tools中包含三个工具,如图所示:

 

 

Alerts : 对Alerts 操作包括 Deactivate,Delete,Add Alerts, Edit, Clone. Alerts 的接收者为Notifier。

Notifier种类分为Slack,Email, Pagerduty, webhook.

Logging将日志输入到指定的日志收集工具,可用工具包括:Elasticsearch,splunk,kafka,syslog,fluented.

  • Project

 

如图,Project 层 可操作的资源对象包括 Workloads,Catalog Apps,Resources,Namespaces, Members。

 

 

  1. Workloads

Worokloads 是集群上运行的工作单元,可以是pods,也可以是Deployment。Worokloads是为pod设置部署规则的对象。根据这些规则,Kubernetes执行部署并使用应用程序的当前状态更新Worokloads。通过Worokloads,您可以定义应用程序调度,扩展和升级的规则。

Workloads 有不同的分类规则,最流行的是K8s所提供的:

       Deployments:部署最适用于无状态应用程序(即,当您不必维护工作负载的状态时)。由部署工作负载管理的Pod被视为独立且一次性的。如果pod遇到中断,Kubernetes会删除它,然后重新创建它。示例应用程序是Nginx Web服务器。

       StatefulSets: 与部署相比,最好在应用程序需要维护其身份和存储数据时使用StatefulSet。应用程序就像Zookeeper--一个需要数据库存储的应用程序。

       DaemonSets: 守护进程确保群集中的每个节点都运行pod的副本。对于正在收集日志或监视节点性能的用例,这种类似守护进程的工作负载效果最佳。

 

       Jobs: 作业启动一个或多个pod,并确保指定数量的pod成功终止。与管理正在进行的所需应用程序状态相比,作业最适合运行有限任务完成。

 

       CronJobs: CronJobs与工作类似。然而,CronJobs在基于cron的时间表上运行完成。

  1. workloads 中的操作包括 :

Deploy:Deploy WorkLoad

如图所示:Deploy Workload包括name设定,workload Type设定,环境变量设定,镜像选择,namespace选择,PortMaping,节点调度,健康检查,Add volumes, Scaling/Upgrade Policy.

                   Redeploy: 重新部署,

Pause Orchestration:暂停使用该部署。

Delete:删除该部署。

Edit:编辑该部署

Rollback:回滚部署

Add a sidecar: sidecar 是一个container,为了增强或扩展主 container,与主container共享一个pod,因此共享相同network space和 storage。

  1. Load Balancing

如图所示,rancher中提供的负载均衡工具是Ingress,通常情况下,service和pod仅可在集群内部网络中通过IP地址访问。所有到达边界路由器的流量或被丢弃或被转发到其他地方,Ingress是授权入站连接到达集群服务的规则集合。

Load Banlancing 操作有 Add ingress, Delete Ingress,Edit Ingress。

  1. Service Discovery

查看Project中Namespace及Namespace中service信息。可以Edit、Move、Delete namespace. 可以clone Service record。

  1. Volume

在Volunme选项中可以对指定的namespace添加Volume Claim。设定 storage class,capabilitiy,及自定义访问模式。

  1. Pipleline

Configure Respositoties, 为流水线设置代码仓库。

 

 

  1. Catalog Apps

通过在Global设定Catalog中launch需要的应用。

  1. Resources

如图所示,该对象中保存者Porject中的资源,包括Alerts,Project级的警报;certificates,Project中所用到的相关证书;Cogfig Maps,project中所用到的配置键值对;Registry,Project所用到的注册表,可以设定这些注册表对namespace的可见范围;Secret,储存相关敏感数据。

  1. NameSpace

Kubernetes可以使用Namespaces(命名空间)创建多个虚拟集群。

 

如图所示,在project层对nameSpace操作。

  1. Member

此member是project级的member。拥有的是对project范围内资源的管理。

 

            如图所示,可以删除和添加user为Project Member。其中 Perject Permissio分为 :

Owner: Owners have full control over the Project and all resources inside it.

Member: Members can manage the resources inside the Project but not change the Project itself.

Read Only: Members can view the resources inside the Project but not change the Project itself.

Custom: 可自定义的roles有Create NamespacesManage Config MapsManage IngressManage Project MembersManage SecretsManage Service AccountsManage ServicesManage VolumesManage WorkloadsView Config MapsView IngressView Project View SecretsMembersView Service AccountsView ServicesView VolumesView Workloads

  • 其他

API & Keys : 查看rancher 所有 api 的 Endpoint : https://192.168.231.130/v3,

API key与特定用户(例如: Default Admin)绑定,可以创建、删除和操作有权访问的所有集群和项目。

Node Template: 添加node Template 在创建cluster 设定 node时使用,可选Template 有 ALiyun ECS,Amazon EC2 等。

Preference : Rancher UI 偏好设置。

Logout用户登出。

 

 

Logo

开源、云原生的融合云平台

更多推荐