铁科经纬(西安)信息科技有限公司

语言

容器平台

容器平台是一个kubernetes可视化管理面板,专注于帮助企业规划、部署和运营生产级别的kubernetes集群。容器平台提供高度可扩展的、高性能的企业级kubernetes集群,支持docker容器。借助容器平台,可以在云上轻松部署、管理和扩展容器化应用程序。

主要功能

集群管理

一站式容器管理

中间件市场

名词解释

集群

是指容器运行所需云资源的集合,包含了若干台云服务器、负载均衡器等云资源。

实例(**Pod**)

由相关的一个或多个容器构成一个实例,这些容器共享相同的存储和网络空间。

工作负载

Kubernetes资源对象,用于管理Pod副本的创建、调度以及整个生命周期的自动控制。

Service

由多个相同配置的实例(Pod)和访问这些实例(Pod)的规则组成的微服务。

Ingress

Ingress是用于将外部HTTP(S)流量路由到服务(Service)的规则集合。

Helm应用

Helm是管理Kubernetes应用程序的打包工具,提供了Helm Chart在指定集群内图形化的增删改查。

镜像仓库

用于存放Docker镜像,Docker镜像用于部署容器服务。

基础知识

Kubernetes是什么

Kubernetes是一个很容易地部署和管理容器化的应用软件系统,使用Kubernetes能够方便对容器进行调度和编排。

对应用开发者而言,可以把Kubernetes看成一个集群操作系统。ubernetes提供服务发现、伸缩、负载均衡、自愈甚至选举等功能,让开发者从基础设施相关配置等解脱出来。

Kubernetes集群架构

Kubernetes集群包含master节点和node节点,应用部署在node节点上,且可以通过配置选择应用部署在某些特定的节点上。

1641903123536

Master节点

Master节点是集群的控制节点,由API Server、Scheduler、Controller Manager和ETCD四个组件构成。

• API Server:各组件互相通讯的中转站,接受外部请求,并将信息写到ETCD中。

• Controller Manager:执行集群级功能,例如复制组件,跟踪Node节点,处理节点故障等等。

• Scheduler:负责应用调度的组件,根据各种条件(如可用的资源、节点的亲和性等)将容器调度到Node上运行。

• ETCD:一个分布式数据存储组件,负责存储集群的配置信息。

在生产环境中,为了保障集群的高可用,通常会部署多个master,一般高可用模式就是3个master节点。

Node节点

Node节点是集群的计算节点,即运行容器化应用的节点。

kubelet:kubelet主要负责同Container Runtime打交道,并与API Server交互,管理节点上的容器。

kube-proxy:应用组件间的访问代理,解决节点上应用的访问问题。

Container Runtime:容器运行时,如,最主要的功能是下载镜像和运行容器。

Kubernetes对象的描述

Kubernetes使用YAML描述,也可以使用JSON。其内容可以分为如下四个部分:

• typeMeta:对象类型的元信息,声明对象使用哪个API版本,哪个类型的对象。

• objectMeta:对象的元信息,包括对象名称、使用的标签等。

• spec:对象的期望状态,例如对象使用什么镜像、有多少副本等。

• status:对象的实际状态,只能在对象创建后看到,创建对象时无需指定。

1641903178357

更多Kubernetes相关知识,请参见 https://kubernetes.io/docs/concepts/

资源管理

计算

入口:在资源管理——计算中将计算节点添加进容器平台管理目标

节点是容器集群组成的基本元素。节点取决于业务,既可以是虚拟机,也可以是物理机。在容器平台中,主要采用裸金属服务器作为节点构建高可用的kubernetes集群。

前置条件:已安装操作系统。要求:CentOS

1641903280161

计算节点列表中集群管理字段没有集群的,可用来构建集群;已经成为集群节点的不可以在加入别的集群。

添加计算节点

.在计算资源列表中点击【添加】按钮

2.在添加页面输入连接参数及名称

3.点击【添加】即可将该计算节点添加至容器平台

4.若您使用该计算资源作为集群基础设施,目前仅支持centos(7.8或7.9)

