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

Kubernetes Dashboard

Minikube 环境搭建
Kubernetes 的基本架构
Kubernetes 声明式语言 YAML
YAML操作Kubernetes核心对象
CentOs搭建Kubernetes集群
Kubernetes进阶对象Deployment、DaemonSet、Service
Kubernetes进阶对象Ingress、Ingress Class、Ingress Controller
Kubernetes集群部署项目实践
Kubernetes高级对象PersistentVolume、PersistentVolumeClaim、StorageClass
CentOS部署NFS
Kubernetes使用NFS实现数据持久化
Kubernetes高级对象StatefulSet
Kubernetes 应用滚动更新
Kubernetes 容器资源管理Resources和探针Probe
Kubernetes 名称空间Namespace
Kubernetes 系统监控Metrics Server、HorizontalPodAutoscaler、Prometheus
Kubernetes集群持久化部署实践
Kubernetes Dashboard

Dashboard

Dashboard 的项目网站,可以查看说明文档和基本的使用情况。

下载yaml

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.0/aio/deploy/recommended.yaml

注意需要修改镜像,不然可能会拉去不下来镜像(ps:国外拉不下来的镜像,可以到阿里云找对应的国内镜像替代)

 cat recommended.yaml | grep -i image#image: kubernetesui/dashboard:v2.6.0 --原有镜像image: registry.cn-hangzhou.aliyuncs.com/kube-iamges/dashboard:v2.0.0-beta8imagePullPolicy: Always#image: kubernetesui/metrics-scraper:v1.0.8 --原有镜像  image: registry.cn-hangzhou.aliyuncs.com/kube-iamges/metrics-scraper:v1.0.1

yaml简单说明

  • 所有的对象都属于“kubernetes-dashboard”名字空间。
  • Dashboard 使用 Deployment 部署了一个实例,端口号是 8443。
  • 容器启用了 Liveness 探针,使用 HTTPS 方式检查存活状态。
  • Service 对象使用的是 443 端口,它映射了 Dashboard 的 8443 端口

使用命令 kubectl apply 就可以轻松部署 Dashboard :

kubectl apply -f recommended.yaml 
# 查看pod
kubectl get pod -n kubernetes-dashboard 

在这里插入图片描述

#查看dashboard svc
kubectl get svc  -n kubernetes-dashboard

在这里插入图片描述
svc不是typeNode类型,无法外部直接访问,下面提供两种方式支持外部访问

1修改SVC类型为NodePort

修改SVC类型为NodePort,允许机器外部提供访问能力

# 修改服务的配置
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
	# 找到 type: ClusterIP#修改成type: NodePort  # 将类型更改为 NodePort
#修改后保存查看,已有外部访问端口
kubectl get svc  -n kubernetes-dashboard

在这里插入图片描述

2Ingress/Ingress Controller

也可以通过ingress Controller 提供外部访问能力

由于 Dashboard 默认使用的是加密的 HTTPS 协议,拒绝明文 HTTP 访问,所以我们要先生成证书,让 Ingress 也走 HTTPS 协议。

直接用 Linux 里的命令行工具“openssl”来生成一个自签名的证书(如果你有条件,也可以考虑找 CA 网站申请免费证书):

openssl req -x509 -days 365 -out k8s.test.crt -keyout k8s.test.key \-newkey rsa:2048 -nodes -sha256 \-subj '/CN=k8s.test' -extensions EXT -config <( \printf "[dn]\nCN=k8s.test\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:k8s.test\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")

它生成的是一个 X509 格式的证书,有效期 365 天,私钥是 RSA2048 位,摘要算法是 SHA256,签发的网站是“k8s.test”。

运行命令行后会生成两个文件,一个是证书“k8s.test.crt”,另一个是私钥“k8s.test.key”,我们需要把这两个文件存入 Kubernetes 里供 Ingress 使用。

