快速部署K8s仪表板,助力管理轻松搞定!

https://kubernetes.io/zh-cn/docs/tasks/access-application-cluster/web-ui-dashboard/

Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源 (如 Deployment,Job,DaemonSet 等等)。 例如,你可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。

Dashboard 同时展示了 Kubernetes 集群中的资源状态信息和所有报错信息。

Kubernetes Dashboard UI

1 部署 Dashboard UI

默认不部署 Dashboard。

1.1 yaml 下载

先把这个yaml 下载下来,因为我们还要修改它:

[root@icv-k8s-node-1 home]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
--2023-06-30 15:51:42--  https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.111.133, 185.199.108.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7621 (7.4K) [text/plain]
Saving to: ‘recommended.yaml’100%[=========================================================>] 7,621       --.-K/s   in 0.002s  2023-06-30 15:51:43 (3.88 MB/s) - ‘recommended.yaml’ saved [7621/7621][root@icv-k8s-node-1 home]# 

查询 443,默认内容:

这样我们是无法直接通过外部浏览器访问的。修改如下:

kind: Service
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
spec:ports:- port: 443targetPort: 8443type: NodePortselector:k8s-app: kubernetes-dashboard

1.2 部署

[root@icv-k8s-node-1 home]# kubectl apply -f recommended.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
[root@icv-k8s-node-1 home]# 

查看 pod:

kubectl get pod -A 是一个 Kubernetes 命令,用于列出集群中所有正在运行的 Pod,不论它们属于哪个命名空间:

  • kubectl:用于与 Kubernetes 集群交互的命令行工具
  • get:指定我们要获取关于一个资源的信息
  • pod:我们要获取信息的资源类型
  • -A 或 --all-namespaces:指定命令在所有命名空间中执行,而不仅仅是当前命名空间
[root@icv-k8s-node-1 home]# kubectl get pod -A

[root@icv-k8s-node-1 home]# kubectl get svc -A
NAMESPACE              NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default                edge-nginx                  ClusterIP   10.106.187.202   <none>        88/TCP                   101m
default                javaedge-nginx              NodePort    10.109.194.31    <none>        90:31104/TCP             108m
default                kubernetes                  ClusterIP   10.96.0.1        <none>        443/TCP                  23h
default                nginx-deployment            NodePort    10.110.49.229    <none>        89:32158/TCP             41m
kube-system            kube-dns                    ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP   23h
kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.106.145.20    <none>        8000/TCP                 5m3s
kubernetes-dashboard   kubernetes-dashboard        NodePort    10.99.210.194    <none>        443:31902/TCP            5m4s
[root@icv-k8s-node-1 home]# 

2 访问 Dashboard 用户界面

上一小节我们看到 仪表盘pod映射到了 31902 端口,那么就要通过它访问,注意了必须是 HTTPS:

若使用 HTTP,你只能看到大黑边:

为了保护集群数据,默认Dashboard 会使用最少的 RBAC 配置进行部署。 Dashboard 仅支持使用 Bearer 令牌登录。

创建 token

# 创建 dashboard-admin ⽤户
[root@icv-k8s-node-1 home]# kubectl create serviceaccount dashboard-admin -n kubernetes-dashboardserviceaccount/dashboard-admin created
# 绑定 clusterrolebinding 授权
[root@icv-k8s-node-1 home]# kubectl create clusterrolebinding dashboard-admin-rb --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-adminclusterrolebinding.rbac.authorization.k8s.io/dashboard-admin-rb created
# 创建token文件
[root@icv-k8s-node-1 home]# 

对应 yaml:

