美文网首页docker. k8s
kubernates部署可视化插件Dashboard

kubernates部署可视化插件Dashboard

作者: do_young | 来源:发表于2018-11-29 17:29 被阅读52次

背景

当kubernates环境安装完成以后,需要监控kubernates环境的运行状态。
需要使用kubectl输入各种指令来调用api-server来查询,比如:

kubectl get node
kubectl get deployment
kubectl get pod 
......

这样比较麻烦,在kubernates项目中有一个Dashboard插件, 该插件提供一个可视化的WEB界面,方便我们监控kubernates运行状态。下面具体介绍一下如何安装,这里默认你已经安装好了kubernates

安装

下载镜像

Dashboard的运行需要依赖于docker下的该镜像

REPOSITORY                                               TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/kubernetes-dashboard-amd64                    v1.8.3              0c60bcf89900        9 months ago        102.3 MB

但由于因为访问不到google的服务器,所以镜像需要离线下载再导入的方式,百度搜索一下,可以找到很多离线下载的镜像包。

获取Dashboard部署文件

访问该网址,获得Dashboard部署文件。

屏幕快照 2018-11-28 下午3.56.11.png
具体的做法是将kubernetes-dashboard.yaml文件中的Service定义修改为nodeType类型,如下所示:
# ------------------- Dashboard Service ------------------- #

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort
  ports:
    - nodePort: 8081 #对外端口号
      port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

修改完成以后,通过命令部署Dashboard服务

kubectl apply -f kubernetes-dashboard.yaml

正常情况下,就可以通过https://ip:port/访问到界面了。

配置Dashbaord

登录系统,将会看到如下的异常。

屏幕快照 2018-11-28 下午4.19.12.png
异常原因是因为权限不足,需要创建dashboard的用户即授权。可以参考该文章创建用户并授权。
下面给两个配置文件以供参考。

测试环境

测试环境下,可以直接使用kubernates的cluster-admin角色权限授权给kubernetes-dashboard用户,这个cluster-admin角色什么权限都有,所以在生产中使用比较危险,特别是给外网暴露端口可以访问以后。
创建并执行如下的权限配置文件kubernetes-dashboard-acess.yaml

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
    name: kubernetes-dashboard
    labels:
        k8s-app: kubernetes-dashboard
roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: kubernetes-dashboard
    namespace: kube-system

生产环境

如果是生产环境,可以参考以下配置。这里创建一个namespace为default的用户,该用户可以查看deployements和pods的get,list,watch权限。
首先创建一个用户,用户名为going

 kubectl create sa going -n default

创建一个yaml文件,配置角色及将角色权限绑定给用户going

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: default
  name: role-going
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]
- apiGroups: ["extensions", "apps"]
  resources: ["deployments"]
  verbs: ["get", "list", "watch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: role-bind-going
  namespace: default
subjects:
- kind: ServiceAccount
  name: going
  namespace: default
roleRef:
  kind: Role
  name: role-going
  apiGroup: rbac.authorization.k8s.io  

应用配置以后,通过下面指令找到用户going的token信息进行系统登录。

kubectl get secret -n default |grep going
#going-token-qbxzh                  kubernetes.io/service-account-token   3         47m
kubectl get secret going-token-qbxzh -o jsonpath={.data.token} -n default |base64 -d

这里就可以查看命名空间为default下的deployement和pod信息了。

相关文章

网友评论

    本文标题:kubernates部署可视化插件Dashboard

    本文链接:https://www.haomeiwen.com/subject/anxzqqtx.html