注意:
使用上述命令生成的自签名证书 k8s.test.crt 和私钥 k8s.test.key 是自签名的证书,其安全性在开发或测试环境中通常是可以接受的,但不会被主流浏览器(如Chrome、Firefox、Edge等)视为安全,因为它们未经公共颁发机构(CA)的认证和签名。

在开发或测试环境中,可以使用这样的自签名证书来进行测试和开发工作。浏览器通常会显示安全警告,因为它们无法验证该证书的真实性和信任级别,因此认为连接可能不是私密的或不安全的。

要在浏览器中消除这些警告,需要手动将生成的证书导入到浏览器的信任存储中,具体步骤可以参考之前提到的浏览器信任证书的操作。这样浏览器就会信任您的自签名证书,不再显示安全警告。

在这里插入图片描述
因为这两个文件属于机密信息,存储的方式需要用 Secret

dashborad.yml

apiVersion: v1
kind: Secret
metadata:name: dash-tlsnamespace: kubernetes-dashboard
type: kubernetes.io/tlsdata:tls.crt: LS0tLS1CRUdJTiBDRVJU...自己生成的crttls.key: LS0tLS1CRUdJTiBQUklW...自己生成的key
vim dashboard-secret.yml 
kubectl apply -f dashboard-secret.yml 
#或者根据文件生成  kubectl create secret tls dash-tls -n kubernetes-dashboard --cert=k8s.test.crt --key=k8s.test.keykubectl get secrets -n kubernetes-dashboard

在这里插入图片描述
Ingress Class

dash-ink.yml

apiVersion: networking.k8s.io/v1
kind: IngressClassmetadata:name: dash-inknamespace: kubernetes-dashboard
spec:controller: nginx.org/ingress-controller

Ingress 对象可以用 kubectl create 命令自动生成

kubectl create ing dash-ing --rule="k8s.test/=kubernetes-dashboard:443" --class=dash-ink -n kubernetes-dashboard $out

因为是 HTTPS 协议,所以我们要在 Ingress 里多加一点东西,一个是“annotations”字段,指定后端目标是 HTTPS 服务,另一个是“tls”字段,指定域名和证书,也就是刚才创建的 Secret:

dash-ingress.yml

apiVersion: networking.k8s.io/v1
kind: Ingressmetadata:name: dash-ingnamespace: kubernetes-dashboardannotations:nginx.org/ssl-services: "kubernetes-dashboard"spec:ingressClassName: dash-inktls:- hosts:- k8s.testsecretName: dash-tlsrules:- host: k8s.testhttp:paths:- path: /pathType: Prefixbackend:service:name: kubernetes-dashboardport:number: 443

Ingress Controller
dash-kic.yml

apiVersion: apps/v1
kind: DaemonSet
metadata:name: dash-kic-depnamespace: nginx-ingress
spec:selector:matchLabels:app: dash-kic-deptemplate:metadata:labels:app: dash-kic-depapp.kubernetes.io/name: nginx-ingressspec:serviceAccountName: nginx-ingresshostNetwork: trueautomountServiceAccountToken: truesecurityContext:seccompProfile:type: RuntimeDefaultcontainers:- image: nginx/nginx-ingress:2.2-alpineimagePullPolicy: IfNotPresentname: nginx-ingressports:- name: httpcontainerPort: 80- name: httpscontainerPort: 443- name: readiness-portcontainerPort: 8081- name: prometheuscontainerPort: 9113readinessProbe:httpGet:path: /nginx-readyport: readiness-portperiodSeconds: 1resources:requests:cpu: "100m"memory: "128Mi"#limits:#  cpu: "1"#  memory: "1Gi"securityContext:allowPrivilegeEscalation: true
#          readOnlyRootFilesystem: truerunAsUser: 101 #nginxrunAsNonRoot: truecapabilities:drop:- ALLadd:- NET_BIND_SERVICEenv:- name: POD_NAMESPACEvalueFrom:fieldRef:fieldPath: metadata.namespace- name: POD_NAMEvalueFrom:fieldRef:fieldPath: metadata.nameargs:- -nginx-configmaps=$(POD_NAMESPACE)/nginx-config- -ingress-class=dash-ink

