✧k8s部署dashboard仪表盘

开始语

一位普通的程序员,慢慢在努力变强!

温馨提示:初始化k8s的步骤文章,请查看以下连接!
初始化k8s方式

1.下载并修改文件

# 下载dashboard文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

# 下载后修改service(kubernetes-dashboard),暴露对外界访问NodePort
  type: NodePort                                                                                                                                                                                                                                                            
  ports:                                                                                                                                                                                                                                                                    
    - port: 443                                                                                                                                                                                                                                                             
      targetPort: 8443                                                                                                                                                                                                                                                      
      nodePort: 32321   # 端口自定义接口

# ----------------此处提供一份修改后的文件,直接使用即可----------------
apiVersion: v1                                                                                                                                                                                                                                                              
kind: Namespace                                                                                                                                                                                                                                                             
metadata:                                                                                                                                                                                                                                                                   
  name: kubernetes-dashboard                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                            
---                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
apiVersion: v1                                                                                                                                                                                                                                                              
kind: ServiceAccount                                                                                                                                                                                                                                                        
metadata:                                                                                                                                                                                                                                                                   
  labels:                                                                                                                                                                                                                                                                   
    k8s-app: kubernetes-dashboard                                                                                                                                                                                                                                           
  name: kubernetes-dashboard                                                                                                                                                                                                                                                
  namespace: kubernetes-dashboard                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                            
---                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
kind: Service                                                                                                                                                                                                                                                               
apiVersion: v1                                                                                                                                                                                                                                                              
metadata:                                                                                                                                                                                                                                                                   
  labels:                                                                                                                                                                                                                                                                   
    k8s-app: kubernetes-dashboard                                                                                                                                                                                                                                           
  name: kubernetes-dashboard                                                                                                                                                                                                                                                
  namespace: kubernetes-dashboard                                                                                                                                                                                                                                           
spec:                                                                                                                                                                                                                                                                       
  type: NodePort                                                                                                                                                                                                                                                            
  ports:                                                                                                                                                                                                                                                                    
    - port: 443                                                                                                                                                                                                                                                             
      targetPort: 8443                                                                                                                                                                                                                                                      
      nodePort: 32321                                                                                                                                                                                                                                                       
  selector:                                                                                                                                                                                                                                                                 
    k8s-app: kubernetes-dashboard                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                            
---                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
apiVersion: v1                                                                                                                                                                                                                                                              
kind: Secret                                                                                                                                                                                                                                                                
metadata:                                                                                                                                                                                                                                                                   
  labels:                                                                                                                                                                                                                                                                   
    k8s-app: kubernetes-dashboard                                                                                                                                                                                                                                           
  name: kubernetes-dashboard-certs                                                                                                                                                                                                                                          
  namespace: kubernetes-dashboard                                                                                                                                                                                                                                           
type: Opaque                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                            
---                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
apiVersion: v1                                                                                                                                                                                                                                                              
kind: Secret                                                                                                                                                                                                                                                                
metadata:                                                                                                                                                                                                                                                                   
  labels:                                                                                                                                                                                                                                                                   
    k8s-app: kubernetes-dashboard                                                                                                                                                                                                                                           
  name: kubernetes-dashboard-csrf                                                                                                                                                                                                                                           
  namespace: kubernetes-dashboard                                                                                                                                                                                                                                           
type: Opaque                                                                                                                                                                                                                                                                
data:                                                                                                                                                                                                                                                                       
  csrf: ""                                                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                                                            
---                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
apiVersion: v1                                                                                                                                                                                                                                                              
kind: Secret                                                                                                                                                                                                                                                                
metadata:                                                                                                                                                                                                                                                                   
  labels:                                                                                                                                                                                                                                                                   
    k8s-app: kubernetes-dashboard                                                                                                                                                                                                                                           
  name: kubernetes-dashboard-key-holder                                                                                                                                                                                                                                     
  namespace: kubernetes-dashboard                                                                                                                                                                                                                                           
type: Opaque                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                            
---                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
kind: ConfigMap                                                                                                                                                                                                                                                             
apiVersion: v1                                                                                                                                                                                                                                                              
metadata:                                                                                                                                                                                                                                                                   
  labels:                                                                                                                                                                                                                                                                   
    k8s-app: kubernetes-dashboard                                                                                                                                                                                                                                           
  name: kubernetes-dashboard-settings                                                                                                                                                                                                                                       
  namespace: kubernetes-dashboard                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                            
---                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
kind: Role                                                                                                                                                                                                                                                                  
apiVersion: rbac.authorization.k8s.io/v1                                                                                                                                                                                                                                    
metadata:                                                                                                                                                                                                                                                                   
  labels:                                                                                                                                                                                                                                                                   
    k8s-app: kubernetes-dashboard                                                                                                                                                                                                                                           
  name: kubernetes-dashboard                                                                                                                                                                                                                                                
  namespace: kubernetes-dashboard                                                                                                                                                                                                                                           
