k8s之dashboard图形界面
一、dashboard简介
二、k8s安装dashboard
(1)下载dashboard镜像(可选)
 
提前下载dashboard镜像(可选):
[root@m test]# docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.0
 
也可上传至私有仓库(可选):
# 启动私有仓库
[root@m test]# docker start registry
# 给镜像打tag
[root@m test]# docker tag mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.0 192.168.116.170:5000/mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.0
# push镜像到私有仓库
[root@m test]# docker push 192.168.116.70:5000/mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.0
 
(2)根据yaml文件创建资源
[root@m test]# vi dashboard.yaml
 
内容(如果可能,注意修改其中的dashboard镜像地址(大约44行)):
apiversion: v1
kind: configmap
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    # allows editing resource and makes sure it is created first.
    addonmanager.kubernetes.io/mode: ensureexists
  name: kubernetes-dashboard-settings
  namespace: kube-system
---
apiversion: v1
kind: serviceaccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: reconcile
  name: kubernetes-dashboard
  namespace: kube-system
---
apiversion: apps/v1
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: ''
        seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
    spec:
      priorityclassname: system-cluster-critical
      containers:
      - name: kubernetes-dashboard
        image: mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.0
        resources:
          limits:
            cpu: 100m
            memory: 300mi
          requests:
            cpu: 50m
            memory: 100mi
        ports:
        - containerport: 8443
          protocol: tcp
        args:
          # platform-specific args here
          - --auto-generate-certificates
        volumemounts:
        - name: kubernetes-dashboard-certs
          mountpath: /certs
        - name: tmp-volume
          mountpath: /tmp
        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
      tolerations:
      - key: "criticaladdonsonly"
        operator: "exists"
---
apiversion: rbac.authorization.k8s.io/v1
kind: role
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: reconcile
  name: kubernetes-dashboard-minimal
  namespace: kube-system
rules:
  # 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
  labels:
    k8s-app: kubernetes-dashboard
    addonmanager.kubernetes.io/mode: reconcile
roleref:
  apigroup: rbac.authorization.k8s.io
  kind: role
  name: kubernetes-dashboard-minimal
subjects:
- kind: serviceaccount
  name: kubernetes-dashboard
  namespace: kube-system
---
apiversion: v1
kind: secret
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    # allows editing resource and makes sure it is created first.
    addonmanager.kubernetes.io/mode: ensureexists
  name: kubernetes-dashboard-certs
  namespace: kube-system
type: opaque
---
apiversion: v1
kind: secret
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    # allows editing resource and makes sure it is created first.
    addonmanager.kubernetes.io/mode: ensureexists
  name: kubernetes-dashboard-key-holder
  namespace: kube-system
type: opaque
---
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:
  selector:
    k8s-app: kubernetes-dashboard
  ports:
  - port: 443
    targetport: 8443
    nodeport: 30018
  type: nodeport
 
创建资源:
[root@m test]# kubectl apply -f dashboard.yaml
configmap/kubernetes-dashboard-settings created
serviceaccount/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-key-holder created
service/kubernetes-dashboard created
[root@m test]# 
 
(3)查看资源
[root@m test]# kubectl get pods -n kube-system
[root@m test]# kubectl get pods -n kube-system -o wide
[root@m test]# kubectl get svc -n kube-system
[root@m test]# kubectl get deploy kubernetes-dashboard -n kube-system
# 查看pod创建详情:
[root@m test]# kubectl describe pod kubernetes-dashboard-7bdfc744fc-hmhh2 -n kube-system
 
(4)生成登录需要的token
# 创建service account
kubectl create sa dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# 查看dashboard-admin的secret名字
admin_secret=$(kubectl get secrets -n kube-system | grep dashboard-admin | awk '{print $1}')
echo admin_secret
# 打印secret的token
kubectl describe secret -n kube-system ${admin_secret} | grep -e '^token' | awk '{print $2}'
 
# (1)创建service account
[root@m test]# kubectl create sa dashboard-admin -n kube-system
serviceaccount/dashboard-admin created
[root@m test]# 
# (2)创建角色绑定关系
[root@m test]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created
[root@m test]# 
# (3)查看dashboard-admin的secret名字
[root@m test]# admin_secret=$(kubectl get secrets -n kube-system | grep dashboard-admin | awk '{print $1}')
[root@m test]# echo admin_secret
admin_secret
[root@m test]# 
# (4)打印secret的token(浏览器访问需要)
[root@m test]# kubectl describe secret -n kube-system ${admin_secret} | grep -e '^token' | awk '{print $2}'
eyjhbgcioijsuzi1niisimtpzci6iij9.eyjpc3mioijrdwjlcm5ldgvzl3nlcnzpy2vhy2nvdw50iiwia3vizxjuzxrlcy5pby9zzxj2awnlywnjb3vudc9uyw1lc3bhy2uioijrdwjllxn5c3rlbsisimt1ymvybmv0zxmuaw8vc2vydmljzwfjy291bnqvc2vjcmv0lm5hbwuioijkyxnoym9hcmqtywrtaw4tdg9rzw4tddvjbjqilcjrdwjlcm5ldgvzlmlvl3nlcnzpy2vhy2nvdw50l3nlcnzpy2utywnjb3vudc5uyw1lijoizgfzagjvyxjklwfkbwluiiwia3vizxjuzxrlcy5pby9zzxj2awnlywnjb3vudc9zzxj2awnllwfjy291bnqudwlkijoimzdjmdfmzmqtnty5mc0xmwvilthindqtmda1mdu2mjg0zjmwiiwic3viijoic3lzdgvtonnlcnzpy2vhy2nvdw50omt1ymutc3lzdgvtomrhc2hib2fyzc1hzg1pbij9.nafbf2tuqen-4lflqhdowz8xz08k1rzbmkr0vevfov6c0dvtuulwx4-uxe_ocep8gqgophlj3sxunwckfvonzxzr5799jeilr3ahuavhumb12m45khrpe-95prvgfzs7oppkiixen1cumterkddpro1znbb-pze95-5rgfimrdw-map2ymo1auagmow-jjhxhgtleujdacedcbwm5ybgfbad3akud_c9ejbokr4-yt4imd99td4twzqjypui_qm76rv54qqylyf5laossr2scoiwa2tvhga4elmmong_hqrjjjzmhux9-unaknfm5z8wttabjow8r7xhm6ifhxflsg
[root@m test]# 
 
 
(5)使用火狐 / 搜狗浏览器访问(个人用的搜狗)
 
 
访问地址(输入密钥):https://192.168.116.170:30018/


            
                                            
                                            
                                            
发表评论