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 端口。

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

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

相关文章

本地离线模型搭建指南-中文大语言模型底座选择依据

搭建一个本地中文大语言模型&#xff08;LLM&#xff09;涉及多个关键步骤&#xff0c;从选择模型底座&#xff0c;到运行机器和框架&#xff0c;再到具体的架构实现和训练方式。以下是一个详细的指南&#xff0c;帮助你从零开始构建和运行一个中文大语言模型。 本地离线模型搭…

基于Springboot + vue 的抗疫物质管理系统的设计与实现

目录 &#x1f4da; 前言 &#x1f4d1;摘要 &#x1f4d1;系统流程 &#x1f4da; 系统架构设计 &#x1f4da; 数据库设计 &#x1f4da; 系统功能的具体实现 &#x1f4ac; 系统登录注册 系统登录 登录界面 用户添加 &#x1f4ac; 抗疫列表展示模块 区域信息管理 …

APP自动化测试-Appium常见操作之详讲

一、基本操作 1、点击操作 示例&#xff1a;element.click() 针对元素进行点击操作 2、初始化&#xff1a;输入中文的处理 说明&#xff1a;如果连接的是虚拟机&#xff08;真机无需加这两个参数&#xff0c;加上可能会影响手工输入&#xff09;&#xff0c;在初始化配置中…

【初阶数据结构】深入解析栈:探索底层逻辑

&#x1f525;引言 本篇将深入解析栈:探索底层逻辑&#xff0c;理解底层是如何实现并了解该接口实现的优缺点&#xff0c;以便于我们在编写程序灵活地使用该数据结构。 &#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1…

论坛实现随机发帖的学习

1、badboy操作&#xff0c;录制发帖全过程&#xff0c;录制结果保存&#xff0c;生成为.jmx格式的文件 2、在Jmeter中打开该.jmx文件&#xff0c;重命名&#xff0c;便于了解步骤 3、生成结果树&#xff0c;查看所以步骤是否正确 4、实现随机发帖 断言&#xff1a;具有唯一表…

Java面试八股之什么是分布式垃圾回收

什么是分布式垃圾回收 分布式垃圾回收&#xff08;Distributed Garbage Collection, DGC&#xff09;是Java中一种特殊的垃圾回收机制&#xff0c;主要用于处理跨Java虚拟机&#xff08;JVM&#xff09;的远程对象引用时的内存管理问题。在分布式系统中&#xff0c;当一个JVM中…

yolov10打包为exe

一、前言 本节实验将官方yolov10推理程序打包为exe运行 二、代码 首先下载官方代码至本机&#xff0c;并使用conda创建虚拟环境&#xff0c;并安装好yolov10所需库 conda create --prefix E:/pyenv/myYolo10 python3.8 pip install -r requirements.txt 下载官方模型权重 …

【面试干货】Java中的四种引用类型:强引用、软引用、弱引用和虚引用

【面试干货】Java中的四种引用类型&#xff1a;强引用、软引用、弱引用和虚引用 1、强引用&#xff08;Strong Reference&#xff09;2、软引用&#xff08;Soft Reference&#xff09;3、弱引用&#xff08;Weak Reference&#xff09;4、虚引用&#xff08;Phantom Reference…

在线装修管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;装修队管理&#xff0c;用户管理&#xff0c;装修管理&#xff0c;基础数据管理&#xff0c;论坛管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;…

【计算机网络】[第4章 网络层][自用]

1 概述 (1)因特网使用的TCP/IP协议体系(四层)的网际层,提供的是无连接、不可靠的数据报服务; (2)ATM、帧中继、X.25的OSI体系(七层)中的网络层,提供的是面向连接的、可靠的虚电路服务。 (3)路由选择分两种: 一种是由用户or管理员人工进行配置(只适用于规…

【开发工具】git服务器端安装部署+客户端配置

自己安装一个轻量级的git服务端&#xff0c;仅仅作为代码维护&#xff0c;尤其适合个人代码管理。毕竟代码的版本管理是很有必要的。 这里把git服务端部署在centos系统里&#xff0c;部署完成后可以通过命令行推拉代码&#xff0c;进行版本和用户管理。 一、服务端安装配置 …

爬虫阶段思考

内容&#xff1a;写这篇文章是因为最近帮同学改了很多的爬虫代码&#xff0c;感触良多。 我用豆瓣为例&#xff0c;并不是不会用别的&#xff0c;而是这个我个人感觉最经典。然后还会写我遇到的一些问题以及解决方法。 首先&#xff0c;我们得先知道怎样爬取。我用的scrapy框…

算法基础精选题单 动态规划(dp)(递推+线性dp)(个人题解)

前言&#xff1a; 一些简单的dp问题。 正文&#xff1a; 题单&#xff1a;237题】算法基础精选题单_ACM竞赛_ACM/CSP/ICPC/CCPC/比赛经验/题解/资讯_牛客竞赛OJ_牛客网 (nowcoder.com) 递推&#xff1a; NC235911 走楼梯&#xff1a; #include<bits/stdc.h> using na…

linux 关闭防火墙

文章目录 关闭系统防火墙关闭 linux 防火墙 关闭系统防火墙 systemctl stop firewalld systemctl disable firewalld // 关闭开机自启动 systemctl status firewalld // 查看防火墙状态关闭 linux 防火墙 setenforce 0 getenforce // 查看状态 vim /etc/sysconfig/selinux //…

USB2.0学习4--USB包结构和包类型

目录 1. USB包基本结构 1.1 SOP域&#xff08;Start Of Packet&#xff09; 1.2 SYNC域&#xff08;同步域&#xff09; 1.3 PID域&#xff08;标识域&#xff09; 1.4 地址域&#xff08;ADDR&#xff09; 1.5 帧号域&#xff08;Fram&#xff09; 1.6 数据域&#xff…

jeecg 框架的excel导入 含图片(嵌入式,浮动式)

jeecg 框架的excel导入 含图片&#xff08;嵌入式&#xff0c;浮动式&#xff09; 一、啰嗦二、准备三、 代码1、代码&#xff08;修改覆写的ExcelImportServer&#xff09;2、代码&#xff08;修改覆写的PoiPublicUtil&#xff09;3、代码&#xff08;新增类SAXParserHandler&…

根据正则表达式查找字符串中第一次出现的一个或多个连续数字并返回起止位置re.rearch

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 根据正则表达式 查找字符串中 第一次出现的 一个或多个连续数字 并返回起止位置 re.rearch [太阳]选择题 根据给定的Python代码&#xff0c;哪个选项是正确的&#xff1f; import re patte…

基于Java图书馆管理系统详细设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

“明天下班以后请假了,孩子中考“

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 前几天约服务器…

让在制品管理更有效

徐总的工厂生产线非常繁忙&#xff0c;每天都在不停地运转。但在制品的流转和存储也非常混乱&#xff0c;导致了很多问题的出现。 一方面&#xff0c;由于缺乏有效的管理&#xff0c;在制品的库存不断增加&#xff0c;占用了大量的资金和空间资源。这些库存不仅增加了库存成本&…