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