1641903338031

字段解释

查看计算节点信息

1.在计算资源列表中点击节点名称

2.页面右侧展示出该节点信息

3.点击详情页面右上角【x】可关闭详情,返回列表

4.点击页面非详情区域也可关闭详情,返回列表

1641903424825

删除计算节点

1.在计算资源列表中选中要删除的节点

2.点击列表上方【删除】,或点击操作栏的删除图标

3.在弹出的确认框中点击确定即可完成删除

4.关联集群的节点不可以被删除

1641903436773

1641903443707

存储

容器平台提供存储服务器管理,在后续创建集群时,可在资源管理——存储中的存储服务器纳入集群。

一个存储服务器仅可以接入一个集群,当前仅支持NFS类型的存储服务器。

前置条件:已安装NFS。

点击名称可查看该nfs详情。

1641903653103

添加存储服务器

1.在存储列表中点击【添加】按钮

2.在添加页面输入存储服务器信息

3.点击【添加】即可将该存储服务器添加至容器平台

4.目前仅支持类型的存储服务器

1641903681394

删除存储服务器

1.在计算资源列表中选中要删除的节点

2.点击列表上方【删除】,或点击操作栏的删除图标

3.在弹出的确认框中点击确定即可完成删除

4.关联集群的存储服务器不可以被删除

1641903704407

中间件

在容器平台资源管理——中间件中,可以获取容器平台提供的应用商店,并将中间件部署至容器平台管理的集群中。

应用商店使用helm做包管理。Helm是一个kubernetes包管理器(类似于OS包管理器,比如Linux中的yum、apt,或者MacOS中的 homebrew),将helm包上传至应用商店仓库中,便可以使用容器平台部署并管理软件。

1641903913343

Helm核心术语

chart基本机构

Helm的打包格式叫做chart,所谓chart就是一系列文件, 它描述了一组相关的 k8s 集群资源。Chart中的文件按照特定的目录结构组织,最简单的chart 目录如下所示:

1641903966370

​ Chart文件基本结构由以下几部分组成:

1641904023892

中间件部署

通过资源管理——中间件——应用商店

查看平台提供的中间件,点击中间件卡片查看中间件描述和版本。

在应用部署中输入部署配置即可将中间件部署到集群中。

1641904198708

中间件详情

通过资源管理——中间件——我的部署查看已部署中间件。点击中间件卡片进入中间件查看详情

可查看中间件的基本信息、安装信息以及认证信息以及资源等

1641904258057

1641904270955

证书

容器平台通过cert-manager为服务签发证书。

资源管理——证书中生成证书或导入证书

导入

在证书页面中点击【导入】按钮

通过拖拽的方式将公钥文件和私钥文件上传,点击【确定】即可完成证书导入

1641904445116

添加

通过添加的方式可以生成根证书和普通证书。

在证书页面中点击【添加】按钮,进入添加页面

可根据需要选择添加根证书或普通证书。

普通证书

类型选择普通证书证书并选择根证书,输入相关信息

1641904511956

根证书

类型选择根证书并输入相关信息

1641904531444

字段含义

CN:对于ssl证书,一般为网站域名;对于代码签名证书则为申请单位而对于客户端证书则为证书申请者姓名

O:对于 SSL 证书,一般为网站域名;而对于代码签名证书则为申请单位名称;而对于客户端单位证书则为证书申请者所在单位名称;

C:所在国家字母缩写,如中国:CN

S:所在省份

STREET:地址

L:所在城市

OU:显示其他内容

工作负载

Pods

一个Pod(就像一群鲸鱼,或者一个豌豆夹)相当于一个共享context的配置组,在同一个context下,应用可能还会有独立的cgroup隔离机制,一个Pod是一个容器环境下的“逻辑主机”,它可能包含一个或者多个紧密相连的应用,这些应用可能是在同一个物理主机或虚拟机上。

通过工作负载——Pods查看所有pod

1641904610854

一个由运行镜像nginx:1.14.2的容器组成的pod示例

1641904624065

Pod详情

