程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

原力计划【云原生丨Kubernetes系列⑥】集群的WEB UI管理⼯具:Dashboard 插件

发布于2022-09-18 17:38     阅读(873)     评论(0)     点赞(26)     收藏(1)


前言

Kubernetes Dashboard 是 k8s集群的⼀个 WEB UI管理⼯具,代码托管在 github 上。

在这里插入图片描述


介绍

Dashboard(仪表盘)是基于Web的Kubernetes用户界面。

  • 可以使用仪表盘将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障排除,并管理集群本身机器伴随资源。
  • 可以使用仪表盘来概述集群上运行的应用程序,以及创建或修改单个Kubernetes资源(例如部署,作业,守护进程等)。

例如:可以使用部署向导扩展部署,启动滚动更新,重新启动Pod或部署新应用程序。仪表盘还提供有关集群中Kubernetes资源状态以及可能发生的任何错误的信息。


插件安装

直接使⽤官⽅的配置⽂件安装即可:

$ wget https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommende d/kubernetes-dashboard.yaml

为了测试⽅便,我们将 Service 改成 NodePort 类型,然后直接部署新版本的 dashboard 即可。

$ kubectl create -f kubernetes-dashboard.yaml

然后我们可以查看 dashboard 的外⽹访问端⼝:

$ kubectl get svc kubernetes-dashboard -n kube-system 
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE 
haproxy ClusterIP 10.254.125.90 <none> 8440/TCP,8442/TCP 2d 
kubernetes-dashboard NodePort 10.254.122.185 <none> 443:31694/TCP 10s 

然后直接访问集群中的任何⼀个节点 IP 加上上⾯的31694端⼝即可打开 dashboard ⻚⾯了

由于 dashboard 默认是⾃建的 https 证书,该证书是不受浏览器信任的,所以我们需要强制跳转 就可以了。

默认 dashboard 会跳转到登录⻚⾯,我们可以看到 dashboard 提供了 Kubeconfig 和 token 两种登录 ⽅式,我们可以直接跳过或者使⽤本地的 Kubeconfig ⽂件进⾏登录,可以看到会跳转到如下⻚⾯:
在这里插入图片描述这是由于该⽤户没有对 default 命名空间的访问权限。

配置dashboard-service



# cat dashboard-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: kubernetes-dashboard
  namespace: kube-system
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
spec:
  type: NodePort 
  selector:
    k8s-app: kubernetes-dashboard
  ports:
  - port: 80
    targetPort: 9090

指定端口类型为 NodePort,这样外界可以通过地址 nodeIP:nodePort 访问 dashboard;

配置dashboard-controller



# cat dashboard-controller.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: kubernetes-dashboard
  namespace: kube-system
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
spec:
  selector:
    matchLabels:
      k8s-app: kubernetes-dashboard
  template:
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ''
    spec:
      serviceAccountName: dashboard
      containers:
      - name: kubernetes-dashboard
        image: index.tenxcloud.com/jimmy/kubernetes-dashboard-amd64:v1.6.0
        resources:
          limits:
            cpu: 100m
            memory: 50Mi
          requests:
            cpu: 100m
            memory: 50Mi
        ports:
        - containerPort: 9090
        livenessProbe:
          httpGet:
            path: /
            port: 9090
          initialDelaySeconds: 30
          timeoutSeconds: 30
      tolerations:
      - key: "CriticalAddonsOnly"
        operator: "Exists"

身份认证

登录 dashboard 的时候⽀持 Kubeconfig 和token 两种认证⽅式,Kubeconfig 中也依赖token 字段,所 以⽣成token 这⼀步是必不可少的。

生成token

我们创建⼀个admin⽤户并授予admin ⻆⾊绑定,使⽤下⾯的yaml⽂件创建admin⽤户并赋予他管理员 权限,然后就可以通过token 登陆dashbaord,这种认证⽅式本质实际上是通过Service Account 的身 份认证加上Bearer token请求 API server 的⽅式实现。

kind: ClusterRoleBinding 
apiVersion: rbac.authorization.k8s.io/v1beta1 
metadata: 
name: admin 
annotations: 
rbac.authorization.kubernetes.io/autoupdate: "true" 
roleRef: 
kind: ClusterRole 
name: cluster-admin 
apiGroup: rbac.authorization.k8s.io 
subjects: 
- kind: ServiceAccount 
name: admin 
namespace: kube-system 
--- 
apiVersion: v1 
kind: ServiceAccount 
metadata: 
name: admin 
namespace: kube-system 
labels: 
kubernetes.io/cluster-service: "true" 
addonmanager.kubernetes.io/mode: Reconcile 

上⾯的 admin ⽤户创建完成后我们就可以获取到该⽤户对应的 token 了,如下命令:

$ kubectl get secret -n kube-system|grep admin-token 
admin-token-d5jsg kubernetes.io/service-account-token 3 1d 
$ kubectl get secret admin-token-d5jsg -o jsonpath={.data.token} -n kube-system |base64 -d 
# 会⽣成⼀串很⻓的base64后的字符串 

然后在 dashboard 登录⻚⾯上直接使⽤上⾯得到的 token 字符串即可登录,这样就可以拥有管理员权 限操作整个 kubernetes 集群的对象,当然你也可以为你的登录⽤户新建⼀个指定操作权限的⽤户。
在这里插入图片描述


访问Dashboard

有以下三种方式:

  • kubernetes-dashboard 服务暴露了 NodePort,使用http://NodeIP:nodePort 地址访问 dashboard;
  • 通过 kube-apiserver 访问 dashboard(https 6443端口和http 8080端口方式);
  • 通过 kubectl proxy 访问 dashboard:

通过 kubectl proxy 访问 dashboard

$ kubectl proxy --address='192.168.1.121' --port=8086 --accept-hosts='^*$'
Starting to serve on 192.168.1.121:8086

需要指定 --accept-hosts 选项,否则浏览器访问 dashboard 页面时提示 “Unauthorized”;

通过 kube-apiserver 访问dashboard

获取集群服务地址列表

$ kubectl cluster-info
Kubernetes master is running at https://192.168.1.121:6443
KubeDNS is running at https://192.168.1.121:6443/api/v1/proxy/namespaces/kube-system/services/kube-dns
kubernetes-dashboard is running at https://192.168.1.121:6443/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard

在这里插入图片描述

原文链接:https://blog.csdn.net/m0_63947499/article/details/126584762




所属网站分类: 技术文章 > 博客

作者:Bhbvhbbgg

链接:http://www.qianduanheidong.com/blog/article/415440/4c612fcea04cfab0dfec/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

26 0
收藏该文
已收藏

评论内容:(最多支持255个字符)