• 基于kubernetes v1.17部署dashboard:v2.0-beta8


    参考文章:

    https://www.jianshu.com/p/60a1d6db9f12

    https://www.jianshu.com/p/c6d560d12d50

    一、前言

      Dashboard 是基于网页的 Kubernetes 用户界面。您可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。您可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源(如 Deployment,Job,DaemonSet 等等)。例如,您可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。

    在部署完kubernetes v1.17后,让我们来部署一下dashboard,然后通过图形化界面来对资源进行查看与管理。

     

    二、安装

    环境信息

    操作系统:CentOS Linux release 7.6.1810 (Core)

    docker:19.03.5

    kubernetes:v1.17.0

    主机名和ip:

    hostname ip
    master01
    192.168.1.230
    node01
    192.168.1.241
    node02
    192.168.1.242

    部署GitHub上目前最新版本的dashboard v2.0.0-beta8

    https://github.com/kubernetes/dashboard/releases

    wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml

    修改service通过NodePort方式访问k8s dashboard:

      由于默认的service类型是ClusterIP,我们是自建的kubernetes,无法自动分配ip给service,所以这里我们需要修改一下dashboard的service类型,指定为NodePort以方便我们访问。

    编辑我们下载的yaml文件 recommended.yaml
    ---
    
    kind: Service
    apiVersion: v1
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      name: kubernetes-dashboard
      namespace: kubernetes-dashboard
    spec:
      type: NodePort #新加此行
      ports:
        - port: 443
          nodePort: 30001 #新加此行
    targetPort:
    8443 selector: k8s-app: kubernetes-dashboard

     应用配置文件

    kubectl apply -f recommended.yaml

     之后指定namespace查看pod和service

     通过节点ip以及service的端口30001访问dashboard页面

      注意:在没有设置证书的情况下,通过Chrome和ie内核是无法访问这个页面的,我们这里就先使用火狐来继续实验,后面补充通过更新证书来解决此问题。

    火狐浏览器:

     我们还需要创建一个dashboard用户来登录

    创建一个yaml文件,内容如下

    [root@master01 ~]# cat create-admin.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

    应用配置文件创建用户

    获取到用户的token以用作登录

    kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

    登录dashboard

      成功登录后的界面

    三、使用dashboard

    在学习完kubernetes的基础后,再来看dashboard,就会对整体架构有更清晰的认识。

    在Dashboard中,我们通过kubectl所做的操作大部分都可以可视化操作,比如我们可以对deployment做伸缩:

    执行命令以及日志追踪

     还可以编辑资源的yaml文件,以及导入yaml文件创建 更新资源

     


     补充:

    1、解决Chrome、ie无法正常访问dashboard问题

    问题:通过Chrome和ie无法正常访问dashboard

     原因是默认证书是0001年1月签发的已经过期

     解决思路:生成有效证书替换之前的证书

    生成证书

    下面是生成 k8s dashboard 域名证书方法,任何一种都可以

    • 通过 https://freessl.cn 网站,在线生成免费1年的证书
    • 通过 Let’s Encrypt 生成 90天 免费证书
    • 通过 Cert-Manager 服务来生成和管理证书
    我们这里没有域名,仅仅是通过ip访问测试,所以就通过openssl工具自签一个证书用于测试。
    自签证书部分具体参照另一篇博客:https://www.cnblogs.com/tianleblog/p/12161282.html
    生成自签名的SSL证书和私钥
    #我是在家目录创建的目录
    mkdir certs
    cd certs
    #生成私钥
    openssl genrsa -out dashboard.key 2048
    #生成csr证书签名请求
    openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=192.168.1.241'
    #生成自签名的ssl证书
    openssl x509 -req -days 365 -in dashboard.csr -signkey dashboard.key -out dashboard.crt

    重新创建dashboard

    删除之前创建的dashboard相关资源
    kubectl delete -f create-admin.yaml
    kubectl delete -f recommended.yaml

    手工创建namespace

    kubectl  create namespace kubernetes-dashboard

     创建证书存放目录

    mkdir $HOME/certs
    手工生成secret;后面会将recommend配置中关于certs部分注释掉
    kubectl create secret generic kubernetes-dashboard-certs --from-file=$HOME/certs -n kubernetes-dashboard

    修改 deployment 配置,具体修改见下面配置

    $ vim recommended.yaml
    
    # 把创建 kubernetes-dashboard-certs Secret 注释掉,前面已通过命令创建
    
    #apiVersion: v1
    #kind: Secret
    #metadata:
    #  labels:
    #    k8s-app: kubernetes-dashboard
    #  name: kubernetes-dashboard-certs
    #  namespace: kubernetes-dashboard
    #type: Opaque
    
    # 添加ssl证书路径,关闭自动更新证书,添加多长时间登出
    
          containers:
          - args:
            #- --auto-generate-certificates
            - --tls-cert-file=/tls.crt
            - --tls-key-file=/tls.key
            - --token-ttl=3600

    部署 k8s dashboard

    kubectl  apply -f recommended.yaml

    再次通过Chrome或ie访问,即可正常。

    记得还需要重新创建用户

     
    
    
    
    
  • 相关阅读:
    SpringCloud 学习之概述
    定位慢查询
    中止线程
    笨办法41学会说面向对象【pyinstaller安装使用
    pip安装
    笨办法40模块, 类和对象class
    笨办法39字典dict
    笨办法38列表操作
    笨办法35分支和函数
    笨办法34访问列表元素(列表方法)
  • 原文地址:https://www.cnblogs.com/tianleblog/p/12157499.html
Copyright © 2020-2023  润新知