k8s部署dashboard kubepi

1. KubePi 简介

KubePi 是一个开源的 Kubernetes 多集群管理面板,提供以下核心功能:

  • 多集群管理:支持接入多个 Kubernetes 集群统一管理。
  • 可视化操作:提供资源(Pod、Deployment、Service 等)的创建、删除、监控功能。
  • 权限控制:基于角色的访问控制(RBAC),支持多租户隔离。
  • 监控与日志:集成 Prometheus、Grafana 和日志收集组件。
  • 安全审计:操作记录和审计日志。

适用场景:

  • 需要集中管理多个 Kubernetes 集群的团队。
  • 希望简化 Kubernetes 资源操作的开发者和运维人员。
  • 需要可视化监控和告警的集群管理员。

2. 系统要求

2.1 硬件要求

  • 组件    最低配置    推荐配置
    CPU    2 核    4 核
    内存    4GB    8GB
    存储    20GB    50GB(需持久化)

2.2 软件依赖

  • Kubernetes 集群:版本 ≥ 1.18
  • Docker:版本 ≥ 20.10(若使用 Docker 部署)
  • NFS 服务器:用于持久化存储(可选,但生产环境推荐)

2.3 网络要求

  • 开放端口:
  • 80/8000:KubePi Dashboard 访问端口。
  • 30000-32767:NodePort 范围(若使用 Service 暴露服务)。

3.kubepi部署

3.1 nfs部署

3.2 kubepi 部署pv、pvc

# kubepi-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: kubepi-pv
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain  # 保留数据(生产建议)
  nfs:
    path: /nfs_share/k8s/kubepi/pv1           # NFS服务器共享路径
    server: 172.16.4.60       # NFS服务器IP
---
# kubepi-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: kubepi-pvc
  namespace: kubepi
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi
  volumeName: kubepi-pv  # 显式绑定到指定PV(可选)
kubectl apply -f kubepi-pv.yaml

3.3 kubepi 部署deployment

  • 需增加特权模式,privileged: true,否则在kubepi无法跳转命令行
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubepi
  namespace: kubepi
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kubepi
  template:
    metadata:
      labels:
        app: kubepi
    spec:
      containers:
      - name: kubepi
        image: 172.16.4.17:8090/ltzx/kubeoperator/kubepi-server:latest
        ports:
        - containerPort: 80
        securityContext:          # 新增安全上下文
          privileged: true       # 启用特权模式(等效 --privileged)
        volumeMounts:
        - mountPath: /var/lib/kubepi
          name: kubepi-data
      volumes:
      - name: kubepi-data
        persistentVolumeClaim:
          claimName: kubepi-pvc
kubectl apply -f kubepi-deployment.yaml

3.4 kubepi 部署service

# kubepi-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: kubepi-service
  namespace: kubepi  # 指定命名空间
spec:
  type: NodePort
  selector:
    app: kubepi
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30081
kubectl apply -f kubepi-svc.yaml

3.5 kubepi web 控制台登陆

http://master-IP:30081
admin/kubepi #默认账号密码

3.6 kubepi修改默认密码

  • 可以在登陆到kubepi web 控制台后进行密码修改

3.7kubepi导入k8s集群

3.7.1. 创建 ServiceAccount (SA)

kubectl create sa ampadmin --namespace kube-system
  • 作用:在 kube-system 命名空间中创建一个名为 ampadmin 的 ServiceAccount。
  • 用途:ServiceAccount 是 Kubernetes 中用于身份认证的实体,通常用于 Pod 或外部服务与 Kubernetes API 交互。
  • 输出:serviceaccount/ampadmin created 表示创建成功。

3.7.2. 绑定 ClusterRole

kubectl create clusterrolebinding ampadmin --clusterrole=cluster-admin --serviceaccount=kube-system:ampadmin
  • 作用:将 ampadmin ServiceAccount 绑定到 Kubernetes 内置的 cluster-admin ClusterRole。
  • cluster-admin 是 Kubernetes 的超级管理员角色(拥有集群最高权限)。
  • 此操作意味着 ampadmin 账号获得了对整个集群的完全控制权。
  • 输出:clusterrolebinding.rbac.authorization.k8s.io/ampadmin created 表示绑定成功。

3.7.3. 获取 ServiceAccount 的 Token

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ampadmin | awk '{print $1}') | grep token: | awk '{print $2}'
  • 目的:提取 ampadmin ServiceAccount 的认证 Token,用于通过 Kubernetes API 进行身份验证。

3.7.4. 最终输出

  • 结果:该命令会返回一个长字符串(类似 eyJhbGciOiJSUzI1NiIsImtpZ...),这是 ampadmin ServiceAccount 的 JWT Token
  • 用途:此 Token 可用于:kubepi 导入k8s集群的  Bearer Token 

3.7.5 在master节点获取apiserver地址

cat ~/.kube/config | grep server: | awk '{print $2}'
  • 获取结果 https://IP:6443

3.7.6 在下边输入名称、API Server、Bearer Token即可进入集群,并管理

  • 点击确定后,即可进入k8s集群

 

至此 kubepi 就部署完了!!!

 

posted @   Leonardo-li  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示