在Pods列表中点击pod名称进入详情

1641904660773

点击【YMAL】查看该pod的yaml文件

1641904672444

部署

Deployment(部署)为Pod和ReplicaSet提供了一个声明式定义(declarative)方法。典型应用场景包括

一个简单的nginx应用可以定义为

1641904738856

通过工作负载——部署查看所有pod

1641904749740

部署详情

在部署列表中点击部署名称进入详情

1641904780549

点击【YMAL】查看该部署的yaml文件

1641904792878

创建部署

1641904820465

任务

Job(任务)用来创建1个或多个Pod,并保证指定数量(.spec.completions)的Pod成功完成。当一个Pod成功完成时(.status.phase=Succeeded),Job会记录已完成的Pod的数量,但完成的数量达到指定值时,这个Job就完成了。

Kubernetes支持以下几种Job:

1641904850642

一个简单的例子

1641904857075

任务详情

在部署列表中点击任务名称进入详情

1641904905742

点击【YMAL】查看该任务的yaml文件

1641904917431

创建任务

1641904942204

服务

ubernete Service 是一个定义了一组Pod的策略的抽象,我们也有时候叫做宏观服务。这些被服务标记的Pod都是(一般)通过label Selector决定的。Kubernetes Pod是平凡的,它门会被创建,也会死掉(生老病死),并且他们是不可复活的。 ReplicationControllers动态的创建和销毁Pods(比如规模扩大或者缩小,或者执行动态更新)。每个pod都由自己的ip,这些IP也随着时间的变化也不能持续依赖。这样就引发了一个问题:如果一些Pods(让我们叫它作后台,后端)提供了一些功能供其它的Pod使用(让我们叫作前台),在kubernete集群中通过服务让这些前台能够持续的追踪到这些后台。

1641904992846

一个简单的例子,这是一个名称为“my-service”的服务,它指向标签app=MyApp,协议是TCP,端口为9376的对象。

1641904984993

服务详情

在部署列表中点击部署名称进入详情

1641905014658

点击【YMAL】查看该部署的yaml文件

1641905027623

创建服务

集群管理

选择集群管理,可查看当前已纳入容器管理平台的集群列表

1641905114763

自动创建

选择集群管理,可查看当前已纳入容器管理平台的集群列表

点击【添加】按钮开始自动创建集群

前置条件:在计算中至少有2台主机,容器平台所在主机不可以被纳入

主机需求

角色 操作系统 最低配置 推荐配置
容器平台(部署机) CentOS7.8 4G,8G 4G,16G
Master CentOS7.8 2G,4G 4G,8G
Worker CentOS7.8 2G,4G 4G,8G

1641905151267

第一步:集群信息

提供商、版本、架构仅支持当前方式

1641905170023

第二步:集群设置

1641905184148

第三步:运行时设置

Container 子网默认

1641905216162

第四步:容器网络设置

多网络设置:可禁用,或通过网卡或网段

1641905230904

1641905246205

第五步:组件设置

1641905269588

第六步:节点信息

1641905291088

第七步:确认信息

确认信息无误后点击【完成】开始创建集群

1641905296709

在集群列表中可以看到新建集群的状态

点击状态弹出状态详情

点击【日志】可以查看创建集群的日志

初始化完成后集群状态会变为运行中,集群名称变为蓝色

1641905313445

1641905321296

1641905328901

导入集群

1.在集群列表页面点击【导入】

1641905350120

2.导入集群页面输入集群信息

1641905357567

3.点击【添加】即可将集群添加至容器平台中

1641905363605

删除集群

1.在集群列表中选中要删除的集群,点击删除按钮

2.在要删除的集群操作栏中点击删除图标

3.在确认弹框中点击确定即可删除集群

使用容器平台创建的集群删除将会彻底删掉K8S集群,导入的集群仅仅解除关系,不会删掉K8S集群

1641905397294

集群信息

概览

在集群列表中点击集群名称即可查看该集群详细信息。安装成功的集群才能被查看。

1641905454710

K8s存储