apiVersion: v1
kind: Secret
metadata:name: dashboard-admin-secretnamespace: kubernetes-dashboardannotations:kubernetes.io/service-account.name: dashboard-admin
type: kubernetes.io/service-account-token
# 运行并获得token
[root@icv-k8s-node-1 home]# kubectl apply -f admin-token.yaml
secret/dashboard-admin-secret created
[root@icv-k8s-node-1 home]# kubectl describe secret dashboard-admin-secret -n kubernetes-dashboard
Name:         dashboard-admin-secret
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-adminkubernetes.io/service-account.uid: 4260320b-200b-4189-97ce-c30ac6a3445fType:  kubernetes.io/service-account-tokenData
====
ca.crt:     1099 bytes
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6Ind4ZzJfQkVWaFdfWUtqSWo5VlRYQVViblBnZkwybXpMVlZqT1M3OGhvd3cifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tc2VjcmV0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRhc2hib2FyZC1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjQyNjAzMjBiLTIwMGItNDE4OS05N2NlLWMzMGFjNmEzNDQ1ZiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDpkYXNoYm9hcmQtYWRtaW4ifQ.vw9oyPTb_646Dfs-6wR9_3o0rMQEmUZ0Ytx3rOJCMuCscN2Mm2fTHmWyvVo9_mDRqNhspBTj_noONoWcNId8Uj0GmVLpqwHNeKpINFI9UH39LlLV1y4QVaZ7O0i8jDVAC7msfozKA9F0TcQev5oK0MkDmbGC5JqTvDlgXCvbJotbBXfjZesGGwUS8O-RMvkFSf_ZIjjhMkYT3IuU8H9VinRAUH7GMefvNPq_zzPL6AsMIMosO4rrwsTm6OSJaKYsAdatusik8Fv-yFYI5CyEwnFGdiQIyXcSlK6wimqv1U142_nyNg9y_jv4lk02de9FBiQtWmuYg80dqw42lG38sA
[root@icv-k8s-node-1 home]# 

现在输入 token,就登录成功了。

命令行代理

你可以使用 kubectl 命令行工具来启用 Dashboard 访问,命令如下:

kubectl proxy

kubectl 会使得 Dashboard 可以通过 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ 访问。

UI 只能 通过执行这条命令的机器进行访问。更多选项参见 kubectl proxy --help

说明:

Kubeconfig 身份验证方法支持外部身份提供程序或基于 x509 证书的身份验证。

3 欢迎界面

当访问空集群的 Dashboard 时,你会看到欢迎界面。 页面包含一个指向此文档的链接,以及一个用于部署第一个应用程序的按钮。 此外,你可以看到在默认情况下有哪些默认系统应用运行在 kube-system 名字空间 中,比如 Dashboard 自己。

Kubernetes Dashboard 欢迎页面

4 部署容器化应用

通过一个简单的部署向导,你可以使用 Dashboard 将容器化应用作为一个 Deployment 和可选的 Service 进行创建和部署。你可以手工指定应用的详细配置,或者上传一个包含应用配置的 YAML 或 JSON _清单_文件。

点击任何页面右上角的 CREATE 按钮以开始。

指定应用的详细配置

部署向导需要你提供以下信息:

  • 应用名称(必填):应用的名称。内容为 应用名称 的 标签 会被添加到任何将被部署的 Deployment 和 Service。

    在选定的 Kubernetes 名字空间 中, 应用名称必须唯一。必须由小写字母开头,以数字或者小写字母结尾, 并且只含有小写字母、数字和中划线(-)。小于等于24个字符。开头和结尾的空格会被忽略。

  • 容器镜像(必填):公共镜像仓库上的 Docker 容器镜像 或者私有镜像仓库 (通常是 Google Container Registry 或者 Docker Hub)的 URL。容器镜像参数说明必须以冒号结尾。

  • Pod 的数量(必填):你希望应用程序部署的 Pod 的数量。值必须为正整数。

    系统会创建一个 Deployment 以保证集群中运行期望的 Pod 数量。

  • 服务(可选):对于部分应用(比如前端),你可能想对外暴露一个 Service,这个 Service 可能用的是集群之外的公网 IP 地址(外部 Service)。

    说明:

    对于外部服务,你可能需要开放一个或多个端口才行。

    其它只能对集群内部可见的 Service 称为内部 Service。

    不管哪种 Service 类型,如果你选择创建一个 Service,而且容器在一个端口上开启了监听(入向的), 那么你需要定义两个端口。创建的 Service 会把(入向的)端口映射到容器可见的目标端口。 该 Service 会把流量路由到你部署的 Pod。支持 TCP 协议和 UDP 协议。 这个 Service 的内部 DNS 解析名就是之前你定义的应用名称的值。

