一文学会Kubenetes可视化工具部署

一文学会Kubenetes可视化工具部署

❤️ 摘要:KubeDashboard和Kuboard是两种常见的Kubernetes可视化管理工具,它们帮助用户更直观地管理和监控Kubernetes集群。本文将介绍这两种工具的功能和组件,并对比它们的优势与适用场景,接着带着读者一步一步完成Kuboard的搭建和简单应用。本文适合希望深入了解并部署 Kubernetes可视化的开发者或者系统管理员阅读。


目录

1. 概念

1.1 KubeDashboard

KubeDashboard是Kubernetes官方提供的可视化界面,主要用于管理集群的资源和应用。它可以简化系统管理员的操作并能直观管理Kubernetes集群,例如创建、监控Pod、Service、deployment等资源,查看日志、管理命名空间等任务。

主要功能:

  • 查看集群资源(如Pod、Deployment、DaemonSet等)。
  • 管理工作负载:创建、更新和删除工作负载资源。
  • 查看应用程序的运行状态、日志和事件。
  • 管理Kubernetes凭证,例如ConfigMap和Secret。

1.2 Kuboard简介

Kuboard是一款国产的基于Kubernetes的用户友好型可视化管理工具,尤其适合初学者和中小型团队。它支持丰富的集群监控、资源管理以及滚动更新、蓝绿部署等功能,并且具备相对简单的安装过程和优秀的用户体验。

主要功能:

  • 支持丰富的可视化集群监控。
  • 管理多集群、多租户。
  • 提供详细的Pod调度、服务发现等可视化。
  • 支持CI/CD集成,提供流水线执行可视化。
  • 提供了更为复杂的部署操作,如蓝绿部署、滚动更新。

1.3 KubeDashboard与Kuboard对比

对比项 KubeDashboard Kuboard
提供商 Kubernetes官方 国内优秀项目,针对企业需求优化
用户体验 简洁,功能有限,适合基础操作 界面更加友好,功能丰富,适合复杂场景
登录方式 只能通过 Bearer Token 或 kubeconfig 文件登录 支持账密登录、LDAP集中认证、Github/Gitlab单点登录等多种方式
部署复杂度 简单,目前仅支持基于 Helm 的安装 简单,支持docker、Kubernetes等多种方式部署
功能深度 提供基础的集群管理和监控功能 支持多集群、多租户及更复杂的部署方式
CI/CD支持 无CI/CD功能 支持CI/CD集成,适合DevOps场景
适用场景 适合初学者,快速了解K8s资源情况 适合企业级应用,支持更复杂的K8s运维管理

2. Kuboard部署实践

❔ 说明:Kuboard官方强烈建议您使用 docker run或者 static-pod的方式安装 kuboard,我默认认为我的读者都是有一定的Linux和Kubernetes基础的, 所以以下演示案例会将Kuboard部署在Kubernetes集群中。

2.1 使用 hostPath 为Kuboard提供持久化

2.1.1 安装Kuboard

下载yaml部署文件

curl -o kuboard-v3.yaml https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml

修改kuboard-v3.yaml

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: kuboard-v3-config
  namespace: kuboard
data:
  # [common]
  # 修改Kuboard的启动端口
  KUBOARD_SERVER_NODE_PORT: '30088'

---
apiVersion: v1
kind: Service
metadata:
  annotations: {
   }
  labels:
    k8s.kuboard.cn/name: kuboard-v3
  name: kuboard-v3
  namespace: kuboard
spec:
  ports:
    - name: web
      # 修改Kuboard的暴露端口
      nodePort: 30088

  • 镜像替换成私有仓库地址
---
containers:
        - env:
            - name: HOSTNAME
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: spec.nodeName
            - name: HOSTIP
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: status.hostIP
          # 修改私有仓库地址
          image: 'harbor.zx/hcie/etcd-host:3.4.16-2'
          # 修改镜像拉取策略
          imagePullPolicy: IfNotPresent

---
      containers:
        - env:
            - name: HOSTIP
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: status.hostIP
            - name: HOSTNAME
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: spec.nodeName
          envFrom:
            - configMapRef:
                name: kuboard-v3-config
          # 修改私有仓库地址
          image: 'harbor.zx/hcie/kuboard:v3'
          # 修改镜像拉取策略
          imagePullPolicy: IfNotPresent

部署节点亲和性

    spec:
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - preference:
                matchExpressions:
                  - key: node-role.kubernetes.io/master
                    operator: Exists
              weight: 100
            - preference:
                matchExpressions:
                  - key: node-role.kubernetes.io/control-plane
                    operator: Exists
              weight: 100

❔ 说明:kuboard会部署在有node-role.kubernetes.io/masternode-role.kubernetes.io/control-plane这两个标签的节点上。关于节点亲和度,后面文章会详细说明,敬请期待

查看节点的label:

[root@k8s-master1 ~]# kubectl get node --show-labels |grep node-role

  • 发现master节点并没有这两个标签,可能是二进制部署k8s环境默认没有这两个label

为master节点添加label,执行以下命令:

kubectl label node k8s-master${i} node-role.kubernetes.io/master=

kubectl label node k8s-master${i} node-role.kubernetes.io/control-plane=

如果您的Kubernetes集群有多个master节点,可以执行for循环添加label到全部节点:

for i in {
   1..3};do kubectl label node k8s-master${i} node-role.kubernetes.io/master=;done

for i in {
   1..3};do kubectl label node k8s-master${i} node-role.kubernetes.io/control-plane=;done

部署kuboard-v3

kubectl apply -f kuboard-v3.yaml

查看部署情况

[root@k8s-master1 ~]# kubectl -n kuboard get pod
NAME                         READY   STATUS    RESTARTS   AGE
kuboard-etcd-54hsl           1/1     Running   0          3m
kuboard-etcd-tndsc           1
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StevenZeng学堂

🎉 每笔打赏都是我分享的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值