微服务架构师封神之路04-在minikube上安装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/dashboard@sha256: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文件中,kubernetes-dashboard-nodeport-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: kubernetes-dashboard-nodeport-svc
  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。
  • name,不能和原本自带的service重名,每次minikube启动都会重新加载这个service,它又会变成原本的设置。

使用yaml文件创建service

$ kubectl apply -f kubernetes-dashboard-nodeport-svc.yaml 
service/kubernetes-dashboard-nodeport-svc configured

dashboad原本自带的service是ClusterIP类型,只能从kubernetes内部访问。新的service kubernetes-dashboard-nodeport-svc,是

通过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 |
|----------------------|-----------------------------|-------------|---------------------------|
  • 22
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值