本文将在前文的基础上介绍kube-ui(也叫dashboard)的创建和使用。这个东西本质上就是webui连接master的api接口,通过api获取k8s集群的相关信息,然后在web上展示出来,对用户来说比较友好一些,实际用处并不是很大。
一、下载镜像文件并纳入本地仓库统一管理
# docker pull docker.io/mritd/kubernetes-dashboard-amd64 # docker tag docker.io/mritd/kubernetes-dashboard-amd64 \ registry.fjhb.cn/kubernetes-dashboard-amd64 # docker push registry.fjhb.cn/kubernetes-dashboard-amd64
二、根据rc文件创建 Deployment和service
# cat kube-ui-rc.yaml # Copyright 2015 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.
# Configuration to deploy release version of the Dashboard UI. # # Example usage: kubectl create -f <this_file>
kind: Deployment apiVersion: extensions/v1beta1 metadata: labels: app: kubernetes-dashboard version: latest name: kubernetes-dashboard namespace: default spec: replicas: 1 selector: matchLabels: app: kubernetes-dashboard template: metadata: labels: app: kubernetes-dashboard # Comment the following annotation if Dashboard must not be deployed on master annotations: scheduler.alpha.kubernetes.io/tolerations: | [ { "key": "dedicated", "operator": "Equal", "value": "master", "effect": "NoSchedule" } ] spec: containers: - name: kubernetes-dashboard image: registry.fjhb.cn/kubernetes-dashboard-amd64 imagePullPolicy: Always ports: - containerPort: 9090 protocol: TCP args: # Uncomment the following line to manually specify Kubernetes API server Host # If not specified, Dashboard will attempt to auto discover the API server and connect # to it. Uncomment only if the default does not work. - --apiserver-host=192.168.115.5:8080 livenessProbe: httpGet: path: / port: 9090 initialDelaySeconds: 30 timeoutSeconds: 30 --- kind: Service apiVersion: v1 metadata: labels: app: kubernetes-dashboard name: kubernetes-dashboard namespace: default spec: type: NodePort ports: - port: 80 targetPort: 9090 selector: app: kubernetes-dashboard# kubectl create -f kube-ui-rc.yaml # kubectl get svc # kubectl get pod
三、web访问测试 使用两个node节点的ip加端口都可以访问到web-ui界面,本质上是使用iptables nat规则实现的
在面板中可以查看到 Node、deployments、replica sets、replication controllers、pod、jobs、services、ingress、storage、secret等信息,本质上就是通过连接apiserver进行查询并在web-ui上进行展示。