天天看點

微服務架構師封神之路04-在minikube上安裝dashboard并使用固定的端口kubernetes中已經內建了dashboardEnable dashboard in minikube為Dashboard配置設定一個固定的端口通過service通路dashboard

微服務架構師封神之路04-在minikube上安裝dashboard并使用固定的端口

  • kubernetes中已經內建了dashboard
  • Enable dashboard in minikube
    • 檢視minikube中所有addons
    • Enable an addon
  • 為Dashboard配置設定一個固定的端口
    • Dashboard pod資訊
    • 将service資訊儲存在yaml檔案中
    • 使用yaml檔案建立service
  • 通過service通路dashboard

kubernetes中已經內建了dashboard

  • Dashboard是kubernetes addon。
  • 什麼是kubernetes addon?Addons是利用kubernetes的資源(DaemonSet, Deployment, 等等)實作的,在整個叢集層面的上功能(cluster feature)。
  • Dashboard,是web-based UI for kubernetes cluster,用來管理叢集和運作在叢集上面的應用,或者用來分析應用的問題。
  • Dashboard已經內建在minikube中,但預設是disabled的

Enable dashboard in minikube

檢視minikube中所有addons

當你剛剛安裝完minikube的時候檢視所有的addons,

$ minikube addons list
|-----------------------------|----------|--------------|
|         ADDON NAME          | PROFILE  |    STATUS    |
|-----------------------------|----------|--------------|
| ambassador                  | minikube | disabled     |
| dashboard                   | minikube | disabled     |
| default-storageclass        | minikube | enabled ✅   |
| efk                         | minikube | disabled     |
| freshpod                    | minikube | disabled     |
| gvisor                      | minikube | disabled     |
| helm-tiller                 | minikube | disabled     |
| ingress                     | minikube | disabled     |
| ingress-dns                 | minikube | disabled     |
| istio                       | minikube | disabled     |
| istio-provisioner           | minikube | disabled     |
| logviewer                   | minikube | disabled     |
| metallb                     | minikube | disabled     |
| metrics-server              | minikube | disabled     |
| nvidia-driver-installer     | minikube | disabled     |
| nvidia-gpu-device-plugin    | minikube | disabled     |
| olm                         | minikube | disabled     |
| registry                    | minikube | disabled     |
| registry-aliases            | minikube | disabled     |
| registry-creds              | minikube | disabled     |
| storage-provisioner         | minikube | enabled ✅   |
| storage-provisioner-gluster | minikube | disabled     |
|-----------------------------|----------|--------------|
           

Enable an addon

Enable dashboard

$ minikube addons enable dashboard
           

可以再運作一下,

$ minikube addons list
           

檢查一下結果。

為Dashboard配置設定一個固定的端口

在kubernetes文檔上一般做法是運作指令,

$ minikube dashboard
           

minikube會把dashboard映射到一個本地端口上。每次這樣做有點麻煩。下面我們為dashboard的pods建立一個service,我們以後可以通過這個service來通路dashboard,每次就可以使用minikube的ip address和這個service的端口來通路dashboard。

Dashboard pod資訊

先檢視dashboard的pod資訊,

$ kubectl describe pod kubernetes-dashboard-696dbcc666-v76hd --namespace kubernetes-dashboard 
Name:         kubernetes-dashboard-696dbcc666-v76hd
Namespace:    kubernetes-dashboard
Priority:     0
Node:         minikube/192.168.64.4
Start Time:   Sun, 14 Jun 2020 21:54:25 +0800
Labels:       k8s-app=kubernetes-dashboard
              pod-template-hash=696dbcc666
Annotations:  <none>
Status:       Running
IP:           172.17.0.5
IPs:
  IP:           172.17.0.5
Controlled By:  ReplicaSet/kubernetes-dashboard-696dbcc666
Containers:
  kubernetes-dashboard:
    Container ID:  docker://9284ee7c0893821185cc669c42e5175a5e2517ceb7e17857394ac30d267ce635
    Image:         kubernetesui/dashboard:v2.0.0
    Image ID:      docker-pullable://kubernetesui/[email protected]:06868692fb9a7f2ede1a06de1b7b32afabc40ec739c1181d83b5ed3eb147ec6e
    Port:          9090/TCP
    Host Port:     0/TCP
    Args:
      --namespace=kubernetes-dashboard
      --enable-skip-login
      --disable-settings-authorizer
    State:          Running
      Started:      Sun, 14 Jun 2020 21:54:26 +0800
    Ready:          True
    Restart Count:  0
    Liveness:       http-get http://:9090/ delay=30s timeout=30s period=10s #success=1 #failure=3
    Environment:    <none>
    Mounts:
      /tmp from tmp-volume (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kubernetes-dashboard-token-pmfq9 (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  tmp-volume:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     
    SizeLimit:  <unset>
  kubernetes-dashboard-token-pmfq9:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  kubernetes-dashboard-token-pmfq9
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  beta.kubernetes.io/os=linux
Tolerations:     node-role.kubernetes.io/master:NoSchedule
                 node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type    Reason     Age        From               Message
  ----    ------     ----       ----               -------
  Normal  Scheduled  <unknown>  default-scheduler  Successfully assigned kubernetes-dashboard/kubernetes-dashboard-696dbcc666-v76hd to minikube
  Normal  Pulled     12m        kubelet, minikube  Container image "kubernetesui/dashboard:v2.0.0" already present on machine
  Normal  Created    12m        kubelet, minikube  Created container kubernetes-dashboard
  Normal  Started    12m        kubelet, minikube  Started container kubernetes-dashboard
           

這其中有兩個資訊非常重要,在建立service的時候我要使用到,

  • Labels: k8s-app=kubernetes-dashboard
  • Port: 9090/TCP

将service資訊儲存在yaml檔案中

把要建立的service所有的資訊放進一個yaml檔案中,minikube-dashboard-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: kubernetes-dashboard-b5wang
  namespace: kubernetes-dashboard
  labels:
    addonmanager.kubernetes.io/mode: Reconcile
    k8s-app: kubernetes-dashboard
    kubernetes.io/minikube-addons: dashboard
spec:
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort
  ports:
    - protocol: TCP
      port: 9090
      targetPort: 9090
      nodePort: 30000
           

注意以下三點,

  • selector
  • targetPort
  • type。因為我們需要固定端口,必須 type: NodePort。

使用yaml檔案建立service

$ kubectl apply -f minikube-dashboard-svc.yaml 
service/kubernetes-dashboard-b5wang created
           

通過service通路dashboard

$ minikube service kubernetes-dashboard-b5wang --namespace=kubernetes-dashboard
|----------------------|-----------------------------|-------------|---------------------------|
|      NAMESPACE       |            NAME             | TARGET PORT |            URL            |
|----------------------|-----------------------------|-------------|---------------------------|
| kubernetes-dashboard | kubernetes-dashboard-b5wang |        9090 | http://192.168.64.6:30000 |
|----------------------|-----------------------------|-------------|---------------------------|
           

繼續閱讀