如果需要,你可以打开 Advanced Options 部分,这里你可以定义更多设置:

  • 描述:这里你输入的文本会作为一个 注解 添加到 Deployment,并显示在应用的详细信息中。

  • 标签:应用默认使用的 标签 是应用名称和版本。 你可以为 Deployment、Service(如果有)定义额外的标签,比如 release(版本)、 environment(环境)、tier(层级)、partition(分区) 和 release track(版本跟踪)。

    例子:

    release=1.0
    tier=frontend
    environment=pod
    track=stable
    
  • 名字空间:Kubernetes 支持多个虚拟集群依附于同一个物理集群。 这些虚拟集群被称为 名字空间, 可以让你将资源划分为逻辑命名的组。

    Dashboard 通过下拉菜单提供所有可用的名字空间,并允许你创建新的名字空间。 名字空间的名称最长可以包含 63 个字母或数字和中横线(-),但是不能包含大写字母。

    名字空间的名称不能只包含数字。如果名字被设置成一个数字,比如 10,pod 就

    在名字空间创建成功的情况下,默认会使用新创建的名字空间。如果创建失败,那么第一个名字空间会被选中。

  • 镜像拉取 Secret:如果要使用私有的 Docker 容器镜像,需要拉取 Secret 凭证。

    Dashboard 通过下拉菜单提供所有可用的 Secret,并允许你创建新的 Secret。 Secret 名称必须遵循 DNS 域名语法,比如 new.image-pull.secret。 Secret 的内容必须是 base64 编码的,并且在一个 .dockercfg 文件中声明。Secret 名称最大可以包含 253 个字符。

    在镜像拉取 Secret 创建成功的情况下,默认会使用新创建的 Secret。 如果创建失败,则不会使用任何 Secret。

  • CPU 需求(核数)内存需求(MiB):你可以为容器定义最小的 资源限制。 默认情况下,Pod 没有 CPU 和内存限制。

  • 运行命令运行命令参数:默认情况下,你的容器会运行 Docker 镜像的默认 入口命令。 你可以使用 command 选项覆盖默认值。

  • 以特权模式运行:这个设置决定了在 特权容器 中运行的进程是否像主机中使用 root 运行的进程一样。 特权容器可以使用诸如操纵网络堆栈和访问设备的功能。

  • 环境变量:Kubernetes 通过 环境变量 暴露 Service。你可以构建环境变量,或者将环境变量的值作为参数传递给你的命令。 它们可以被应用用于查找 Service。值可以通过 $(VAR_NAME) 语法关联其他变量。

上传 YAML 或者 JSON 文件

Kubernetes 支持声明式配置。所有的配置都存储在清单文件 (YAML 或者 JSON 配置文件)中。这些 清单使用 Kubernetes API 定义的资源模式。

作为一种替代在部署向导中指定应用详情的方式,你可以在一个或多个清单文件中定义应用,并且使用 Dashboard 上传文件。

5 使用 Dashboard

Kubernetes Dashboard UI 视图;包括它们提供的内容,以及怎么使用它们。

导航

当在集群中定义 Kubernetes 对象时,Dashboard 会在初始视图中显示它们。 默认情况下只会显示 默认 名字空间中的对象,可以通过更改导航栏菜单中的名字空间筛选器进行改变。

Dashboard 展示大部分 Kubernetes 对象,并将它们分组放在几个菜单类别中。

管理概述

集群和名字空间管理的视图,Dashboard 会列出节点、名字空间和持久卷,并且有它们的详细视图。 节点列表视图包含从所有节点聚合的 CPU 和内存使用的度量值。 详细信息视图显示了一个节点的度量值,它的规格、状态、分配的资源、事件和这个节点上运行的 Pod。

负载

显示选中的名字空间中所有运行的应用。 视图按照负载类型(例如:Deployment、ReplicaSet、StatefulSet)罗列应用,并且每种负载都可以单独查看。 列表总结了关于负载的可执行信息,比如一个 ReplicaSet 的就绪状态的 Pod 数量,或者目前一个 Pod 的内存用量。

工作负载的详情视图展示了对象的状态、详细信息和相互关系。 例如,ReplicaSet 所控制的 Pod,或者 Deployment 所关联的新 ReplicaSet 和 HorizontalPodAutoscalers。

服务

展示允许暴露给外网服务和允许集群内部发现的 Kubernetes 资源。 因此,Service 和 Ingress 视图展示他们关联的 Pod、给集群连接使用的内部端点和给外部用户使用的外部端点。

存储

存储视图展示持久卷申领(PVC)资源,这些资源被应用程序用来存储数据。

ConfigMap 和 Secret

展示的所有 Kubernetes 资源是在集群中运行的应用程序的实时配置。 通过这个视图可以编辑和管理配置对象,并显示那些默认隐藏的 Secret。

日志查看器

Pod 列表和详细信息页面可以链接到 Dashboard 内置的日志查看器。 查看器可以深入查看属于同一个 Pod 的不同容器的日志。

日志浏览

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/2140.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CaffeineCache+Redis 接入系统做二层缓存思路实现(借鉴 mybatis 二级缓存、自动装配源码)

本文目录 前言本文术语本文项目地址设计思路开发思路DoubleCacheAble 双缓存注解&#xff08;如何设计&#xff1f;&#xff09;动态条件表达式&#xff1f;例如&#xff1a;#a.id?&#xff08;如何解析&#xff1f;&#xff09;缓存切面&#xff08;如何设计&#xff1f;&…