rules:                                                                                                                                                                                                                                                                      
  # Allow Dashboard to get, update and delete Dashboard exclusive secrets.                                                                                                                                                                                                  
  - apiGroups: [""]                                                                                                                                                                                                                                                         
    resources: ["secrets"]                                                                                                                                                                                                                                                  
    resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"]                                                                                                                                                           
    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.                                                                                                                                                                                                                                       
  - apiGroups: [""]                                                                                                                                                                                                                                                         
    resources: ["services"]                                                                                                                                                                                                                                                 
    resourceNames: ["heapster", "dashboard-metrics-scraper"]                                                                                                                                                                                                                
    verbs: ["proxy"]                                                                                                                                                                                                                                                        
  - apiGroups: [""]                                                                                                                                                                                                                                                         
    resources: ["services/proxy"]                                                                                                                                                                                                                                           
    resourceNames: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"]                                                                                                                                         
    verbs: ["get"]                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                            
---                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
kind: ClusterRole                                                                                                                                                                                                                                                           
apiVersion: rbac.authorization.k8s.io/v1                                                                                                                                                                                                                                    
metadata:                                                                                                                                                                                                                                                                   
  labels:                                                                                                                                                                                                                                                                   
    k8s-app: kubernetes-dashboard                                                                                                                                                                                                                                           
  name: kubernetes-dashboard                                                                                                                                                                                                                                                
rules:                                                                                                                                                                                                                                                                      
  # Allow Metrics Scraper to get metrics from the Metrics server                                                                                                                                                                                                            
  - apiGroups: ["metrics.k8s.io"]                                                                                                                                                                                                                                           
    resources: ["pods", "nodes"]                                                                                                                                                                                                                                            
    verbs: ["get", "list", "watch"]                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
---                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
apiVersion: rbac.authorization.k8s.io/v1                                                                                                                                                                                                                                    
kind: RoleBinding                                                                                                                                                                                                                                                           
metadata:                                                                                                                                                                                                                                                                   
  labels:                                                                                                                                                                                                                                                                   
    k8s-app: kubernetes-dashboard                                                                                                                                                                                                                                           
  name: kubernetes-dashboard                                                                                                                                                                                                                                                
  namespace: kubernetes-dashboard                                                                                                                                                                                                                                           
roleRef:                                                                                                                                                                                                                                                                    
  apiGroup: rbac.authorization.k8s.io                                                                                                                                                                                                                                       
  kind: Role                                                                                                                                                                                                                                                                
  name: kubernetes-dashboard                                                                                                                                                                                                                                                
subjects:                                                                                                                                                                                                                                                                   
  - kind: ServiceAccount                                                                                                                                                                                                                                                    
    name: kubernetes-dashboard                                                                                                                                                                                                                                              
    namespace: kubernetes-dashboard                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
---                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
apiVersion: rbac.authorization.k8s.io/v1                                                                                                                                                                                                                                    
kind: ClusterRoleBinding                                                                                                                                                                                                                                                    
metadata:                                                                                                                                                                                                                                                                   
  name: kubernetes-dashboard                                                                                                                                                                                                                                                
roleRef:                                                                                                                                                                                                                                                                    
  apiGroup: rbac.authorization.k8s.io                                                                                                                                                                                                                                       
  kind: ClusterRole                                                                                                                                                                                                                                                         
  name: kubernetes-dashboard                                                                                                                                                                                                                                                
subjects:                                                                                                                                                                                                                                                                   
  - kind: ServiceAccount                                                                                                                                                                                                                                                    
    name: kubernetes-dashboard                                                                                                                                                                                                                                              
    namespace: kubernetes-dashboard                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
---                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
kind: Deployment                                                                                                                                                                                                                                                            
apiVersion: apps/v1                                                                                                                                                                                                                                                         
metadata:                                                                                                                                                                                                                                                                   
  labels:                                                                                                                                                                                                                                                                   
    k8s-app: kubernetes-dashboard                                                                                                                                                                                                                                           
  name: kubernetes-dashboard                                                                                                                                                                                                                                                
  namespace: kubernetes-dashboard                                                                                                                                                                                                                                           
