kubernetes学习14—Dashboard搭建和认证

 

一、介绍

  Kubernetes DashboardKubernetes集群的基于Web的通用UI。它允许用户管理在群集中运行的应用程序并对其进行故障排除,以及管理群集本身

 

二、搭建dashboard

1、编写yaml文件

借鉴GitHub,修改了image的下载地址和pod的一些配置

[root@master ~]# vim dashboard.yaml

# Filename: dashboard.yaml # Revision: 1.0 # Date: 2018/10/18 # Author: along # Description: Build kubernetes dashboard  # ------------------- Dashboard Secret ------------------- #  apiVersion: v1 kind: Secret metadata:   labels:     k8s-app: kubernetes-dashboard   name: kubernetes-dashboard-certs   namespace: kube-system type: Opaque  --- # ------------------- Dashboard Service Account ------------------- #  apiVersion: v1 kind: ServiceAccount metadata:   labels:     k8s-app: kubernetes-dashboard   name: kubernetes-dashboard   namespace: kube-system  --- # ------------------- Dashboard Role & Role Binding ------------------- #  kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata:   name: kubernetes-dashboard-minimal   namespace: kube-system rules:   # Allow Dashboard to create 'kubernetes-dashboard-key-holder' secret. - apiGroups: [""]   resources: ["secrets"]   verbs: ["create"]   # Allow Dashboard to create 'kubernetes-dashboard-settings' config map. - apiGroups: [""]   resources: ["configmaps"]   verbs: ["create"]   # Allow Dashboard to get, update and delete Dashboard exclusive secrets. - apiGroups: [""]   resources: ["secrets"]   resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs"]   verbs: ["get", "update", "delete"]   # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map. - apiGroups: [""]   resources: ["configmaps"]   resourceNames: ["kubernetes-dashboard-settings"]   verbs: ["get", "update"]   # Allow Dashboard to get metrics from heapster. - apiGroups: [""]   resources: ["services"]   resourceNames: ["heapster"]   verbs: ["proxy"] - apiGroups: [""]   resources: ["services/proxy"]   resourceNames: ["heapster", "http:heapster:", "https:heapster:"]   verbs: ["get"]  --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata:   name: kubernetes-dashboard-minimal   namespace: kube-system roleRef:   apiGroup: rbac.authorization.k8s.io   kind: Role   name: kubernetes-dashboard-minimal subjects: - kind: ServiceAccount   name: kubernetes-dashboard   namespace: kube-system  --- # ------------------- Dashboard Deployment ------------------- #  kind: Deployment apiVersion: apps/v1beta2 metadata:   labels:     k8s-app: kubernetes-dashboard   name: kubernetes-dashboard   namespace: kube-system spec:   replicas: 1   revisionHistoryLimit: 10   selector:     matchLabels:       k8s-app: kubernetes-dashboard   template:     metadata:       labels:         k8s-app: kubernetes-dashboard     spec:       containers:       - name: kubernetes-dashboard         image: mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.0         ports:         - containerPort: 8443           protocol: TCP         args:           - --auto-generate-certificates           # Uncomment the following line to manually specify Kubernetes API server Host           # If not specified, Dashboard will attempt to auto discover the API server and connect           # to it. Uncomment only if the default does not work.           # - --apiserver-host=http://my-address:port         volumeMounts:         - name: kubernetes-dashboard-certs           mountPath: /certs           # Create on-disk volume to store exec logs         - mountPath: /tmp           name: tmp-volume         livenessProbe:           httpGet:             scheme: HTTPS             path: /             port: 8443           initialDelaySeconds: 30           timeoutSeconds: 30       volumes:       - name: kubernetes-dashboard-certs         secret:           secretName: kubernetes-dashboard-certs       - name: tmp-volume         emptyDir: {}       serviceAccountName: kubernetes-dashboard       # Comment the following tolerations if Dashboard must not be deployed on master       tolerations:       - key: node-role.kubernetes.io/master         effect: NoSchedule  --- # ------------------- Dashboard Service ------------------- #  kind: Service apiVersion: v1 metadata:   labels:     k8s-app: kubernetes-dashboard   name: kubernetes-dashboard   namespace: kube-system spec:   type: NodePort   ports:     - port: 443       targetPort: 8443       nodePort: 30000   selector:     k8s-app: kubernetes-dashboard

 

2、apply yaml文件,搭建dashboard

[root@master ~]# kubectl apply -f dashboard.yaml

secret/kubernetes-dashboard-certs created

serviceaccount/kubernetes-dashboard created

role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created

rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created

deployment.apps/kubernetes-dashboard created

service/kubernetes-dashboard created

 

3、查看验证

1pod已经创建成功

[root@master ~]# kubectl get pods -n kube-system |grep dashboard

kubernetes-dashboard-68bf55748d-4zzph   1/1       Running   0          2m

2service也已经创建成功,并且有映射端口,此时已经可以登录了,但是无法登录,因为没有认证

[root@master ~]# kubectl get svc -n kube-system

NAME                   TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)         AGE

kubernetes-dashboard   NodePort    10.97.55.246   <none>        443:30000/TCP   2m

 

三、dashboard与kubernetes集群的认证,方案一:令牌认证

(1)有两种认证方法:

  口令

  kubeconfig

(2)并且在认证的时候,还可以管理限制dashboard用户的权限;为了让大家进一步理解:

  在方案一:口令认证时,dashboard用户的权限设为对所有名称空间都有admin的权限;

  在方案二:kubeconfig认证时,dashboard用户的权限设为只对default名称空间有admin权限;

1、授权,对所有名称空间都有admin的权限

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信