码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2020-03-31 10:37:37      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:html   就会   items   item   命令   主机   mon   时间   http   

一、前言

  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访问,即可正常。

记得还需要重新创建用户

 

 

 

 

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

标签:html   就会   items   item   命令   主机   mon   时间   http   

原文地址:https://www.cnblogs.com/lizhewei/p/12603285.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!