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

记得还需要重新创建用户

 


 

posted @ 2020-01-07 15:12  天乐_技术博客  阅读(2318)  评论(0编辑  收藏  举报