rancher 操作和API

背景

Rancher Labs k3s在边缘计算中的应用
随着互联网大数据ai等技术的发展,同时越来越多的应用带来的效益,而且各国家政策也朝着趋势导向,投入大量的人力物力进入信息化,数据化转型,特别是现在互联网的发展,云计算中心各地发展。除了互联网公司,还有更多的政务和医疗带来了便利。

但是对于传统企业,这还是远不够,比如电力,工业等传统企业,不只是一个app,还要部署非常多的传感器,采集设备,这些都是数据端到计算中心的必经之路,所谓i的边缘就是偏向设备数据采集端的计算实体,而这些边缘设备是成千上万的,分散在各地。

从另一个角度看,5G和大数据 的发展其实更是需要承载在上面的应用,而传统企业的物联网和边缘计算才是最终的应用,而将计算分散到各个边缘设备也就是边缘计算的思路,近边缘侧的比如智能汽车,智能摄像头,这些可以部署一些计算能力。同时边缘计算和物联网的发展也是反过来促进大数据和AI的发展。

边缘设备具有下面的特点:

数量大,动辄有数十台、数百台设备;
单点故障影响小,一个设备只负责一小块区域的数据采集、分析与计算,因此单台设备的故障导致的局部数据的缺失,数据分析层面也进行了数据清洗,因此,单点故障对全局业务影响不大。

k3s

k3s 是rancher公司发布的轻量级kubernets ,也就是针对边缘计算的容器管理平台,相比kubernete 非常轻量,而且支持arm架构,只需要几百M的内存即可启动。可以管理成百上千的边缘设备,在上面部署物联网应用和AI 应用等等。有这些特点:

部署简单:对环境依赖少,可离线也可在线部署 ,离线部署时,只需要下载一个大约40MB的二进制文件和一个200MB不到的离线镜像包,启动k3s节点几乎是秒级的。
资源需求少:k3s自身只需要512MB内存即可。部署完成后,只包含下面的应用:
上手无代价:
使用k3s与kubernetes习惯完全一致,对于使用kubernetes的人来讲使用k3s没有任何代价;
支持部署helm tiller服务端(尽管tiller端会在helm 3.x版本中被干掉),直接使用原有charts部署应用无障碍;
扩缩容方便:增删节点极其方便,几乎是分钟以内就可以完成;
兼容arm架构设备,对于部分有此种类型的设备的集群友好;

K3s适用的场景有:

边缘计算、与应用程序绑定使用、嵌入式设备、CI环境

rancher

而rancher公司其实也有个管理kubernets或k3s 集群的可视化的应用管理平台,也叫rancher,
可以基于rancher 使用helm 部署kubernets集群,当然rancher也可以一键部署很多开源应用,比如harbor,Prometheus等。

据介绍,Rancher目前已经具备全栈化一键部署应用、多种编排调度工具、多租户、多种基础架构的能力,可替换IaaS云平台,无论是AWS、微软Azure、谷歌、阿里云还是OpenStack、VMware。这就如同一款浏览器可以运行在iOS、安卓、Windows、OS X等不同操作系统中一样,让用户得到一致性的用户体验。

kubernetes是容器集群编排系统,而rancher 包括了整个kubernete集群发布,同时增加了三个关键功能,集群的操作管理,直观工作负载管理,以及企业支持。

image

五大应用场景

据了解,目前容器在国内的典型应用场景可以归纳为5大类:

1、混合云及复杂数据中心;

2、多环境、多资源池的DevOps流水线;

3、基于Rancher的轻量级PaaS;

4、IT综合资产管理平台;

5、一键部署容器化应用到任意资源池中的任意集群环境。

例如 使用rancher导入k3s集群和管理
在Rancher上添加一个集群,然后按照步骤将该集群导入到Rancher平台中,可以使用Rancher管理和维护集群:


image.png

使用rancher

登录首页,首先可以看到有哪些集群



默认的都有一个local 也就是本地master节点的集群
k3s为后面导入的两个节点集群

