微服務架構師封神之路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 |
|----------------------|-----------------------------|-------------|---------------------------|