k8s !k8s多节点仪表盘(web界面)部署与谷歌浏览器访问k8s仪表盘问题解决!

本文主要是介绍k8s !k8s多节点仪表盘(web界面)部署与谷歌浏览器访问k8s仪表盘问题解决!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一:k8s的WEB界面部署
        • 1.1:两个master节点检查pod资源是否正常
        • 1.2、master节点上创建dashboard工作目录,并拷贝部署web界面所需的文件到指定目录
        • 1.3、根据上传的文件创建相应的pod
        • 1.4:访问web界面,并解决访问问题
        • 1.5:选择使用令牌访问

前言

一:k8s的WEB界面部署

1.1:两个master节点检查pod资源是否正常
[root@master ~]# kubectl get nodes	'//检查node节点是否运行正常'
NAME              STATUS   ROLES    AGE   VERSION
192.168.233.132   Ready    <none>   8d    v1.12.3
192.168.233.133   Ready    <none>   8d    v1.12.3
[root@master ~]# kubectl get pods	'//检查之前创建的pod资源是否运行正常'
NAME                    READY   STATUS    RESTARTS   AGE
nginx-dbddb74b8-5s6h7   1/1     Running   0          7d8h
1.2、master节点上创建dashboard工作目录,并拷贝部署web界面所需的文件到指定目录
  • 下载的网址(直接复制即可):https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dashboard
    在这里插入图片描述
[root@master dashboard]# rz -E
rz waiting to receive.
[root@master dashboard]# ls
dashboard-configmap.yaml   dashboard-secret.yaml
dashboard-deployment.yaml  dashboard-service.yaml
dashboard-rbac.yaml        k8s-admin.yaml
'//configmap.yaml:配置,deployment.yaml:控制器,rbac.yaml:角色控制,访问控制,secret.yaml:安全,service.yaml:服务'
  • 其中service的文件需要添加node节点的访问端口
apiVersion: v1
kind: Service
metadata:name: kubernetes-dashboardnamespace: kube-systemlabels:k8s-app: kubernetes-dashboardkubernetes.io/cluster-service: "true"addonmanager.kubernetes.io/mode: Reconcile
spec:type: NodePort	'//添加类型'selector:k8s-app: kubernetes-dashboardports:- port: 443targetPort: 8443nodePort: 30005	'//添加类型端口'
  • 还需要自己编写一个admin的yaml文件
apiVersion: v1
kind: ServiceAccount
metadata:name: dashboard-adminnamespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:name: dashboard-admin
subjects:- kind: ServiceAccountname: dashboard-adminnamespace: kube-system
roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io
1.3、根据上传的文件创建相应的pod
  • 创建访问控制的pod
[root@master dashboard]# kubectl create -f dashboard-rbac.yaml 
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
[root@master dashboard]# kubectl get Role -n kube-system	'//Role是dashboard-rbac.yaml文件中指明的Kind,-n是指定namespace,同样在配置文件中可以查看'
NAME                                             AGE
extension-apiserver-authentication-reader        8d
kubernetes-dashboard-minimal                     19s	'//创建成功'
system::leader-locking-kube-controller-manager   8d
system::leader-locking-kube-scheduler            8d
system:controller:bootstrap-signer               8d
system:controller:cloud-provider                 8d
system:controller:token-cleaner                  8d
  • 创建安全的pod
[root@master dashboard]# kubectl create -f dashboard-secret.yaml 
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-key-holder created
[root@master dashboard]# kubectl get Secret -n kube-system
NAME                              TYPE                                  DATA   AGE
default-token-cnnbv               kubernetes.io/service-account-token   3      8d
kubernetes-dashboard-certs        Opaque                                0      33s
kubernetes-dashboard-key-holder   Opaque                                0      33s
  • 同理创建其他的pod
'//创建配置的pod'
[root@master dashboard]# kubectl create -f dashboard-configmap.yaml 
configmap/kubernetes-dashboard-settings created
[root@master dashboard]# kubectl get Configmap -n kube-system
NAME                                 DATA   AGE
extension-apiserver-authentication   1      8d
kubernetes-dashboard-settings        0      17s
'//创建控制器的pod'
[root@master dashboard]# kubectl create -f dashboard-deployment.yaml 
serviceaccount/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
[root@master dashboard]# kubectl get ServiceAccount -n kube-system
NAME                   SECRETS   AGE
default                1         8d
kubernetes-dashboard   1         22s
'//创建service服务pod'
[root@master dashboard]# kubectl create -f dashboard-service.yaml 
service/kubernetes-dashboard created
[root@master dashboard]# kubectl get service -n kube-system
NAME                   TYPE       CLUSTER-IP   EXTERNAL-IP   PORT(S)    
kubernetes-dashboard   NodePort   10.0.0.139   <none>        443:30005/T
'//pod资源只是提供程序应用,一旦service创建了,那么pod资源会被提供出去可以访问,端口伴随着service出现的,通过nodeport端口访问web界面'
  • 查看创建完成的pod资源
[root@master dashboard]# kubectl get pods -n kube-system	'//查看创建在指定的kube-system命名空间下的资源'
NAME                                    READY   STATUS    RESTARTS   AGE
kubernetes-dashboard-65f974f565-gxg98   1/1     Running   0          9m45s
'//可以缩写,可以同时查看多个资源'
[root@master dashboard]# kubectl get pods,svc -n kube-system
NAME                                        READY   STATUS    RESTARTS   AGE
pod/kubernetes-dashboard-65f974f565-gxg98   1/1     Running   0          12mNAME                           TYPE       CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE
service/kubernetes-dashboard   NodePort   10.0.0.139   <none>        443:30005/TCP   5m21s
  • 查看pod资源在哪个节点
