本文将在前文的基础上介绍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上进行展示。