要让我们在外面能够访问 Ingress Controller,还要为它再定义一个 Service,类型是“NodePort”,端口指定是“30443”:
dash-kic-svc.yml

apiVersion: v1
kind: Service
metadata:name: dash-kic-svcnamespace: nginx-ingressspec:ports:- port: 443protocol: TCPtargetPort: 443nodePort: 30443selector:app: dash-kic-deptype: NodePort

创建上面的 Ingress Class、Ingress、Ingress Controller、Service

 vim dash-ink.ymlvim dash-ingress.ymlvim dash-kic.ymlvim dash-kic-svc.ymlkubectl apply -f dash-ink.yml -f dash-ingress.yml -f dash-kic.yml -f dash-kic-svc.yml kubectl get ingressclasses.networking.k8s.io -n kubernetes-dashboard
kubectl get ingress -n kubernetes-dashboard
kubectl get pod,svc -n kubernetes-dashboard 
kubectl get pod,svc -n nginx-ingress 

在这里插入图片描述
查看nginx相关配置

# 查看nginx controller容器
kubectl get pod -n nginx-ingress
#进入nginx容器中
kubectl exec -it -n nginx-ingress dash-kic-dep-cx2vq -- sh
#查看配置文件cat /etc/nginx/nginx.conf# 其他配置ls /etc/nginx/conf.d/

在这里插入图片描述
在这里插入图片描述

对象关系图在这里插入图片描述

外部访问 Dashboard

创建用户,登录进 Dashboard。Dashboard官网示例

dashboard-adminuser.yml

apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard---apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard
vim dashboard-adminuser.yml
kubectl apply -f dashboard-adminuser.yml 

在这里插入图片描述
获取sa的token,通过token的方式登录部署好的dashboard

# 获取账户
kubectl get secret -n kubernetes-dashboard
# 根据上面的命令 获取token
kubectl describe secrets -n kubernetes-dashboard admin-user-token-xxxx

在这里插入图片描述
登录访问

使用dashboard service
ip+service typenode端口
在这里插入图片描述

在当前页面用键盘输入 thisisunsafe ,不是在地址栏输入,就直接敲键盘就行了,页面即会自动刷新进入网页。
在这里插入图片描述

使用域名
https://k8s.test:30443/ (注意添加域名解析)
在这里插入图片描述
在这里插入图片描述

访问流程

https://k8s.test:30443/ 时,请求的处理过程如下:

外部请求到 NodePort 服务

浏览器请求 https://k8s.test:30443/。
假设 30443 是一个 NodePort,Kubernetes 会将请求转发到集群内部。

NodePort 服务到 Nginx Ingress Controller 的 Service

请求会先到达暴露在 NodePort 30443 上的服务,即 dash-kic-svc。
该服务会将请求转发到与其关联的 Pod,通常是 Nginx Ingress Controller 的 Pod。

Nginx Ingress Controller

运行在 dash-kic-dep(Deployment)中的 Nginx Ingress Controller Pod 接收到请求。
Nginx Ingress Controller 根据配置的 Ingress 资源进行处理。

Ingress 资源规则

Nginx Ingress Controller 会根据你配置的 Ingress 资源规则 (dash-ing) 解析请求。
例如,根据 host 和 path,确定应该将请求转发到哪个后端服务。

转发到后端服务

在这个例子中,Ingress 资源会将请求转发到 kubernetes-dashboard 服务的 443 端口。

相关文章:

Kubernetes Dashboard

