当前位置: 首页 > news >正文

【云原生丨Kubernetes系列⑥】集群的WEB UI管理⼯具:Dashboard 插件

前言

Kubernetes Dashboard 是 k8s集群的⼀个 WEB UI管理⼯具,代码托管在 github 上。

在这里插入图片描述

文章目录

  • 前言
  • 介绍
  • 插件安装
    • 配置dashboard-service
    • 配置dashboard-controller
  • 身份认证
    • 生成token
  • 访问Dashboard
    • 通过 kubectl proxy 访问 dashboard
    • 通过 kube-apiserver 访问dashboard


介绍

Dashboard(仪表盘)是基于Web的Kubernetes用户界面。

  • 可以使用仪表盘将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障排除,并管理集群本身机器伴随资源。
  • 可以使用仪表盘来概述集群上运行的应用程序,以及创建或修改单个Kubernetes资源(例如部署,作业,守护进程等)。

例如:可以使用部署向导扩展部署,启动滚动更新,重新启动Pod或部署新应用程序。仪表盘还提供有关集群中Kubernetes资源状态以及可能发生的任何错误的信息。


插件安装

直接使⽤官⽅的配置⽂件安装即可:

$ wget https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommende d/kubernetes-dashboard.yaml

为了测试⽅便,我们将 Service 改成 NodePort 类型,然后直接部署新版本的 dashboard 即可。

$ kubectl create -f kubernetes-dashboard.yaml

然后我们可以查看 dashboard 的外⽹访问端⼝:

$ kubectl get svc kubernetes-dashboard -n kube-system 
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE 
haproxy ClusterIP 10.254.125.90 <none> 8440/TCP,8442/TCP 2d 
kubernetes-dashboard NodePort 10.254.122.185 <none> 443:31694/TCP 10s 

然后直接访问集群中的任何⼀个节点 IP 加上上⾯的31694端⼝即可打开 dashboard ⻚⾯了

由于 dashboard 默认是⾃建的 https 证书,该证书是不受浏览器信任的,所以我们需要强制跳转 就可以了。

默认 dashboard 会跳转到登录⻚⾯,我们可以看到 dashboard 提供了 Kubeconfig 和 token 两种登录 ⽅式,我们可以直接跳过或者使⽤本地的 Kubeconfig ⽂件进⾏登录,可以看到会跳转到如下⻚⾯:
在这里插入图片描述这是由于该⽤户没有对 default 命名空间的访问权限。

配置dashboard-service



# cat dashboard-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: kubernetes-dashboard
  namespace: kube-system
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
spec:
  type: NodePort 
  selector:
    k8s-app: kubernetes-dashboard
  ports:
  - port: 80
    targetPort: 9090

指定端口类型为 NodePort,这样外界可以通过地址 nodeIP:nodePort 访问 dashboard;

配置dashboard-controller



# cat dashboard-controller.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: kubernetes-dashboard
  namespace: kube-system
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
spec:
  selector:
    matchLabels:
      k8s-app: kubernetes-dashboard
  template:
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ''
    spec:
      serviceAccountName: dashboard
      containers:
      - name: kubernetes-dashboard
        image: index.tenxcloud.com/jimmy/kubernetes-dashboard-amd64:v1.6.0
        resources:
          limits:
            cpu: 100m
            memory: 50Mi
          requests:
            cpu: 100m
            memory: 50Mi
        ports:
        - containerPort: 9090
        livenessProbe:
          httpGet:
            path: /
            port: 9090
          initialDelaySeconds: 30
          timeoutSeconds: 30
      tolerations:
      - key: "CriticalAddonsOnly"
        operator: "Exists"

身份认证

登录 dashboard 的时候⽀持 Kubeconfig 和token 两种认证⽅式,Kubeconfig 中也依赖token 字段,所 以⽣成token 这⼀步是必不可少的。

生成token

我们创建⼀个admin⽤户并授予admin ⻆⾊绑定,使⽤下⾯的yaml⽂件创建admin⽤户并赋予他管理员 权限,然后就可以通过token 登陆dashbaord,这种认证⽅式本质实际上是通过Service Account 的身 份认证加上Bearer token请求 API server 的⽅式实现。

