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

服务类网站开发中山家居企业网站建设

服务类网站开发,中山家居企业网站建设,网站关键词优化的方法,wordpress 3.9.1 漏洞本次实验旨在完成 Kubernetes Dashboard 的部署、配置及访问,掌握通过 Helm 安装 Dashboard、创建访问权限、配置端口转发及 NodePort 访问方式,并实现基于令牌的安全登录,最终通过 Web 界面管理 Kubernetes 集群资源。 实验环境 单节点 Ku…

本次实验旨在完成 Kubernetes Dashboard 的部署、配置及访问,掌握通过 Helm 安装 Dashboard、创建访问权限、配置端口转发及 NodePort 访问方式,并实现基于令牌的安全登录,最终通过 Web 界面管理 Kubernetes 集群资源。

实验环境

  • 单节点 Kubernetes 集群(master 节点)
  • 操作系统:CentOS/RHEL
  • Kubernetes 版本:v1.24+
  • Helm 版本:v3.12.3

Dashboard 是基于网页的 Kubernetes 用户界面。

你可以使用 Dashboard 将容器应用部署到Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源 (如 Deployment、Job、DaemonSet 等等)。 例如,你可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。
Dashboard 同时展示了 Kubernetes 集群中的资源状态信息和所有报错信息。
https://kubernetes.io/zh-cn/docs/tasks/access-application-cluster/web-ui-dashboard/ 官方解释
 
Kubernetes Dashboard 目前仅支持基于 Helm 的安装,因为它速度更快, 并且可以让我们更好地控制
Dashboard 运行所需的所有依赖项。
https://cloud.tencent.com/developer/article/2497939  Kubernetes 包管理工具之 Helm 简介

注意:要在有k8s的虚拟机中完成

1.手动下载安装Helm (适用于内网/离线环境)

也可以使用官方脚本一键安装,二选一即可,我选择手动安装

# 官方脚本一键安装helm
# 原理:脚本会自动下载最新版本的 Helm 二进制文件并安装到系统路径。
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3  
chmod 700 get_helm.sh  
sudo ./get_helm.sh  
helm version
手动安装helm
# 下载wget工具
yum install -y wget# 下载 Helm v3.12.3(根据系统架构,如 `linux-amd64`,选择版本)
wget https://get.helm.sh/helm-v3.12.3-linux-amd64.tar.gz# 解压后将 `helm` 文件移动到系统 PATH 目录(如 `/usr/local/bin`)
tar -zxvf helm-v3.12.3-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm# 验证安装
helm version

 2.默认情况下不会部署 Dashboard,可以通过以下命令部署

# 进入目录
cd /etc/yum.repos.d/# 添加 kubernetes-dashboard 仓库
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/# 使用 kubernetes-dashboard Chart 部署名为 kubernetes-dashboard 的 Helm Release
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard# 多了一个命名空间kubernetes-dashboard
kubectl get namespaces# 查看kubernetes-dashboard 产生的pod
kubectl get pod -n kubernetes-dashboard# 查看service,其中 kubernetes-dashboard-kong-proxy 是我们访问的主要pod;
kubectl get svc -A

 

错误情况处理:

从输出来看,Kubernetes Dashboard 已经成功部署,但所有 Pod 都处于 Pending 状态,这表示它们无法被调度到节点上运行。 

 进行诊断,定位问题出现在哪,可以将以下命令的输出导入ai询问解决办法

# 检查 Pod 的 Pending 原因
kubectl describe pods -n kubernetes-dashboard重点关注 Events 部分的错误信息,常见原因包括:
资源不足(CPU/内存不够)。
节点选择器/污点不匹配。
PV/PVC 问题(如果 Dashboard 需要持久化存储)。# 检查节点资源状态
kubectl get nodes# 定位具体原因
kubectl describe pods
kubectl describe nodes

从你的诊断信息来看,Kubernetes Dashboard 的 Pod 处于 Pending 状态的主要原因是 节点调度问题。具体表现为:

核心问题分析

  1. 节点状态异常

    • master 节点:Ready,但有污点 node-role.kubernetes.io/control-plane:NoSchedule(默认不允许调度普通 Pod)。

    • node1 和 node2NotReady,且有污点 node.kubernetes.io/unreachable:NoSchedule(节点失联导致不可调度)。

  2. 调度失败的直接原因

    • 所有 Dashboard Pod 因节点污点无法调度到任何节点:

      0/3 nodes are available:
        1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: },
        2 node(s) had untolerated taint {node.kubernetes.io/unreachable: }.

由于本实验仅使用一台k8s的master节点的机子,可采用临时的解决办法,不需要将node1和node2变成ready,只需要临时允许 Pod 调度到 master

# 1. 删除 master 的 NoSchedule 污点
kubectl taint nodes master node-role.kubernetes.io/control-plane:NoSchedule-# 2. 重新部署 Dashboard(触发重新调度)
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard \--namespace kubernetes-dashboard

 https://localhost:8443