关注容器集群的存储编排,从应用使用存储的角度关注存储服务

名词解释

K8s持久化存储

PV与PVC

1641905556978

根据PV的创建方式可以将存储卷分为动态存储和静态存储。

由集群管理员配置好后端的存储池,并创建相应的模板—存储类(storageclass),等到有 PVC 需要消费 PV 的时候,根据 PVC 定义的需求,并参考 storageclass 的存储细节,由 Provisioner 插件动态创建一个 PV。

动态卷的实现流程

StorageClasss 模板定义示例

1641905604192

存储提供商

在集群详情——存储中设置存储提供商(provisioner),支持的类型是nfs

点击添加为集群添加存储提供商

需要指定nfs服务端版本、IP、和共享目录。涉及nfs服务器的配置参数需要联系nfs管理员获取

1641905651480

1641905663589

存储

在集群详情——存储——存储类中查看当前集群的存储类

点击列表上方【添加】为集群添加存储类

输入存储类名称并选择提供商,点击【提交】即可添加存储类

其中,存储类中的回收策略默认为delete,卷绑定模式为immediate

1641905680747

1641905687061

备份

在备份策略中按需输入备份参数,需要选择备份账号,若无账号,需先添加备份账号

点击提交生成备份策略

提交策略后集群按策略开始周期备份

也可点击【立即备份】立即生成备份快照

1641905753014

新建备份账号

在备份账号下拉菜单中选择【新建备份账号】

联系平台人员获取minio账号并输入

选择备份位置(桶)

点击确定完成账号添加

备份策略下拉框选择出现刚才添加的账号

1641905770723

备份恢复

• 集群备份:支持立即本分、定时备份

• 集群恢复:支持备份列表数据恢复和本地备份文件恢复(上传etcd快照)

1641905793598

运维大盘

平台支持提供基于 Prometheus 监控工具和 Grafana 可视化平台的监控方案,监控面板中预置了一些已配置的监控面板,覆盖了主要监控场景所需的监控指标,支持对集群以及集群下的节点、功能组件、计算组件(Deployment、DaemonSet、DaemonSet)、Pod、容器等相关指标进行实时监控。

通过监控告警**——**运维大盘查看监控信息

资源使用情况可通过顶部导航栏的集群切换入口,快速切换集群

1641905831969

1641905836202

集群监控

平台提供应用维度的监控信息

通过监控告警——应用监控进入

进入应用资源监控,可以查看应用用量排行

在使用情况中可以按集群/命名空间查看应用资源使用情况及应用中集群使用情况,支持按时间查看

1641905864666

1641905869581

日志中心

平台会采集并保存系统日志、产品日志、Kubenetes 日志、自定义应用日志,平台管理员或运维人员,可通过顶部导航栏切换集群、应用、组件查看日志,支持按时间过滤日志

1641905889562

授权中心

RBAC

Kubernetes中完成授权工作的就是RBAC机制,RBAC授权规则是通过四种资源来进行配置。

1641905935965

容器平台通过友好的可视化界面实现Kubernetes RBAC和用户管理,提供kubernetes权限管理。通过友好的web接口发布kubeconfig YAML文件。

1641905948586

点击授权中心进入容器平台权限管理

如需添加模板,请联系集群管理员

TEMPLATE模板

一个模板就是一个带有下列前缀的ClusterRole,如:template-namespaced-resources___developer

新增模板

可以通过“template-namespaced-resources___”创建并部署一个ClusterRole

默认模板

“developer”和“operation”默认模板可以通过部署“k8s/k8s-seeds/seed.yml”中的manifest来创建:

1641906014027

用户

一个用户,即是一种permissionmanagerusers.permissionmanager.user自定义资源

seed.yml示例

1641906048799

添加用户

1.在授权中心页面点击【添加】按钮,进入添加页

2.输入用户名称并选择授权集群,仅支持在容器平台中创建的集群,导入的集群不支持

3.为用户选择角色模板和授权命名空间,一个用户可以由多个角色授权

4.添加后即可生成用户kubeconfig yaml文件

1641906090472