点击进入可看到有两个节点


image.png

可以看到节点的基本信息

新增管理集群


image.png

选择导入其他存在的集群


image.png

写个集群名test


image.png

然后点击导入主机,也就是集群所在的节点


image.png

会出现导入指令,在kubernetes集群所在master执行相关操作


image.png

这里是用k3s

(base) root@k8s-master1:/media/nizhengqi/7a646073-10bf-41e4-93b5-4b89df793ff8/rancher#       curl --insecure -sfL  \
https://192.168.1.247:8443/v3/import/s2f4qkrbc45492rkljwxdtvbdggqs7qv48q7fgcmh55m5dkhvp6d4l_c-gwgtz.yaml | k3s kubectl apply -f -
clusterrole.rbac.authorization.k8s.io/proxy-clusterrole-kubeapiserver unchanged
clusterrolebinding.rbac.authorization.k8s.io/proxy-role-binding-kubernetes-master unchanged
namespace/cattle-system unchanged
serviceaccount/cattle unchanged
clusterrolebinding.rbac.authorization.k8s.io/cattle-admin-binding unchanged
secret/cattle-credentials-be6b402 created
clusterrole.rbac.authorization.k8s.io/cattle-admin unchanged
deployment.apps/cattle-cluster-agent configured

导入后界面状态是正常


image.png

删除集群也很简单,一键操作


image.png
image.png

所以可以看到 导入也是调用api接口 :
https://192.168.1.247:8443/v3/import

查看集群状态
包括节点使用内存,CPU等


image.png

节点


存储


image.png

https://blog.51cto.com/fengjicheng/2401714

命名空间


image.png

成员


image.png

工具
就是启用告警,监控等附加功能
image.png

进入cluster explorer看更多详细信息, 可视化大屏


image.png
image.png

右上方可以进入api 与token
这里就是对应集群和API调用方式

image.png