Minikube 环境搭建 Kubernetes 的基本架构 Kubernetes 声明式语言 YAML YAML操作Kubernetes核心对象 CentOs搭建Kubernetes集群 Kubernetes进阶对象Deployment、DaemonSet、Service Kubernetes进阶对象Ingress、Ingress Class、Ingress Controller Kubernetes集群部署项目实践 …...

NSSCTF-Web题目15

目录 [HNCTF 2022 WEEK2]ez_SSTI 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]Ez_upload 1、题目 2、知识点 3、思路 [HNCTF 2022 WEEK2]ez_SSTI 1、题目 2、知识点 SSTI、Jinja2 参考链接&#xff1a;1. SSTI&#xff08;模板注入&#xff09;漏洞&#xff08;…...

每天认识:轮询和中断

轮询&#xff08;Polling&#xff09;和中断&#xff08;Interrupt&#xff09;是两种不同的事件处理机制&#xff0c;通常用于操作系统、硬件设备或软件程序中&#xff0c;以响应外部事件或内部状态变化。下面分别解释这两个概念&#xff1a; 轮询&#xff08;Polling&#x…...

SpringBoot中使用MQTT实现消息的订阅和发布

SpringBoot中使用MQTT实现消息的订阅和发布 背景 java框架SpringBoot通过mQTT通信 控制物联网设备 还是直接上代码 第一步依赖&#xff1a; <!--mqtt相关依赖--><dependency><groupId>org.springframework.integration</groupId><artifactId>s…...

等保测评练习10

等级保护初级测评师试题10 姓名&#xff1a; 成绩&#xff1a; 判断题&#xff08;10110分&#xff09; 1.等级保护2.0三级系统测评合格最低分为60分&#xff08;&#xff09; 70分且不能有高风险 2.当远程管理云计算平台中设备是…...

VBA学习(16):工作表事件示例:输入数据后锁定单元格

在工作表单元格中输入数据后&#xff0c;该单元格就被锁定&#xff0c;不能再编辑。 打开VBE&#xff0c;在工程资源管理器中双击该工作表名称打开其代码模块&#xff0c;在其中输入下面的代码&#xff1a; 假设整个工作表的LockedFalse Private Sub Worksheet_Change(ByVal …...

mysql学习——SQL中的DDL和DML

SQL中的DDL和DML DDL数据库操作&#xff1a;表操作 DML添加数据修改数据删除数据 学习黑马MySQL课程&#xff0c;记录笔记&#xff0c;用于复习。 DDL DDL&#xff1a;Data Definition Language&#xff0c;数据定义语言&#xff0c;用来定义数据库对象(数据库&#xff0c;表&…...

什么是多态?一文彻底搞懂!

什么是多态 面向对象程序设计有三要素&#xff1a;封装、继承&#xff08;或组合&#xff09;、多态&#xff0c;前两者较好理解&#xff0c;多态总让人困惑&#xff0c;不知道具体有什么作用&#xff0c;更不知道为什么要用多态。今天就来详细分析下什么是多态&#xff0c;以…...

CST电磁仿真软件的参数类型和含义【电磁仿真入门教程】

如果你是一位工程师或设计师&#xff0c;那你对电磁仿真软件CST Studio Suite一定不会感到陌生。CST软件可以帮助你模拟电磁场和电路行为&#xff0c;从而优化产品设计。本文将带你了解CST电磁仿真软件的一些关键参数&#xff0c;并解释其含义。CST电磁仿真软件的参数是指在使用…...

华为HCIA综合实验(结合前几期所有内容)

第一章 实验目的 &#xff08;1&#xff09;配置Telnet&#xff0c;要求所有网络设备支持远程管理&#xff0c;密码为admin&#xff08;2&#xff09;配置Trunk&#xff0c;交换机之间的链路均为Trunk模式&#xff08;3&#xff09;配置VLAN&#xff0c;在SW2和SW3上创建相关…...

git 拉下来的项目,出现“加载失败”的解决方法

