在Vagrant上设置K8s v1.10的仪表板

这篇文章是关于使用Vagrant虚拟服务器构建的K8s集群的第三次投稿,记录了仪表板设置的方法。
我会附上第一次和第二次的链接,如有需要请参考。

    • Kubenetes v1.10 クラスタをVagrantで構築したメモ

 

    K8s Node障害時の振る舞いについての検証記録

Kubernetes仪表板目前在安全性和显示功能方面仍在开发中,但同时还保留了一些旧文档,如果选择不正确的参考文献,将浪费时间。因此,在此提供参考,列举本次参考但无益的资料。可从GitHub获取的文档应该是最新的。

在安装设置时使用的参考资料网址:

    • https://github.com/kubernetes/dashboard

 

    https://github.com/kubernetes/dashboard/wiki/Creating-sample-user

在以下网址中找不到有关设置的参考资料:

    • https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/

 

    https://kubernetes-v1-4.github.io/docs/user-guide/ui/

对于虚拟服务器 K8s1 的端口转发设置。

为了使位于k8s的Pod网络上监听的仪表板网页可以从Vagrant的宿主机Mac上访问,我们需要在下面的Vagrantfile的第16行中将虚拟服务器(虚拟机)的8001端口和宿主机(Mac)的8001端口对应起来。通过这样做,当在Mac的浏览器上访问https://localhost:8001/时,将会将流量转发到虚拟服务器的8001端口。

    13        public_ip = "192.168.1.#{i+90}"
    14        s.vm.network :public_network, ip: public_ip, bridge: "en0: Ethernet"
    15        if i == 1 then
    16          s.vm.network :forwarded_port, host: 8001, guest: 8001
    17        end

安装仪表盘。

接下来,通过kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml命令,部署仪表板。操作指南可在https://github.com/kubernetes/dashboard找到。

vagrant@k8s1:/vagrant/yaml$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
secret "kubernetes-dashboard-certs" created
serviceaccount "kubernetes-dashboard" created
role.rbac.authorization.k8s.io "kubernetes-dashboard-minimal" created
rolebinding.rbac.authorization.k8s.io "kubernetes-dashboard-minimal" created
deployment.apps "kubernetes-dashboard" created
service "kubernetes-dashboard" created

创建管理用户和角色

为了创建具有访问仪表板权限的用户,应用以下两个YAML文件。这些YAML文件具体的使用指南可以在https://github.com/kubernetes/dashboard/wiki/Creating-sample-user上找到。

创建一个YAML文件以制作仪表板用户。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system

给予YAML权限

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system

在主节点k8s1上使用kubectl执行以上两个YAML文件并应用。

vagrant@k8s1:/vagrant/yaml$ kubectl create -f CreateServiceAccount.yaml 
serviceaccount "admin-user" created
vagrant@k8s1:/vagrant/yaml$ kubectl create -f CreateClusterRoleBinding.yaml 
clusterrolebinding.rbac.authorization.k8s.io "admin-user" created

显示管理用户的令牌

然后,我们将显示由前面提到的YAML应用生成的管理用户令牌,以便在登录时可以复制并使用。令牌以”token:”开头的字符串表示。请将此显示保存在记事本中等待使用,并在每次登录仪表板时使用。

vagrant@k8s1:/vagrant/yaml$ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
Name:         admin-user-token-w4w7w
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name=admin-user
              kubernetes.io/service-account.uid=1c934b99-4230-11e8-a350-02399910d15e

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXc0dzd3Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIxYzkzNGI5OS00MjMwLTExZTgtYTM1MC0wMjM5OTkxMGQxNWUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.cu-yNdS7dFbVm_aJkAU_Q2PIshwlXAlO54Gjm3Vhm5gHZxbN6Kr_JGJ9b0pYmmBIuj1Pml0MfErh_AtceTtQZnrCdjJCR8WJG8I4HtJLk-BYloNU8GJ95gOuKQ0kVMpJ8R4uHGHgjwOkLzI_r9x2mquID6TEtPxfEWDqQSdXzzBq4oPe0RhTUE4p9QKm14W3H9BPUXui880HpuX84aKER5_3MQc2xmFnTrkZUq4QQKc2zgyrjjaEEsyAI1m9oPwzW-IRCiKTMkwqKIN5JJ1f3H1WowAt8LtYydex7-_bQkd-9N1Oe6uLSHAIjyq1DcOVF8Ww7ylMZb6ANEWBHiTrng
vagrant@k8s1:/vagrant/yaml$ 

kubectl代理设置

控制面板的pod以Pod网络(10.244.0.0/16)上的IP地址进行监听。为了将这个Pod网络代理到k1s1的8001端口上,执行以下命令。此命令将充当代理,直到按下Ctrl-C停止。

vagrant@k8s1:~$ kubectl proxy --address="0.0.0.0" -p 8001 --accept-hosts='^*$' -n kube-system
Starting to serve on [::]:8001

命令选项的说明,请参考https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#proxy。

登录仪表板

在过去的版本中,http://localhost:8001/ui/被指定为地址,但在v1.10版本中已经被废弃,现在需要使用以下地址进行访问。

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ 的中文近义短语只需提供一个选项:

用浏览器访问时,会显示下一个窗口。点击Token,并将先前显示的令牌复制粘贴到“输入令牌”中,然后点击“登录”。

スクリーンショット 2018-04-17 21.22.09.png

仪表盘显示

成功登录后,将显示如下的仪表盘。

スクリーンショット 2018-04-17 21.24.37.png

直观的理解仪表盘的使用方法是不需要说明的,但是参考https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/ 可以提供帮助。

仪表板功能的添加

仪表盘的屏幕截图中显示了 CPU 使用率和内存使用率,然而在之前的设置中缺少了图表。要添加图表,需要进行名为 Heapster 的度量收集器的设置。设置指南位于https://github.com/kubernetes/dashboard/wiki/Integrations。

スクリーンショット 2018-04-17 23.01.41.png

总结

在Vagrant环境下构建的k8s集群中,我部署了仪表板,并确认可以从主机的浏览器访问。另外,我们发现需要配置Heapster以显示CPU和内存的图表。在进行配置之前,我还了解到相关资料最新的版本在Github上的https://github.com/kubernetes/dashboard。

广告
将在 10 秒后关闭
bannerAds