kind: ClusterRoleBinding 
apiVersion: rbac.authorization.k8s.io/v1beta1 
metadata: 
name: admin 
annotations: 
rbac.authorization.kubernetes.io/autoupdate: "true" 
roleRef: 
kind: ClusterRole 
name: cluster-admin 
apiGroup: rbac.authorization.k8s.io 
subjects: 
- kind: ServiceAccount 
name: admin 
namespace: kube-system 
--- 
apiVersion: v1 
kind: ServiceAccount 
metadata: 
name: admin 
namespace: kube-system 
labels: 
kubernetes.io/cluster-service: "true" 
addonmanager.kubernetes.io/mode: Reconcile 

上⾯的 admin ⽤户创建完成后我们就可以获取到该⽤户对应的 token 了,如下命令:

$ kubectl get secret -n kube-system|grep admin-token 
admin-token-d5jsg kubernetes.io/service-account-token 3 1d 
$ kubectl get secret admin-token-d5jsg -o jsonpath={.data.token} -n kube-system |base64 -d 
# 会⽣成⼀串很⻓的base64后的字符串 

然后在 dashboard 登录⻚⾯上直接使⽤上⾯得到的 token 字符串即可登录,这样就可以拥有管理员权 限操作整个 kubernetes 集群的对象,当然你也可以为你的登录⽤户新建⼀个指定操作权限的⽤户。
在这里插入图片描述


访问Dashboard

有以下三种方式:

  • kubernetes-dashboard 服务暴露了 NodePort,使用http://NodeIP:nodePort 地址访问 dashboard;
  • 通过 kube-apiserver 访问 dashboard(https 6443端口和http 8080端口方式);
  • 通过 kubectl proxy 访问 dashboard:

通过 kubectl proxy 访问 dashboard

$ kubectl proxy --address='192.168.1.121' --port=8086 --accept-hosts='^*$'
Starting to serve on 192.168.1.121:8086

需要指定 --accept-hosts 选项,否则浏览器访问 dashboard 页面时提示 “Unauthorized”;

通过 kube-apiserver 访问dashboard

获取集群服务地址列表

$ kubectl cluster-info
Kubernetes master is running at https://192.168.1.121:6443
KubeDNS is running at https://192.168.1.121:6443/api/v1/proxy/namespaces/kube-system/services/kube-dns
kubernetes-dashboard is running at https://192.168.1.121:6443/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 开学季征文|一个爱立Flag 的大冤种
  • 《MySQL实战45讲》——学习笔记04-05 “深入浅出索引、最左前缀原则、索引下推优化“
  • 翻译: Transformer一种用于语言理解的新型神经网络架构 Google AI
  • 两种方法,计算带地形起伏的地表面积
  • 全景分割(Panoptic Segmentation)(CVPR 2019)
  • 【云原生】基于Kubernetes开发的阿里云ACK之可观测监控
  • 软考高项——47个过程的输入、输出、工具技术汇总
  • Flink / Scala - Metrics 使用与详解
  • 日常开发中比较实用的命令行
  • 阿里云AliGenie开发天猫语音功能-入门篇
  • 【校招VIP】前端布局模块之Flex弹性布局
  • 开放式激光振镜运动控制器(二):ZMC408SCAN激光接口与控制
  • 前端HTML5 +CSS3 4.CSS基础 4 选择器进阶 5 背景相关属性
  • Google Earth Engine(GEE)——sentinel-2 NDVI多时相影像展示
  • Java设计模式之解释器模式
  • 03Go 类型总结
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • canvas 绘制双线技巧
  • CODING 缺陷管理功能正式开始公测
  • PHP CLI应用的调试原理
  • SSH 免密登录
  • Vue.js-Day01
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 蓝海存储开关机注意事项总结
  • 聊聊flink的BlobWriter
  • 盘点那些不知名却常用的 Git 操作
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 小程序开发之路(一)
  • 找一份好的前端工作,起点很重要
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 阿里云重庆大学大数据训练营落地分享
  • 交换综合实验一
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #APPINVENTOR学习记录
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $NOIp2018$劝退记
  • (2)STL算法之元素计数
  • (arch)linux 转换文件编码格式
  • (C++20) consteval立即函数
  • (二)测试工具
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (一)认识微服务
  • (转)Sublime Text3配置Lua运行环境
  • **CI中自动类加载的用法总结
  • *p++,*(p++),*++p,(*p)++区别?
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .net MySql