Kuboard云原生管理工具
Kuboard云原生管理工具这篇文章Sentinel云原生K8S部署实战记录了以下过程sentinel源码打包编译生成docker镜像通过k8s部署以及网关服务对接sentinel的过程在这个过程中遇到了几个问题以及是如何解决的?问题简介日志目录问题如何图形界面化管理云原生资源 -- kuboard日志目录问题定位以及解决过程使用场景生成稳定版本tar包的过程将tar包上传到行内使用openshi
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 执行的操作;
* 自定义审计规则;
更多推荐
所有评论(0)