引言
随着容器技术的普及,Kubernetes(K8s)成为了容器编排领域的领导者。在K8s集群的日常运维中,监控是确保集群稳定运行的关键。以下是一些不容错过的容器监控神器,它们可以帮助您更有效地管理和监控K8s集群。
一、Kuboard
Kuboard是一个用于管理和监控K8s集群的Web界面工具,它提供了直观的用户界面,使用户能够轻松查看和操作K8s中的资源。
特点:
- 多种认证方式:内建用户库、Gitlab/GitHub单点登录、LDAP用户库
- 多集群管理:将多个K8s集群导入Kuboard,通过权限控制,将不同集群/名称空间权限分配给用户/组
- 微服务分层展示:以经典的微服务分层方式将工作负载划分到不同层,直观展示微服务架构的结构
- 存储类型支持:方便对接NFS、CephFS等常用存储类型,支持对CephFS类型存储卷执行扩容和快照操作
- 丰富的互操作性:可以通过通常在命令行界面才提供的互操作手段
安装:
建议通过docker安装:
docker run -d --restartunless-stopped --name kuboard -p 80:80/tcp -p 10081:10081/tcp -e KUBOARDENDPOINT"http://:80" -e KUBOARDAGENTSERVERTCP PORT"10081" -v /root/kuboard-data:/data eipwork/kuboard:v3
在浏览器中输入地址,即可访问。
二、Kubetail
Kubetail是一个简单Shell脚本,它可以将多个Pod中的日志信息聚合到一起进行展示,并支持彩色输出和条件过滤。
安装:
使用brew安装:
brew tap johanhaleby/kubetail && brew install kubetail
三、Stern
Stern是使用Go语言开发的一款开箱即用的简单工具,它可以将多个Pod中的日志信息聚合到一起进行展示,并支持彩色输出和条件过滤。
使用:
直接在终端运行:
Stern
四、Cobra + Client-go
Cobra和Client-go是两个强大的工具,可以用来开发自定义的K8s监控插件。
开发步骤:
- 初始化项目,创建一个新的Go项目,并引入Cobra和Client-go的依赖。
- 使用Cobra构建CLI应用程序。
- 使用Client-go与K8s API Server交互。
示例代码:
package main
import (
"fmt"
"os"
"github.com/spf13/cobra"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
)
var rootCmd = &cobra.Command{
Use: "k8s-plugin",
Short: "k8s-plugin is a k8s monitoring tool",
}
func main() {
rootCmd.Execute()
}
func init() {
// Use configfile to load k8s configuration
config, err := clientcmd.BuildConfigFromFlags("", "/path/to/kubeconfig")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
k8sClient, err := kubernetes.NewForConfig(config)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
rootCmd.AddCommand(listPodsCmd)
}
var listPodsCmd = &cobra.Command{
Use: "list-pods",
Short: "List all pods in the cluster",
}
func init() {
listPodsCmd.Run = func(cmd *cobra.Command, args []string) {
pods, err := k8sClient.CoreV1().Pods("").List(metav1.ListOptions{})
if err != nil {
fmt.Println(err)
os.Exit(1)
}
for _, pod := range pods.Items {
fmt.Println(pod.Name)
}
}
}
五、总结
以上这些容器监控神器可以帮助您更有效地管理和监控K8s集群。希望这些工具能帮助您在K8s集群的日常运维中更加得心应手。