现象&#xff1a; 1、对加载失败的项目&#xff0c;尝试重新加载 解决思路&#xff1a;根据上面的提示&#xff0c;打开F盘对应的 .vcxproj文件&#xff0c;查看里面关于opencv454.props的内容 先删了&#xff0c;后面再补 2、当前的工作重点是消除加载失败的情况&#xff0c;…...

sql资料库

1、distinct(关键词distinct用于返回唯一不同的值)&#xff1a;查询结果中去除重复行的关键字 select distinct(university) from user_profile select distinct university from user_profile distinct是紧跟在select后面的&#xff0c;不能在其他位置&#xff0c;不然就…...

【python入门】运算符

文章目录 算术运算符比较运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符优先级 算术运算符 # 加法 print(5 3) # 输出: 8# 减法 print(5 - 3) # 输出: 2# 乘法 print(4 * 3) # 输出: 12# 除法&#xff08;结果为浮点数&#xff09; print(8.0 / 3) # 输出: 2.6…...

【C++高阶】掌握AVL树:构建与维护平衡二叉搜索树的艺术

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;STL-> map与set &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀AVL树 &#x1f4d2;1. AVL树…...

机器学习-课程整理及初步介绍

简介: 机器学习是人工智能的一个分支&#xff0c;它使计算机系统能够从经验中学习并改进其在特定任务上的表现&#xff0c;而无需进行明确的编程。机器学习涉及多种算法和统计模型&#xff0c;它们可以从数据中学习规律&#xff0c;并做出预测或决策。机器学习的应用非常广泛&…...

北斗三号短报文通信终端 | 助力户外无网络场景作业

北斗三号短报文通信终端是一款专为户外无网络场景作业设计的先进通信工具&#xff0c;它依托于中国自主研发的北斗卫星导航系统&#xff0c;为用户在偏远地区或无网络覆盖区域提供了可靠的通信保障。以下是关于北斗三号短报文通信终端的详细介绍&#xff1a; 一、功能特点 北斗…...

RERCS系统开发实战案例-Part05 FPM Application的Feeder Class搜索组件的实施

1、通过事务码 SE24对Feeder Class实施 1&#xff09;接口页签的简单说明&#xff1a; ① IF_FPM_GUIBB&#xff1a;通用UI构建块&#xff0c;整个UIBB模块的基础接口&#xff1b; ② IF_FPM_GUIBB_SEARCH&#xff1a;通用搜索UI构建块&#xff0c;搜索组件UIBB的基础接口&…...

算法常见手写代码

1.NMS def py_cpu_nms(dets, thresh):"""Pure Python NMS baseline."""#x1、y1、x2、y2、以及score赋值x1 dets[:, 0]y1 dets[:, 1]x2 dets[:, 2]y2 dets[:, 3]scores dets[:, 4]#每一个检测框的面积areas (x2 - x1 1) * (y2 - y1 1)#按…...

数据结构9——排序

一、冒泡排序 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff0c;顾名思义&#xff0c;就是指越小的元素会经由交换慢慢“浮”到数列的顶端。 算法原理 从左到右&#xff0c;依次比较相邻的元素大小&#xff0c;更大的元素交换到右边&#xff1b;从第一组相邻元素比较…...

分布式锁实现方案-基于Redis实现的分布式锁

目录 一、基于Lua看门狗实现 1.1 缓存实体 1.2 延迟队列存储实体 1.3 分布式锁RedisDistributedLockWithDog 1.4 看门狗线程续期 1.5 测试类 1.6 测试结果 1.7 总结 二、RedLock分布式锁 2.1 Redlock分布式锁简介 2.2 RedLock测试例子 2.3 RedLock 加锁核心源码分析…...

别只盯着协议!用TC8测试案例深度解读车载网络中的ARP与ICMP:安全与稳定的隐藏关卡

