K8S-部署Dashboard
本文使用的K8S是基于kubeasz一键搭建
Github地址:https://github.com/easzlab/kubeasz
本文档基于 dashboard 1.10.1版本,k8s版本 1.18.3。
部署
新版配置文件参考 https://github.com/kubernetes/dashboard
安装部署
1 | # 部署dashboard 主yaml配置文件 |
验证
1 | # 查看pod 运行状态 |
-
由于还未部署 Heapster 插件,当前 dashboard 不能展示 Pod、Nodes 的 CPU、内存等 metric 图形,后续部署 heapster后自然能够看到
访问控制
因为dashboard 作为k8s 原生UI,能够展示各种资源信息,甚至可以有修改、增加、删除权限,所以有必要对访问进行认证和控制,本项目部署的集群有以下安全设置:
-
启用
TLS认证
RBAC授权
等安全特性 -
关闭 apiserver非安全端口8080的外部访问
--insecure-bind-address=127.0.0.1
-
关闭匿名认证
--anonymous-auth=false
-
可选启用基本密码认证
--basic-auth-file=/etc/kubernetes/ssl/basic-auth.csv
,按照每行(密码,用户名,序号)的格式,可以定义多个用户;kubeasz 1.0.0 版本以后默认关闭 basic-auth,可以在 roles/kube-master/defaults/main.yml 选择开启
新版 dashboard可以有多层访问控制,首先与旧版一样可以使用apiserver 方式登录控制:
-
第一步通过api-server本身安全认证流程,与之前相同,这里不再赘述
- 如需(用户名/密码)认证,kubeasz 1.0.0以后使用
easzctl basic-auth -s
开启
- 如需(用户名/密码)认证,kubeasz 1.0.0以后使用
-
第二步通过dashboard自带的登录流程,使用
Kubeconfig
Token
等方式登录
注意: 如果集群已启用 ingress tls的话,可以配置ingress规则访问dashboard
演示新登录方式
为演示方便这里使用 https://NodeIP:NodePort
方式访问 dashboard,支持两种登录方式:Kubeconfig、令牌(Token)
-
令牌登录(admin)
选择“令牌(Token)”方式登录,复制下面输出的admin token 字段到输入框
1 | # 创建Service Account 和 ClusterRoleBinding |
-
令牌登录(只读)
选择“令牌(Token)”方式登录,复制下面输出的read token 字段到输入框
1 | # 创建Service Account 和 ClusterRoleBinding |
-
Kubeconfig登录(admin)
Admin kubeconfig文件默认位置:/root/.kube/config
,该文件中默认没有token字段,使用Kubeconfig方式登录,还需要将token追加到该文件中,完整的文件格式如下:
1 | apiVersion: v1 |
-
Kubeconfig登录(只读)首先创建只读权限 kubeconfig文件,然后类似追加只读token到该文件,略。
访问部署好的K8S面板
如图所示:
输入token后点击登录:
登录到这个界面就说明成功了