K8S

终端管理K8s命令太多太费劲?试试官方的Dashboard,你100%喜欢

终端管理K8s命令太多太费劲?试试官方的Dashboard,你100%喜欢

Posted by LY on September 4, 2020

欢迎大家关注我的以下主页,尤其是今日头条!!!谢谢🙏🙏🙏

csdn:雷园的csdn博客

个人博客:雷园的个人博客

简书:雷园的简书

今日头条:来自底层程序员的仰望

终端管理K8s命令太多太费劲?试试官方的Dashboard,你100%喜欢

开头说几句

  1. 上一篇文章我们说了官方提供的最简便的安装方式Kubeadm,相信小伙伴们也利用这一方式搭建起了自己的第一个K8s集群。
  2. 今天我们来说一说如何搭建官方的Dashboard来管理我们的K8s集群。
  3. 那后面我们还会有很多关于K8s使用方面的小知识小技巧,感兴趣的小伙伴可以关注我,文章末尾我会列出我们将要谈到的话题哦,记得看完!
  4. 先来个上篇文章的链接吧!!!有些软件包在上篇文章中有说到

为什么要使用 Kubernetes Dashboard?

  1. 看到这里有小伙伴就要问了,我们为什么要用Dashboard?哈哈哈,无他,唯好用尔!
  2. linux实在是有太多太多的命令了,小编的脑子根本记不住,每次都要查太费劲了,有官方提供的管理平台当然要快快用起来了。

Kubernetes Dashboard 可以做什么

基本上一目了然了吧,那我就不说了,说起来挺费劲的!

正式开始

Kubernetes Dashboard 安装
  1. 首先呢我们先获取一下官方提供的recommended.yaml配置文件,不过咱这网络一般是下载不下来,回复我关键字k8s会提供相关所有的软件包给大家哦!!

  2. 我们先打开recommended.yaml,找到下面这一段(红色框内)

  3. 我们需要在这一段内呢添加两对键值,修改后这段应该是这样的:

    kind: Service
    apiVersion: v1
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      name: kubernetes-dashboard
      namespace: kubernetes-dashboard
    spec:
      type: NodePort
      ports:
        - port: 443
          targetPort: 8443
          nodePort: 30443
      selector:
        k8s-app: kubernetes-dashboard
    
  4. 我简单的解释一下,我们这里添加了type: NodePort,这个呢意思是service对外开放端口,用户可以通过node、master节点的IP来访问该服务。那后面nodePort: 30443大家应该也就明白了是对外开放的端口号。

  5. 修改好之后我们就可以开始安装了,上一篇文章中我们同样为大家提供的Kubernetes Dashboard相关的镜像,不然我们这边还不太好下载。

    $ kubectl create -f recommended.yaml
    
  6. 命令执行完毕后我们就可以查看一下对应的service、pod的状态了

    $ kubectl get pod,svc -n kubernetes-dashboard
    
创建 Kubernetes Dashboard 超级管理用户
  1. 默认Dashboard为最小RBAC权限,我们需要添加集群管理员的权限以方便我们从Dashboard页面操作集群资源。

  2. 首先我们需要创建adminuser.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
    
  3. 然后就是执行如下命令在集群中创建用户:

    $ kubectl create -f adminuser.yaml
    
  4. 然后我们就可以访问了页面了,访问地址是:https://{YourNodeIp}:30443

  5. 你会发现他会提示我们证书不对,这是因为我们上面的recommended.yaml中为我们创建了一个空的证书。有的浏览器甚至无法强行跳转,这就涉及到我们下面的证书配置了!

  6. 页面需要我们提供一个token进行登录,最长的那一段就是:

    $ kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
    
为 Kubernetes Dashboard 配置正确的域名证书
  1. 这里我们要配置的是正确的域名证书哦,就像我的截图一样。那没有域名的小伙伴可以使用自签名证书哦,或者使用hosts配置也可以!

  2. 首先我们需要准备好我们的证书以及key文件,这里要注意了,我们的证书命名一定是dashboard.crt,我们的key命名一定是dashboard.key。通过我的实践这是真理,具体为什么咱也不知道,咱也不敢问(可能官方文档里有写咱没看见)。

  3. 接下来我们要查看一下当前是否存在证书(这里算是多此一举)

    $ kubectl get secret -n kubernetes-dashboard|grep kubernetes-dashboard-certs
    
  4. 那我们需要先删除这个证书配置,这样我们才能添加自己的证书

    $ kubectl delete secret kubernetes-dashboard-certs -n kubernetes-dashboard
    
  5. 删除之后呢我们,我们就要创建自己的证书了,千万注意步骤2中的命名问题!!!这是个巨坑

    $ kubectl create secret generic kubernetes-dashboard-certs --from-file="dashboard.crt" --from-file="dashboard.key" -n kubernetes-dashboard
    
  6. 证书创建好了,我们还需要重启pod才能生效,这里我们直接删除pod,deployment监测到pod被删除后会自动创建一个新的

    # 先查看kubernetes-dashboard的pod名称
    $ kubectl get pod -n kubernetes-dashboard
    # 删除该pod
    $ kubectl delete pod kubernetes-dashboard-7f99b75bf4-sbmdp -n kubernetes-dashboard
    
结束了!!!
  1. 至此我们的证书也搞定了,不过需要重新获取一下token,清理一下页面缓存。
  2. 这样就可以正常的使用和登录了。

最后说两句

  1. 这章节就到这里啦,希望大家有所收获。
  2. 后面我们还有一些关于K8s应用方面的小知识、小技巧:
    1. K8s 简单应用(pod,deployment)
    2. 应用互相访问、对外开放访问(service,nodePort)
    3. (nfs)磁盘挂载
    4. 配置文件(config-map)
    5. 使用K8s搭建自己的docker镜像仓库并且配备web-ui
  3. 有兴趣的小伙伴可以关注我哦!!!
  4. 谢谢大家!!!