spec:                                                                                                                                                                                                                                                                       
  replicas: 1                                                                                                                                                                                                                                                               
  revisionHistoryLimit: 10                                                                                                                                                                                                                                                  
  selector:                                                                                                                                                                                                                                                                 
    matchLabels:                                                                                                                                                                                                                                                            
      k8s-app: kubernetes-dashboard                                                                                                                                                                                                                                         
  template:                                                                                                                                                                                                                                                                 
    metadata:                                                                                                                                                                                                                                                               
      labels:                                                                                                                                                                                                                                                               
        k8s-app: kubernetes-dashboard                                                                                                                                                                                                                                       
    spec:                                                                                                                                                                                                                                                                   
      nodeName: vm-16-4-centos                                                                                                                                                                                                                                              
      securityContext:                                                                                                                                                                                                                                                      
        seccompProfile:                                                                                                                                                                                                                                                     
          type: RuntimeDefault                                                                                                                                                                                                                                              
      containers:                                                                                                                                                                                                                                                           
        - name: kubernetes-dashboard                                                                                                                                                                                                                                        
          image: kubernetesui/dashboard:v2.7.0                                                                                                                                                                                                                              
          imagePullPolicy: Always                                                                                                                                                                                                                                           
          ports:                                                                                                                                                                                                                                                            
            - containerPort: 8443                                                                                                                                                                                                                                           
              protocol: TCP                                                                                                                                                                                                                                                 
          args:                                                                                                                                                                                                                                                             
            - --auto-generate-certificates                                                                                                                                                                                                                                  
            - --namespace=kubernetes-dashboard                                                                                                                                                                                                                              
            - --token-ttl=86400                                                                                                                                                                                                                                             
            # 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                                                                                                                                                                                                                                              
          securityContext:                                                                                                                                                                                                                                                  
            allowPrivilegeEscalation: false                                                                                                                                                                                                                                 
            readOnlyRootFilesystem: true                                                                                                                                                                                                                                    
            runAsUser: 1001                                                                                                                                                                                                                                                 
            runAsGroup: 2001                                                                                                                                                                                                                                                
      volumes:                                                                                                                                                                                                                                                              
        - name: kubernetes-dashboard-certs                                                                                                                                                                                                                                  
          secret:                                                                                                                                                                                                                                                           
            secretName: kubernetes-dashboard-certs                                                                                                                                                                                                                          
        - name: tmp-volume                                                                                                                                                                                                                                                  
          emptyDir: {}                                                                                                                                                                                                                                                      
      serviceAccountName: kubernetes-dashboard                                                                                                                                                                                                                              
      nodeSelector:                                                                                                                                                                                                                                                         
        "kubernetes.io/os": linux                                                                                                                                                                                                                                           
      # Comment the following tolerations if Dashboard must not be deployed on master                                                                                                                                                                                       
      tolerations:                                                                                                                                                                                                                                                          
        - key: node-role.kubernetes.io/master                                                                                                                                                                                                                               
          effect: NoSchedule                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                            
---                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
kind: Service                                                                                                                                                                                                                                                               
apiVersion: v1                                                                                                                                                                                                                                                              
metadata:                                                                                                                                                                                                                                                                   
  labels:                                                                                                                                                                                                                                                                   
    k8s-app: dashboard-metrics-scraper                                                                                                                                                                                                                                      
  name: dashboard-metrics-scraper                                                                                                                                                                                                                                           
  namespace: kubernetes-dashboard                                                                                                                                                                                                                                           
spec:                                                                                                                                                                                                                                                                       
  ports:                                                                                                                                                                                                                                                                    
    - port: 8000                                                                                                                                                                                                                                                            
      targetPort: 8000                                                                                                                                                                                                                                                      
  selector:                                                                                                                                                                                                                                                                 
    k8s-app: dashboard-metrics-scraper                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                            
---                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                            
kind: Deployment                                                                                                                                                                                                                                                            
apiVersion: apps/v1                                                                                                                                                                                                                                                         
metadata:                                                                                                                                                                                                                                                                   
  labels:                                                                                                                                                                                                                                                                   
    k8s-app: dashboard-metrics-scraper                                                                                                                                                                                                                                      
  name: dashboard-metrics-scraper                                                                                                                                                                                                                                           
  namespace: kubernetes-dashboard                                                                                                                                                                                                                                           