async异步任务_同步任务选项

需要先看完上文&#xff1a;async创建异步任务_御坂美琴1的博客-CSDN博客 让类里面的一个成员函数当作线程的参数。 async里面有三个参数&#xff0c;一个是成员函数的地址&#xff0c;第二个是 类&#xff0c;第三个是传入的参数。 接下来介绍async的同步线程创建。 asy…

华为云Classroom一站式教学实践平台,开启云端教学新征程

随着高考落下帷幕&#xff0c;各高校将迎来新一届大学新生入学&#xff0c;他们的学长学姐们经过四年的学习&#xff0c;也即将步入社会&#xff0c;迈向一段新的人生旅程。 在这里小智先祝大家未来一切顺意&#xff0c;不忘初心&#xff0c;大鹏一日同风起&#xff0c;扶摇直…

Android跨平台语言分析

跨平台技术发展的三个阶段 第一阶段是混合开发的web容器时代 为了解决原生开发的高成本、低效率&#xff0c;出现了Hybrid混合开发原生中嵌入依托于浏览器的WebViewWeb浏览器中可以实现的需求在WebView中基本都可以实现但是Web最大的问题是&#xff0c;它的性能和体验与原生开发…

需求分析六步法

需求收集可能看起来不言自明&#xff0c;但它很少得到应有的充分关注。就像运动前伸展或睡前刷牙一样&#xff0c;这是一项经常被忽视的简单任务。 但是&#xff0c;忽视这些看似简单的事情的后果可能会导致伤害、蛀牙&#xff0c;或者在项目管理的情况下&#xff0c;导致项目…

qt调用图片并自适应界面大小显示

一、前言 记录qt使用图片打开、查看和关闭等操作 实现点击按键&#xff0c;打开选择的指定位置图片&#xff0c;有缩放显示&#xff0c;并可以点击放大按键放大图片&#xff0c;放大后图片自适应电脑窗口大小&#xff0c;大于窗口尺寸会根据最大宽和高缩放&#xff0c;小于窗…

【系统开发】尚硅谷 - 谷粒商城项目笔记(五):分布式缓存

文章目录 分布式缓存缓存使用场景redis作缓存中间件引入redis依赖配置redis堆外内存溢出 缓存失效问题缓存穿透缓存雪崩缓存击穿 Redisson分布式锁导入依赖redisson配置类可重入锁读写锁缓存一致性解决 缓存-SpringCache简介Cacheable自定义缓存配置CacheEvictCachePut原理与不…

Redis主从/哨兵机制原理介绍

目录 ​编辑 一、主从复制 1.1 什么是主从复制 1.2 主从复制的作用 1.3 主从复制原理 1.3.1 全量复制 1.3.2 增量复制 1.3.3 同步流程 二、哨兵机制 2.1 哨兵机制介绍 2.1.1 集群逻辑图 2.1.2 哨兵机制实现的功能 2.2 哨兵机制原理 2.2.1 监控 2.2.2 下线 2.2.2.1 下线流程 2.…

HarmonyOS学习路之开发篇—AI功能开发(文档检测校正)

基本概念 文档校正提供了文档翻拍过程的辅助增强功能&#xff0c;包含两个子功能&#xff1a; 文档检测&#xff1a;能够自动识别图片中的文档&#xff0c;返回文档在原图中的位置信息。这里的文档泛指外形方正的事物&#xff0c;比如书本、相片、画框等。文档校正&#xff1a…

Midjourney使用教程:三 图片风格提示

这里我根据现在的官方文档来继续我们的Midjourney的教程&#xff0c;看到这里如果你去实践的话&#xff0c;估计你已经有了好多张属于自己的图片。 这时候你不在满足简单的提示生成的Midjourney的默认风格图片&#xff0c;实际上你可以通过一些关键词做提示&#xff0c;来改变…

pcl基于八叉树进行空间划分和搜索操作

建立空间索引在点云数据处理中已被广泛应用&#xff0c;常见空间索引一般是自顶向下逐级划分空间的各种空间索引结构&#xff0c;比较有代表性的包括 BSP 树、KD 树、KDB 树、 R树、R树、CELL 树、四叉树和八叉树等索引结构&#xff0c;而在这些结构中 KD 树和八叉树在 3D点云数…

多元分类预测 | Matlab灰狼算法(GWO)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,GWO-HKELM分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab灰狼算法(GWO)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,GWO-HKELM分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab…