Kuboard云原生管理工具

这篇文章 Sentinel云原生K8S部署实战记录了以下过程

  • sentinel源码打包
  • 编译生成docker镜像
  • 通过k8s部署以及网关服务对接sentinel的过程

在这个过程中遇到了几个问题以及是如何解决的?

问题简介

  • 日志目录问题

  • 如何图形界面化管理云原生资源 -- kuboard

日志目录问题定位以及解决过程

使用场景

生成稳定版本tar包的过程

将tar包上传到行内使用openshif云原生部署

问题现象

pod始终启不来 查看pod的日志

/??/logs/csp/ 无权限访问异常

分析问题

由报错信息可以初步得到结论:生成日志文件的时候 没有权限写入

so 将注意力放在sentinel日志文件这里

首先查看Dockerfile 确认docker容器中的启动用户在什么目录下是有权限的

发现docker容器内启动的话 在/app目录下是有权限访问的

那么如果日志文件在/app目录下生成 则不会报没有权限写入日志的问题
则初步判断 日志文件在非/app目录下生成了

查看sentinel源码的日志文件配置

发现在配置文件中的日志路径配置
logging.file=${user.home}/logs/csp/sentinel-dashboard.log
在当前用户目录下生成日志文件

我本地环境是mac系统mengfanxiao用户
所以在/Users/mengfanxiao/目录下生成该日志文件

那么我将
logging.file=${user.home}/logs/csp/sentinel-dashboard.log
修改成
logging.file=/app/logs/csp/sentinel-dashboard.log目录
启动jar包
发现在/Users/mengfanxiao/目录下还会生成另外两个日志文件
command-center.log
sentinel-record.log
既然这两个日志文件生成路径没有在配置文件中生成
那么则是在代码中写死的
全局搜索sentinel源码这2个日志
由此知道了 生成这2个日志文件还是在当前用户目录下生成的
所以这里需要修改成
截止目前生成的日志文件都写到了/app目录下

解决问题

将日志输出目录写到/app目录下 然后重新打包、编译镜像、生成tar包、上传行内镜像库、通过openshift部署 启动pod查看sentinel启动日志成功了

问题原理分析简介

k8s启动docker容器 容器内默认是通过root用户启动的

openshift启动docker不支持用root用户启动 但在没有创建用户的情况下 就不能确定当前用户是谁

如果生成的日志文件目录在当前用户所在的目录下 所以就会出现问题

通过kuboard来图形界面化管理云原生

安装kuboard

docker run -d \
  --restart=unless-stopped \
  --name=kuboard \
  -p 7777:80/tcp \
  -p 10081:10081/tcp \
  -e KUBOARD_ENDPOINT="http://192.168.43.21:7777" \
  -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
  -v /opt/docker/kuboard-data:/data \
  swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3

访问dashboard

http://localhost:7777/kuboard/cluster

通过agent方式配置k8s集群

手动启动agent服务

curl -k 'http://192.168.43.21:7777/kuboard-api/cluster/k8s-local/kind/KubernetesCluster/k8s-local/resource/installAgentToKubernetes?token=guv3lsUhuTf4G1RJYRpc3AWIaf5oEL7X' > kuboard-agent.yaml

kubectl apply -f ./kuboard-agent.yaml

"注意我这里修改了端口号80-->7777"

代理服务起来之后 k8s就可以访问kuboard了

通过kuboard查看k8s集群

可以看到sentinel容器

可以查看日志 可以通过ssh进入容器内部

相较于 Kubernetes Dashboard 等其他 Kubernetes 管理界面,Kuboard 的主要特点有

  • 多种认证方式
Kuboard 可以使用内建用户库
、gitlab / github 单点登录
或者 LDAP 用户库进行认证
避免管理员将 ServiceAccount 的 Token 分发给普通用户而造成的麻烦
使用内建用户库时,管理员可以配置用户的密码策略、密码过期时间等安全设置
  • 多集群管理
管理员可以将多个 Kubernetes 集群导入到 Kuboard 中
并且通过权限控制
将不同集群/名称空间的权限分配给指定的用户或用户组
  • 微服务分层展示
在 Kuboard 的名称空间概要页中
以经典的微服务分层方式将工作负载划分到不同的分层
更加直观地展示微服务架构的结构
并且可以为每一个名称空间自定义名称空间布局
  • 工作负载的直观展示
Kuboard 中将 Deployment 的历史版本
所属的 Pod 列表
Pod 的关联事件
容器信息合理地组织在同一个页面中
可以帮助用户最快速的诊断问题和执行各种相关操作
  • 工作负载编辑
Kuboard 提供了图形化的工作负载编辑界面
用户无需陷入繁琐的 YAML 文件细节中
即可轻松完成对容器的编排任务
支持的 Kubernetes 对象类型包括:
Node、Namespace、Deployment、StatefulSet、
DaemonSet、Secret、ConfigMap、Service、
Ingress、StorageClass、PersistentVolumeClaim、
LimitRange、ResourceQuota、ServiceAccount、
Role、RoleBinding、ClusterRole、ClusterRoleBinding、
CustomResourceDefinition、CustomResource 
等各类常用 Kubernetes 对象
  • 存储类型支持
在 Kuboard 中
可以方便地对接 NFS、CephFS 等常用存储类型
并且支持对 CephFS 类型的存储卷声明执行扩容和快照操作
  • 丰富的互操作性
 可以提供许多通常只在 `kubectl` 命令行界面中才提供的互操作手段,例如:

  * Top Nodes / Top Pods
  * 容器的日志、终端
  * 容器的文件浏览器(支持从容器中下载文件、上传文件到容器)
  * KuboardProxy(在浏览器中就可以提供 `kubectl proxy` 的功能)
  • 套件扩展
  Kuboard 提供了必要的套件库,使得用户可以根据自己的需要扩展集群的管理能力。当前提供的套件有:

  * 资源层监控套件,基于 Prometheus / Grafana 提供 K8S 集群的监控能力,可以监控集群、节点、工作负载、容器组等各个级别对象的 CPU、内存、网络、磁盘等资源的使用情况;
  * 日志聚合套件,基于 Grafana / Loki / Promtail 实现日志聚合;
  * 存储卷浏览器,查看和操作存储卷中的内容;
  • 告警配置
可以通过界面直接配置资源层监控套件发送告警消息:

  * 支持邮件、微信发送告警消息;
  * 支持告警路由配置;
  * 支持告警规则配置等;
  • 操作审计
Kuboard 支持操作审计的功能:

  * 审计用户通过 Kuboard 界面和 Kuboard API 执行的操作;
  * 自定义审计规则;
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