验证修复结果

# 查看kubernetes-dashboard 产生的pod
kubectl get pod -n kubernetes-dashboard# 查看service,其中 kubernetes-dashboard-kong-proxy 是我们访问的主要pod;
kubectl get svc -A

 

3.访问 Dashboard 用户界面

访问方式原理优势常见问题
NodePort(10.1.1.85:30083)通过集群节点的物理端口访问,无需本地进程可远程访问防火墙限制、证书验证
端口转发(localhost:8443)通过 kubectl 进程将本地端口映射到集群 Service,仅本地可用无需开放节点防火墙进程终止、端口占用、浏览器限制
(1)执行如下指令:启动dashboard(本地开发访问方式)
# 启动命令进行端口转发
kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-proxy 8443:443 --address 0.0.0.0  &kubectl 会使得 Dashboard 可以通过 [https://localhost:8443](https://localhost:8443/)
访问。
UI **只能**通过执行这条命令的机器进行访问。# 验证端口已绑定
ss -tulnp | grep 8443# 若返回 HTML 内容,说明端口转发正常
curl -k https://localhost:8443

 

此时正常情况可以通过访问Kubernetes 仪表板(本地访问)

注意:登录需要token,且token有时效性,获得令牌的步骤在下面

https://10.1.1.85:8443/

​ 

(2)创建 ServiceAccount 及ClusterRoleBinding角色绑定

K8S有两种用户:User 和 Service Account,User 给人用,Service Account 给进程用,让进程有相关权限,Dashboard 是一个进程,我们就可以创建一个Service Account 给它 

通过命令方式创建用户和绑定角色(也可以通过yaml 文件创建)

创建 ServiceAccount 和 ClusterRoleBinding(授予管理员权限)# 创建 ServiceAccount(管理员账户)
kubectl create serviceaccount admin01 -n kubernetes-dashboard# 绑定 ClusterRoleBinding(授予集群管理员权限)
kubectl create clusterrolebinding admin01 --clusterrole=cluster-admin \--serviceaccount=kubernetes-dashboard:admin01

(3)创建对应服务账号的token,我选择自定义token有效期为24h
生成访问令牌(Token)正常来说时间不用太长# 生成默认有效期(1小时)的令牌
kubectl -n kubernetes-dashboard create token admin01# 生成自定义有效期(24小时)的令牌
kubectl -n kubernetes-dashboard create token admin01 --duration 24heyJhbGciOiJSUzI1NiIsImtpZCI6ImxTR3lxNnE3UlI2em9qLUM0d3JMWHFOcG5MOUllWDZRY1ZYOU5MRGs3NTQifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzQ4NDIzMjk1LCJpYXQiOjE3NDgzMzY4OTUsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbjAxIiwidWlkIjoiNTM2ZjZjODYtMDQ1Mi00MTA2LTg4MzYtNmZkZDFlYzY4OTc3In19LCJuYmYiOjE3NDgzMzY4OTUsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbjAxIn0.Uh55Iqr1gWlcCXrEFMhQcB2gmNDSiqNkJPv4b_m7kQqKxL59sSOgPTNov4PCgrP9mmYgb-hahBarMJ0JRPelYPA3vFt20sT1MAQR3V-xNpRITUUkqEY3UZ_5D7UTSYjP9624r5-vsZ_cQj60Kfcm9zsmZTXD67nAX_MB8RtYBwWvg-fEcvRDYpSugTQz8TePmcGTFUyOxClGDby4n9N6SKFtoSJFaBJVa7neKeFE6DWA3L3Xlc1S9HObzbo2_BZct4LJnqHoIcjv2uQoRy2goiVJzuRU_fqnZaJkKjQDxmp8IBfkQScSpBQwECNvqeP3wLwPR34CshwjrBjzRMWneg
​ (4)修改端口类型,可以实现外部访问
修改 Service 类型为 NodePort(外部访问)# 修改 Service 类型为 NodePort
kubectl patch svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard \--type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}]'# 指定固定 NodePort(例如 30083)
kubectl patch svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard \--type='json' -p '[{"op":"add","path":"/spec/ports/0/nodePort","value":30083}]'

测试访问:https://10.1.1.85:30083/

由于 Dashboard 使用的是自签名证书,浏览器会显示安全警告。不同浏览器的处理方式如下:

  • Chrome/Edge
    输入地址后可能会看到 “此站点不安全” 的提示,点击 “高级” → “继续前往 localhost(不安全)”
  • Firefox
    点击 “高级” → “接受风险并继续”
  • Safari
    可能需要先在 “系统偏好设置” → “安全性与隐私” 中允许访问该证书。

输入令牌点击登录 

出现以下页面即可

4. k8s dashboard 的基本使用

(1)点击pods,创建pod(三种方式)

直接编写yaml或json 文件;导入已经写好的yaml或json;通过表单创建

点击部署,刷新状态查看

点击对应的pod 能看到详细信息;类似与  kubectl describe  pod xx 