车载以太网底层协议实战&#xff1a;从TC8测试案例看ARP与ICMP的安全设计 当一辆现代汽车以100km/h行驶时&#xff0c;其车载网络每秒需要处理超过5000条网络报文。这些报文中的绝大多数&#xff0c;都由ARP和ICMP这样的基础协议承载。在传统IT领域被视为"简单"的协议…...

Phi-4-mini-reasoning企业应用探索:智能客服知识推理模块集成方案

Phi-4-mini-reasoning企业应用探索&#xff1a;智能客服知识推理模块集成方案 1. 轻量级推理模型的价值 在当今企业智能化转型浪潮中&#xff0c;轻量级推理模型正成为技术落地的关键。Phi-4-mini-reasoning作为一款专注于高质量推理的开源模型&#xff0c;凭借其128K令牌的超…...

ExcelDataReader实战指南:高效处理Excel文件3步法掌握跨格式解析

ExcelDataReader实战指南&#xff1a;高效处理Excel文件3步法掌握跨格式解析 【免费下载链接】ExcelDataReader Lightweight and fast library written in C# for reading Microsoft Excel files 项目地址: https://gitcode.com/gh_mirrors/ex/ExcelDataReader ExcelDat…...

Open UI5 源代码解析之735:DynamicPageAccessibleLandmarkInfo.js

源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.f\src\sap\f\DynamicPageAccessibleLandmarkInfo.js DynamicPageAccessibleLandmarkInfo 文件深度解析 文件定位与总体判断 当前分析对象位于 src/sap.f/src/sap/f/DynamicPageAccessibleLandmarkInfo.j…...

RouterOS网桥VLAN实战:从零构建安全隔离的二层虚拟网络

1. VLAN基础与RouterOS网桥概述 刚接触网络管理的朋友可能经常听到"VLAN"这个词&#xff0c;但总觉得它神秘莫测。其实VLAN就像给一栋办公楼划分不同部门&#xff1a;财务部、研发部、市场部各自有独立的办公区域&#xff0c;既保证了隐私安全&#xff0c;又避免了相…...

内网渗透实战:利用SSH密钥实现Linux主机间横向移动

1. SSH密钥横向移动的核心原理 当你第一次接触内网渗透时&#xff0c;可能会被各种复杂的技术术语吓到。其实SSH密钥横向移动的原理非常简单&#xff1a;就像用钥匙开锁一样&#xff0c;只要拿到目标主机的SSH私钥&#xff0c;就能像合法用户一样登录系统。我在实际渗透测试中发…...

Modelsim与Vivado仿真差异:从阻塞赋值到存储IP的深度解析

1. 当仿真结果“精神分裂”&#xff1a;一次真实的噩梦Debug之旅 昨天我经历了一场堪称“硬件工程师噩梦”的Debug。我和队友完成了一个LeNet神经网络推理的硬件实现&#xff0c;在Modelsim里跑得顺风顺水&#xff0c;功能验证完美通过。但当我们信心满满地准备移植到Vivado平台…...

DOL-CHS-MODS:开源工具助力游戏体验一键优化

DOL-CHS-MODS&#xff1a;开源工具助力游戏体验一键优化 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS 您是否在为游戏汉化过程中的繁琐配置而头疼&#xff1f;是否曾因美化补丁安装不当导致游戏崩…...

为什么小数据集上神经网络会突然‘开窍‘?揭秘Grokking现象背后的LU机制

为什么小数据集上神经网络会突然"开窍"&#xff1f;揭秘Grokking现象背后的LU机制 在机器学习实践中&#xff0c;我们常常观察到一种反直觉的现象&#xff1a;当神经网络在小规模算法数据集上训练时&#xff0c;测试准确率会在长时间停滞于随机猜测水平后突然跃升至接…...

突破资源封装壁垒:RePKG开源工具全维度应用指南

突破资源封装壁垒&#xff1a;RePKG开源工具全维度应用指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 问题&#xff1a;专用资源格式的困境与破局思路 如何突破专用格式的封锁…...