Kubernetes 官方Dashboard 部署

Kubernetes Dashboard 是 Kubernetes 的官方 Web UI。使用 Kubernetes Dashboard,您可以:

  • 向 Kubernetes 集群部署容器化应用

  • 诊断容器化应用的问题

  • 管理集群的资源

  • 查看集群上所运行的应用程序

  • 创建、修改Kubernetes 上的资源(例如 Deployment、Job、DaemonSet等)

  • 展示集群上发生的错误 例如:您可以伸缩一个 Deployment、执行滚动更新、重启一个 Pod 或部署一个新的应用程序

安装

Kubernetes Dashboard 当前,只支持使用 Bearer Token登录。 由于 Kubernetes Dashboard 默认部署时,只配置了最低权限的 RBAC。因此,我们要创建一个名为 admin-user 的 ServiceAccount,再创建一个 ClusterRolebinding,将其绑定到 Kubernetes 集群中默认初始化的 cluster-admin 这个 ClusterRole。

  • 创建 Service Account 和 ClusterRoleBinding 使用 kubeadm 安装集群时,默认创建了 ClusterRole cluster-admin。此时我们可以直接为刚才的 ServiceAccount 创建 ClusterRoleBinding。
    vi auth.yaml
    

apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard


apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects:

  • kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard ```
  • 执行如下命令可创建 ServiceAccount 和 ClusterRoleBinding
kubectl apply -f auth.yaml
  • 修改使用nodePort访问
    #默认是使用的ClusterIP方式,外部无法访问dashboard,所以需要修改成NodePort的方式
    vi svc.yaml
    kind: Service
    apiVersion: v1
    metadata:
    labels:
      k8s-app: kubernetes-dashboard
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard
    spec:
    type: NodePort
    ports:
      - port: 8443
        nodePort: 32443
        targetPort: 8443
    selector:
      k8s-app: kubernetes-dashboard
    kubectl apply -f svc.yaml
  • 获取Bearer Token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
  • 登录
    # 使用nodeip + nodeport访问,输入token登录。
    https://192.168.190.11:32443

安装Kuboard

Kuboard 是基于一款基于 Kubernetes 的微服务管理面板。

  • Kuboard 关注微服务参考架构的视角对界面进行组织,参考 Kuboard 简介
  • Kuboard 中,不需要手工编写 YAML 文件,进一步降低 K8S 使用难度,提高便捷性
  • Kuboard 可以导出整个微服务架构的部署信息,并在新的名称空间/集群导入配置信息
  • Kuboard 的一个发展方向是,提供内建的 监控套件(目前的全局监控套件成熟度比较高)
    vi Kuboard.yaml
    

apiVersion: apps/v1 kind: Deployment metadata: name: kuboard namespace: kube-system annotations: k8s.eip.work/displayName: kuboard k8s.eip.work/ingress: "true" k8s.eip.work/service: NodePort k8s.eip.work/workload: kuboard labels: k8s.eip.work/layer: monitor k8s.eip.work/name: kuboard spec: replicas: 1 selector: matchLabels: k8s.eip.work/layer: monitor k8s.eip.work/name: kuboard template: metadata: labels: k8s.eip.work/layer: monitor k8s.eip.work/name: kuboard spec: containers: - name: kuboard image: eipwork/kuboard:latest imagePullPolicy: Always


apiVersion: v1 kind: Service metadata: name: kuboard namespace: kube-system spec: type: NodePort ports:

  • name: http port: 80 targetPort: 80 nodePort: 32567 selector: k8s.eip.work/layer: monitor k8s.eip.work/name: kuboard

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


apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kuboard-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects:

  • kind: ServiceAccount name: kuboard-user namespace: kube-system
    kubectl apply -f Kuboard.yaml
    ### 获取token与访问
    
#此Token拥有 ClusterAdmin 的权限,可以执行所有操作
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') 
# 使用nodeip + nodeport访问,输入token登录。
http://192.168.190.11:32567

image-20191026084433587

image-20191026084510342

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