为k8s配置可视化
K8s dashboard是k8s集群的web-based UI工具,用户可以通过dashboard管理运行在集群上的应用以及集群自身。
安装本身非常容易,只需要下面一条语句就可以
| 1 | kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml | 
但是再次由于墙的原因,国内执行这条语句会出现ErrImagePull的错误。如果你已经执行了,就需要删除这个pod。但是如果直接用kubectl delete pods <pod name> --namespace=<namespace>的话,通过kubectl get pods --all-namespaces查看会发现它马上就会重新建立。这是因为要直接删除kubectl delete deployment <deployment name>。
所以在国内还得需要镜像
| 1 | docker pull registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64:v1.10.0 | 
下载完镜像后执行kubectl apply -f http://mirror.faasx.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml就部署完成了,可以通过命令:
| 1 | `kubectl get pods --namespace=kube-system` | 
查看,然后可以通过kubectl get service --namespace=kube-system查看dashboard的外网暴露端口。如果发现暴露的端口类型是ClusterIP,可以运行kubectl edit service  kubernetes-dashboard --namespace=kube-system大概配置文件,找到type,将ClusterIP改成NodePort。同时也可以通过这个命令修改NodePort以达到修改暴露端口的目的。

现在在本级上通过访问localhost:端口就能访问图形界面了。但是想要在其他机器访问,需要SSL证书,通过https来访问。
- 生成私钥和证书签名: - 1 
 2
 3
 4- openssl genrsa -des3 -passout pass:x -out dashboard.pass.key 2048 
 openssl rsa -passin pass:x -in dashboard.pass.key -out dashboard.key
 rm dashboard.pass.key
 openssl req -new -key dashboard.key -out dashboard.csr
- 生成SSL证书 - 1 - openssl x509 -req -sha256 -days 365 -in dashboard.csr -signkey dashboard.key -out dashboard.crt 
- 创建dashboard用户 - 执行 - kubectl create -f dashboard-user-role.yaml命令,其中- dashboard-user-role.yaml内容如下:- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23- kind: ClusterRoleBinding 
 apiVersion: rbac.authorization.k8s.io/v1beta1
 metadata:
 name: admin
 annotations:
 rbac.authorization.kubernetes.io/autoupdate: "true"
 roleRef:
 kind: ClusterRole
 name: cluster-admin
 apiGroup: rbac.authorization.k8s.io
 subjects:
 - kind: ServiceAccount
 name: admin
 namespace: kube-system
 ---
 apiVersion: v1
 kind: ServiceAccount
 metadata:
 name: admin
 namespace: kube-system
 labels:
 kubernetes.io/cluster-service: "true"
 addonmanager.kubernetes.io/mode: Reconcile
- 获取登陆dashboard的token - 1 - kubectl describe secret/$(kubectl get secret -nkube-system |grep admin|awk '{print $1}') -nkube-system - 该语句返回的结果中会包含token 
- 登陆 - 在其他机器浏览器访问 - https://master的ip:暴露端口,比如我的例子中就是- https://10.0.0.23:30502。登陆时选择token登陆,粘贴上面命令返回的token就可以成功登陆。 
部署官方用例
官方给出了用于测试的用例,如果k8s部署正确的话,可以直接通过下面的两条命令部署:
| 1 | kubectl create namespace sock-shop | 
kubectl edit service  front-end --namespace=sock-shop来编辑服务的配置,主要是端口。

部署完成后通过NodePort:端口可以直接访问,是一个袜子购物网站,支持购物车等功能:

参考
- k8s dashboard官方:https://github.com/kubernetes/dashboard#kubernetes-dashboard
- K8s heapster官方:https://github.com/kubernetes-retired/heapster