{

  • "apiVersion": {
    • "group": "management.cattle.io",
    • "path": "/v3",
    • "version": "v3"},
  • "baseType": "apiRoot",
  • "links": {
    • "authConfigs": "…/v3/authconfigs",
    • "catalogs": "…/v3/catalogs",
    • "cisBenchmarkVersions": "…/v3/cisbenchmarkversions",
    • "cisConfigs": "…/v3/cisconfigs",
    • "cloudCredentials": "…/v3/cloudcredentials",
    • "clusterAlertGroups": "…/v3/clusteralertgroups",
    • "clusterAlertRules": "…/v3/clusteralertrules",
    • "clusterAlerts": "…/v3/clusteralerts",
    • "clusterCatalogs": "…/v3/clustercatalogs",
    • "clusterLoggings": "…/v3/clusterloggings",
    • "clusterMonitorGraphs": "…/v3/clustermonitorgraphs",
    • "clusterRegistrationTokens": "…/v3/clusterregistrationtokens",
    • "clusterRoleTemplateBindings": "…/v3/clusterroletemplatebindings",
    • "clusterScans": "…/v3/clusterscans",
    • "clusterTemplateRevisions": "…/v3/clustertemplaterevisions",
    • "clusterTemplates": "…/v3/clustertemplates",
    • "clusters": "…/v3/clusters",
    • "composeConfigs": "…/v3/composeconfigs",
    • "dynamicSchemas": "…/v3/dynamicschemas",
    • "etcdBackups": "…/v3/etcdbackups",
    • "features": "…/v3/features",
    • "fleetWorkspaces": "…/v3/fleetworkspaces",
    • "globalDnsProviders": "…/v3/globaldnsproviders",
    • "globalDnses": "…/v3/globaldnses",
    • "globalRoleBindings": "…/v3/globalrolebindings",
    • "globalRoles": "…/v3/globalroles",
    • "groupMembers": "…/v3/groupmembers",
    • "groups": "…/v3/groups",
    • "kontainerDrivers": "…/v3/kontainerdrivers",
    • "ldapConfigs": "…/v3/ldapconfigs",
    • "managementSecrets": "…/v3/managementsecrets",
    • "monitorMetrics": "…/v3/monitormetrics",
    • "multiClusterAppRevisions": "…/v3/multiclusterapprevisions",
    • "multiClusterApps": "…/v3/multiclusterapps",
    • "nodeDrivers": "…/v3/nodedrivers",
    • "nodePools": "…/v3/nodepools",
    • "nodeTemplates": "…/v3/nodetemplates",
    • "nodes": "…/v3/nodes",
    • "notifiers": "…/v3/notifiers",
    • "podSecurityPolicyTemplateProjectBindings": "…/v3/podsecuritypolicytemplateprojectbindings",
    • "podSecurityPolicyTemplates": "…/v3/podsecuritypolicytemplates",
    • "preferences": "…/v3/preferences",
    • "principals": "…/v3/principals",
    • "projectAlertGroups": "…/v3/projectalertgroups",
    • "projectAlertRules": "…/v3/projectalertrules",
    • "projectAlerts": "…/v3/projectalerts",
    • "projectCatalogs": "…/v3/projectcatalogs",
    • "projectLoggings": "…/v3/projectloggings",
    • "projectMonitorGraphs": "…/v3/projectmonitorgraphs",
    • "projectNetworkPolicies": "…/v3/projectnetworkpolicies",
    • "projectRoleTemplateBindings": "…/v3/projectroletemplatebindings",
    • "projects": "…/v3/projects",
    • "rkeAddons": "…/v3/rkeaddons",
    • "rkeK8sServiceOptions": "…/v3/rkek8sserviceoptions",
    • "rkeK8sSystemImages": "…/v3/rkek8ssystemimages",
    • "roleTemplates": "…/v3/roletemplates",
    • "root": "…/v3",
    • "samlTokens": "…/v3/samltokens",
    • "self": "…/v3",
    • "settings": "…/v3/settings",
    • "subscribe": "…/v3/subscribe",
    • "templateVersions": "…/v3/templateversions",
    • "templates": "…/v3/templates",
    • "tokens": "…/v3/tokens",
    • "users": "…/v3/users"},
  • "type": "apiRoot"

}

rancher 和kubernetes restful API

rancher的api包括自身系统管理的和集群管理的,而集群管理的只是kubernetes API 的二次封装,本质上只是kubernete的API代理服务,所以基本操作还是和kubernetes cluster 的API一样
API 使用
http://www.dockerinfo.net/3723.html

参考
https://rancher.com/docs/rancher/v2.5/en/api/
http://www.dockerinfo.net/docker/rancher%E4%B8%AD%E6%96%87%E6%89%8B%E5%86%8C
http://www.dockerinfo.net/3607.html
https://www.kubernetes.org.cn/k8s
https://rancher.com/docs/rancher/v2.x/en/cluster-admin/cluster-access/kubectl/

代码
https://github.com/rancher/client-python 客户端API
https://github.com/rancher/cluster-api 集群API

具体对应可以参考 kubernets 命令行操作
https://segmentfault.com/a/1190000019740014
Token方式使用k8s Restful API
https://blog.csdn.net/liumiaocn/article/details/74007635

查看使用集群

提供了命令行和配置文件两种方式
命令行可以点击 launch kubectl 按键
这里也做了转换,不用加k3s,可以直接操作集群,查看信息


image.png
image.png

用apps 应用商店部署Prometheus集群

image.png
image.png
image.png
image.png
image.png
image.png
image.png

部署自己的应用

配置镜像名时注意一般是harbor上的也就是私有镜像,但是自动会解析成https的,而http的无法识别镜像
所以都将harbor改为https的


image.png

下面还可以和yaml 一样配置端口映射,存储卷等信息

image.png

rancher里 可以通过点击对象的下拉菜单中的 View In API ,查看各API信息和地址。如:

image.png
image.png

你可能感兴趣的:(rancher 操作和API)