尝试部署 Kubernetes 仪表盘 v2.0.0

概要-总结

为了在Mac上尝试使用Kubernetes,我尝试部署了kubernetes/dashboard的示例。

※控制台:您可以使用图表或表格来查看在k8s中管理的资源的状态,以及使用GUI操作来管理Pod和查看日志等。

确认所需之物

    • Docker for Mac

Kubernetesのインストールとセットアップをすることができます。

kubectl

API経由でKubenetesを操作するためのクライアントツールです。

$ docker -v
Docker version 19.03.4, build 9013bf5

$ kubectl version --short --client
Client Version: v1.14.7

启用 Docker for Desktop 的 Kubernetes

スクリーンショット 2019-12-20 16.26.23.png

选择右边的Kubernetes,勾选“显示系统容器”,然后点击“应用”。

スクリーンショット 2019-12-23 13.37.11.png

启动确认和切换

我会从上下文列表中确认docker-for-desktop是否存在。

$ kubectl config get-contexts
CURRENT   NAME                 CLUSTER          AUTHINFO         NAMESPACE
*         docker-desktop       docker-desktop   docker-desktop   
          docker-for-desktop   docker-desktop   docker-desktop   

将访问目标切换到docker-for-desktop。

$ kubectl config use-context docker-for-desktop
Switched to context "docker-for-desktop".

在启动阶段检查正在运行的pod。

$ kubectl get po --all-namespaces
NAMESPACE     NAME                                     READY   STATUS    RESTARTS   AGE
docker        compose-6c67d745f6-cv5zs                 1/1     Running   0          65m
docker        compose-api-57ff65b8c7-nl4dv             1/1     Running   0          65m
kube-system   coredns-584795fc57-92qm4                 1/1     Running   0          66m
kube-system   coredns-584795fc57-nvkc9                 1/1     Running   0          66m
kube-system   etcd-docker-desktop                      1/1     Running   0          65m
kube-system   kube-apiserver-docker-desktop            1/1     Running   0          65m
kube-system   kube-controller-manager-docker-desktop   1/1     Running   0          65m
kube-system   kube-proxy-bkjgc                         1/1     Running   0          66m
kube-system   kube-scheduler-docker-desktop            1/1     Running   0          65m

部署 Kubernetes 仪表盘

由于环境已经准备好了,我们试着使用图形界面管理工具kubernetes dashboard来部署kubernetes集群。因为在GitHub上有源代码,所以按照README的指南进行操作。
创建Pod。

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml

请确认已指定 Namespace 为 kubernetes-dashboard 并且正在运行。
※从 Kubernetes 2.0 系列开始,仪表板的 Namespace 已从 kube-system 迁移到 kubernetes-dashboard。

$ kubectl get deploy,po,svc -n kubernetes-dashboard
NAME                                              READY   UP-TO-DATE   AVAILABLE   AGE
deployment.extensions/dashboard-metrics-scraper   1/1     1            1           27m
deployment.extensions/kubernetes-dashboard        1/1     1            1           27m

NAME                                             READY   STATUS    RESTARTS   AGE
pod/dashboard-metrics-scraper-69fcc6d9df-dglbd   1/1     Running   0          27m
pod/kubernetes-dashboard-6d75768647-d69sk        1/1     Running   0          27m

NAME                                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/dashboard-metrics-scraper   ClusterIP   10.100.193.116   <none>        8000/TCP   27m
service/kubernetes-dashboard        ClusterIP   10.109.69.115    <none>        443/TCP    27m
$ kubectl proxy
Starting to serve on 127.0.0.1:8001
スクリーンショット 2019-12-20 16.11.18.png

获取令牌的方式

从Kubernetes 1.8版本开始,引入了认证系统,如果不经过认证,将无法使用WebUI。
指定kubernetes-dashboard作为命名空间,并查找以kubernetes-dashboard-token-开头的secret。

$ kubectl -n kubernetes-dashboard get secret
NAME                               TYPE                                  DATA   AGE
default-token-d69sj                kubernetes.io/service-account-token   3      32m
kubernetes-dashboard-certs         Opaque                                0      32m
kubernetes-dashboard-csrf          Opaque                                1      32m
kubernetes-dashboard-key-holder    Opaque                                2      32m
kubernetes-dashboard-token-lcnqw   kubernetes.io/service-account-token   3      32m

为了使用默认令牌权限登录,获取令牌。

$ kubectl -n kubernetes-dashboard describe secret kubernetes-dashboard-token-lcnqw
Name:         kubernetes-dashboard-token-lcnqw
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: kubernetes-dashboard
              kubernetes.io/service-account.uid: c2536c20-2541-11ea-88b0-025000000001

Type:  kubernetes.io/service-account-token

Data
====
token:      eyJhbGciO********************************************
~~~ 略 ~~~
スクリーンショット 2019-12-23 14.41.07.png

我成功了?

bannerAds