​ (2)pod具体操作——点击 如下图标,看看作用

1为查看日志

2为在pod中运行  

3为编辑资源 

4为删除资源 

5.扩展内容

(1)权限查询
role: 名称空间的系统权限
clusterrole:全局权限
(2)系统权限
查询某一个名称空间内的所有系统权限
kubectl -n kube-system get role
查询名称空间内的系统权限的详细信息
kubectl -n kube-system describe role kube-proxy


(3)全局权限
查看所有全局权限
kubectl -n kube-system get clusterrole


指定查看某一个权限的详细信息
kubectl -n kube-system describe clusterrole admin


(4)查看用户
kubectl get serviceaccounts  [用户名]  -n kubernetes-dashboard 

示例:

# 查询 kubernetes-dashboard 命名空间下的所有 ServiceAccount

kubectl get serviceaccounts -n kubernetes-dashboard

6.验证内容

  1. 部署验证

    • Dashboard 相关 Pod 均处于 Running 状态,包括 API、Auth、Kong 代理和 Web 组件
    • Service 配置正确,kubernetes-dashboard-kong-proxy 暴露目标端口
  2. 访问验证

    • 本地端口转发访问 https://localhost:8443 成功返回 Dashboard 页面
    • NodePort 方式访问 https://10.1.1.85:30083 可正常登录
    • 令牌验证通过,可进入集群管理界面
  3. 功能验证

    • 成功通过 Web 界面创建 Pod、查看资源状态
    • 实现 Pod 日志查看、在线编辑、删除等操作
    • 验证 RBAC 权限查询功能,可查看 Role、ClusterRole 及 ServiceAccount 信息

7.关键问题与解决方案

  1. Pod 调度失败

    • 原因:master 节点默认禁止调度普通 Pod(NoSchedule 污点)
    • 解决:移除污点 kubectl taint nodes master node-role.kubernetes.io/control-plane:NoSchedule-
  2. 端口占用问题

    • 原因port-forward 进程未正确终止导致端口残留
    • 解决:强制终止进程 pkill -9 -f "kubectl port-forward",重新启动转发
  3. 证书验证失败

    • 原因:自签名证书未被浏览器信任
    • 解决:Chrome 中输入 thisisunsafe 强制跳过,或导入证书到浏览器信任列表
  4. 令牌失效问题

    • 原因:默认令牌有效期仅 1 小时
    • 解决:使用 --duration 参数生成长期令牌(如 24h

本次实验完整实现了 Kubernetes Dashboard 的部署与访问,验证了从环境准备、组件部署、权限配置到界面操作的全流程。通过解决节点调度、端口占用、证书验证等典型问题,掌握了 Dashboard 在单节点集群中的实用部署方案。Dashboard 作为 Kubernetes 的图形化管理工具,有效降低了集群操作门槛,但其安全配置和性能优化仍需在实际应用中持续关注。

http://www.dtcms.com/a/428079.html

相关文章:

  • 【Android】Kotlin.flow在主线程collect为什么不阻塞主线程?
  • 数据整合展示中心
  • 阜宁网站制作哪家好我公司想做网站
  • Spring IOC源码篇七 核心方法obtainFreshBeanFactory自定义标签
  • 在哪里找做网站的客户郴州网络营销
  • 产生式规则对人工智能中自然语言处理深层语义分析的影响与启示研究
  • 南宁专业网站开发潍坊市网站制作
  • 网站后台登录密码修改自己网站做问卷调查
  • 在命令提示符页面中用pip命令行安装Python第三方库的详细步骤
  • 杭州开发网站的公司网站默认中文字体
  • 深度解析Epoch:模型训练中的“时间与泛化“博弈
  • MySQL索引特性(重点)
  • 【有序数组去重】2022-11-25
  • 【11408学习记录】考研数学线性代数精讲:矩阵方程求解与秩的深度解析
  • 专业沈阳网站制作大数据公司排名
  • 做受视频网站现在流行什么语言建设网站
  • TDengine 时序函数 STATEDURATION 用户手册
  • Java-Spring入门指南(十二)SpringAop的三种实现方式
  • 网站在线统计代码cms开发框架
  • CometD 长轮询协议及在Salesforce中的应用
  • 企术建站网站收录查询主要由哪几个网站
  • 中小型网站建设与网络搭建教育机构加盟
  • 重庆职业能力建设投稿网站网站正能量免费推广软件晚上
  • LeetCode 114. 二叉树展开为链表
  • 网站性能优化电子商务网站建设与管理期末答案
  • 橙色网站设计手机社区网站模板
  • ns3 配置 Ubuntu × CLion
  • 大模型——长文拆解上下文工程落地策略与实践
  • 网站免费建站pixiv appdw如何在网站做弹窗
  • 分身宝 1.0.8 | 无限多开系统级分身~更稳定安全支持同时登录多个社交软件、游戏账号,互不干扰,操作简单便捷,一键切换