spec:                                                                                                                                                                                                                                                                       
  replicas: 1                                                                                                                                                                                                                                                               
  revisionHistoryLimit: 10                                                                                                                                                                                                                                                  
  selector:                                                                                                                                                                                                                                                                 
    matchLabels:                                                                                                                                                                                                                                                            
      k8s-app: dashboard-metrics-scraper                                                                                                                                                                                                                                    
  template:                                                                                                                                                                                                                                                                 
    metadata:                                                                                                                                                                                                                                                               
      labels:                                                                                                                                                                                                                                                               
        k8s-app: dashboard-metrics-scraper                                                                                                                                                                                                                                  
    spec:                                                                                                                                                                                                                                                                   
      nodeName: vm-16-4-centos                                                                                                                                                                                                                                              
      securityContext:                                                                                                                                                                                                                                                      
        seccompProfile:                                                                                                                                                                                                                                                     
          type: RuntimeDefault                                                                                                                                                                                                                                              
      containers:                                                                                                                                                                                                                                                           
        - name: dashboard-metrics-scraper                                                                                                                                                                                                                                   
          image: kubernetesui/metrics-scraper:v1.0.8                                                                                                                                                                                                                        
          ports:                                                                                                                                                                                                                                                            
            - containerPort: 8000                                                                                                                                                                                                                                           
              protocol: TCP                                                                                                                                                                                                                                                 
          livenessProbe:                                                                                                                                                                                                                                                    
            httpGet:                                                                                                                                                                                                                                                        
              scheme: HTTP                                                                                                                                                                                                                                                  
              path: /                                                                                                                                                                                                                                                       
              port: 8000                                                                                                                                                                                                                                                    
            initialDelaySeconds: 30                                                                                                                                                                                                                                         
            timeoutSeconds: 30                                                                                                                                                                                                                                              
          volumeMounts:                                                                                                                                                                                                                                                     
          - mountPath: /tmp                                                                                                                                                                                                                                                 
            name: tmp-volume                                                                                                                                                                                                                                                
          securityContext:                                                                                                                                                                                                                                                  
            allowPrivilegeEscalation: false                                                                                                                                                                                                                                 
            readOnlyRootFilesystem: true                                                                                                                                                                                                                                    
            runAsUser: 1001                                                                                                                                                                                                                                                 
            runAsGroup: 2001                                                                                                                                                                                                                                                
      serviceAccountName: kubernetes-dashboard                                                                                                                                                                                                                              
      nodeSelector:                                                                                                                                                                                                                                                         
        "kubernetes.io/os": linux                                                                                                                                                                                                                                           
      # Comment the following tolerations if Dashboard must not be deployed on master                                                                                                                                                                                       
      tolerations:                                                                                                                                                                                                                                                          
        - key: node-role.kubernetes.io/master                                                                                                                                                                                                                               
          effect: NoSchedule                                                                                                                                                                                                                                                
      volumes:                                                                                                                                                                                                                                                              
        - name: tmp-volume                                                                                                                                                                                                                                                  
          emptyDir: {}

2.部署yml文件

kubectl create -f recommended.yaml 

# 查看部署情况
kubectl get po --namespace=kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-64bcc67c9c-mzmpl   1/1     Running   0          51s
kubernetes-dashboard-5c8bd6b59-6xzzx         1/1     Running   0          51s

3.创建用户yml文件

# 生成ServiceAccount文件yml
cat > admin.yaml <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user # admin-user不要乱改成别的名称代替
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
EOF

4.调整token的过期时间(可选)

温馨提示:如果您是使用提供的文档部署的,可以忽略此处,已配置!
在这里插入图片描述
重新部署:kubectl apply -f recommended.yaml

5.生成token

kubectl  create token admin-user --duration 525600m -n kubernetes-dashboard (--duration:默认10min)

eyJhbGciOiJSUzI1NiIsImtpZCI6ImhCcjU0cjZBR1BHLTUySWxxZjF3ZFFnUHBvMXFrZTd1TmhtLUdRMmNNcm8ifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNjY1NjUzMzg5LCJpYXQiOjE2NjU2NDk3ODksImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbiIsInVpZCI6Ijc3MDVkZTZjLTk2MmEtNDU5Mi1iMmE2LWFjNjc0MmMwNmE5NSJ9fSwibmJmIjoxNjY1NjQ5Nzg5LCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4ifQ.lGkGII1mkViLnZt9Xau_M795GmIrJ27yHgDJ8vzhpy5tLXDS6l2PMfTsNsEC112RU5cMi00VmW3TaOgVOS6fUJzhpJZpq8cL-8ApbNtEiUfCHOMq0WOJp-78_WIRcwXH2o6yf0v4_0BM3J9b80iB7Pa5iG-rR0BOE4TK17tzHIYLUGaY_a6keRhcyndBhQmpgmC9gyD-sSTK9lxk7IsG7BQwP8liHz9BMo3_UgIhihcu1p5NQRaKwYA_pjLHklBec_lON-PnpMh5H2jDkuxdvC12movvbJ5HYS1yVTOQ63A7LFdA4ZX1oX_nMjhhonuMfnEgHJvo-_y4xpz4a6anYw

如果你忘记了token,可以通过一下命令查询
kubectl describe secret default-token(这个是名称,大概张这样) -n kubernetes-dashboard
在这里插入图片描述

6.开始访问k8s

浏览器访问:https://127.0.0.1:32321 将生成的token添加即可
在这里插入图片描述

结束语

本章节完成了,各位正在努力的程序员们,如果你们觉得本文章对您有用的话,或者是你学到了一些东西,希望用您那漂亮,帅气的小手点个赞,支持一下猿仁!
持续更新中…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿仁

多一分支持,多一分动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值