[root@master dashboard]# kubectl get pods -n kube-system -o wide
NAME                                    READY   STATUS    RESTARTS   AGE   IP           NODE              NOMINATED NODE
kubernetes-dashboard-65f974f565-gxg98   1/1     Running   0          12m   172.17.4.2   192.168.233.133   <none>
  • 查看pod资源日志
[root@master dashboard]# kubectl logs kubernetes-dashboard-65f974f565-gxg98 -n kube-system
  • 总结一下:k8s创建pod资源有两种方式

1、使用kubectl 命令创建:kubectl run 名称 --image= 镜像
2、使用yaml文件格式进行创建:kubectl create -f yaml文件

1.4:访问web界面,并解决访问问题
  • 访问网址:https://192.168.233.133:30005,打开开发者工具,查看security发现缺少证书
    在这里插入图片描述
  • 为谷歌浏览器写一个证书
root@master dashboard]# vim dashboard-cert.sh
cat > dashboard-csr.json <<EOF
{"CN": "Dashboard","hosts": [],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","L": "BeiJing","ST": "BeiJing"}]
}
EOFK8S_CA=$1
cfssl gencert -ca=$K8S_CA/ca.pem -ca-key=$K8S_CA/ca-key.pem -config=$K8S_CA/ca-config.json -profile=kubernetes dashboard-csr.json | cfssljson -bare dashboard
kubectl delete secret kubernetes-dashboard-certs -n kube-system
kubectl create secret generic kubernetes-dashboard-certs --from-file=./ -n kube-system
  • 生成证书到指定目录
 [root@master dashboard]# bash dashboard-cert.sh /root/k8s/k8s-cert/
  • 修改控制的配置文件
 [root@master dashboard]# vim dashboard-deployment.yaml ...省略内容ports:- containerPort: 8443protocol: TCPargs:# PLATFORM-SPECIFIC ARGS HERE- --auto-generate-certificates- --tls-key-file=dashboard-key.pem	'//下方添加这两行内容'- --tls-cert-file=dashboard.pem
  • 重新部署更新,使用apply命令
[root@master dashboard]# kubectl apply -f dashboard-deployment.yaml 
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
serviceaccount/kubernetes-dashboard configured
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
deployment.apps/kubernetes-dashboard configured
[root@master dashboard]# kubectl get pods -n kube-system -o wide
NAME                                    READY   STATUS    RESTARTS   AGE   IP            NODE              NOMINATED NODE
kubernetes-dashboard-7dffbccd68-58qms   1/1     Running   0          26s   172.17.26.3   192.168.233.132   <none>	'//节点变了'
  • 再次访问web界面
    在这里插入图片描述
    在这里插入图片描述
1.5:选择使用令牌访问
  • 生成令牌
[root@master dashboard]# kubectl create -f k8s-admin.yaml 
serviceaccount/dashboard-admin created
clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created
[root@master dashboard]# kubectl get secret -n kube-system
NAME                               TYPE                                  DATA   AGE
dashboard-admin-token-zwktc        kubernetes.io/service-account-token   3      14s	'//生成了令牌'
default-token-cnnbv                kubernetes.io/service-account-token   3      8d
kubernetes-dashboard-certs         Opaque                                11     9m58s
kubernetes-dashboard-key-holder    Opaque                                2      35m
kubernetes-dashboard-token-qgppd   kubernetes.io/service-account-token   3      32m
  • 查看令牌
[root@master dashboard]# kubectl describe secret dashboard-admin-token-zwktc -n kube-system
Name:         dashboard-admin-token-zwktc
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-adminkubernetes.io/service-account.uid: ec6e301f-90d4-11ea-8c4f-000c294b2dd3Type:  kubernetes.io/service-account-tokenData
====
ca.crt:     1359 bytes
namespace:  11 bytes
token:    '//复制下方令牌,填写到浏览器中即可'  eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tendrdGMiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZWM2ZTMwMWYtOTBkNC0xMWVhLThjNGYtMDAwYzI5NGIyZGQzIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.n8a101tY2bjlv99A3WHiEsdlLBBnTXXeJED32lOBjJ6M66_rFDVyxzpAWqxY146NkRdaXK0eVdNzIkAPRXWEO1uHjU17T3iHeWBqSzQgzxvN2NgnAam4zQmBE4XaeO2HFv63MX4VDzvwsu8k8MeiryUEBw86DTndCfgvnxcPszq2rZR5QwiHMjAxFQMIA7SQvWj2-rDO7ln6gkqVU5fH04ujz7p2sXI_QQezFjMDTtKWFcMegT3T2gq65-CMB34MyEcxZxGWPQeDu4A4S7PLPlbr0CLdO7YVBWU_pEab0LHBlN8KsJYeZd49kBMgA-EdY5uMQJbH_XFHyGXq3VShwA
  • 再次访问web界面
    在这里插入图片描述

这篇关于k8s !k8s多节点仪表盘(web界面)部署与谷歌浏览器访问k8s仪表盘问题解决!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/795205

相关文章

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

pip install jupyterlab失败的原因问题及探索

《pipinstalljupyterlab失败的原因问题及探索》在学习Yolo模型时,尝试安装JupyterLab但遇到错误,错误提示缺少Rust和Cargo编译环境,因为pywinpty包需要它... 目录背景问题解决方案总结背景最近在学习Yolo模型,然后其中要下载jupyter(有点LSVmu像一个

Goland debug失效详细解决步骤(合集)

《Golanddebug失效详细解决步骤(合集)》今天用Goland开发时,打断点,以debug方式运行,发现程序并没有断住,程序跳过了断点,直接运行结束,网上搜寻了大量文章,最后得以解决,特此在这... 目录Bug:Goland debug失效详细解决步骤【合集】情况一:Go或Goland架构不对情况二:

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应