本文使用的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后点击登录:
登录到这个界面就说明成功了
参考
文章作者: 小俊
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小俊丶生活日志!
相关推荐

2023-06-29
Kubernetes常用命令
1. 查看类命令获取节点相应服务的信息 1kubectl get nodes 如果需要按selector名来查找相应的pod信息, 可以通过以下命令查看: 1kubectl get pod --selector name=tomcat 查看K8S集群信息 1kubectl cluster-info 查看各组件信息 1kubectl -s http://localhost:8080 get componentstatuses 查看pods所在的运行节点 1kubectl get pods -o wide 如果需要通过某个命名空间查找节点信息, 可以通过以下命令查看: 1234kubectl get pods -o wide -n kube-system#详解:#-o wide 选项表示展示更多的Pod节点信息#-n <命名空间> 表示查询该命名空间下的Pod节点信息 如果需要查找所有命名空间下的所有Pod信息, 可以通过以下命令: 1234kubectl get pods --all-namespaces#或kubectl get pods -o...

2023-06-29
基于easzup一键搭建K8S集群
基于easzup一键搭建K8S集群Github地址:https://github.com/easzlab/kubeasz本文基于github原作者文章,根据我自己测试的实际情况进行修改HA architecture 注意1:确保各节点时区设置一致、时间同步。...

2023-06-29
Ingress-http配置
Ingress简介ingress就是从外部访问k8s集群的入口,将用户的URL请求转发到不同的service上。ingress相当于nginx反向代理服务器,它包括的规则定义就是URL的路由信息;它的实现需要部署Ingress controller(比如 traefik ingress-nginx 等),Ingress controller通过apiserver监听ingress和service的变化,并根据规则配置负载均衡并提供访问入口,达到服务发现的作用。 未配置ingress: 集群外部 -> NodePort -> K8S Service 配置ingress: 集群外部 -> Ingress -> K8S Service 注意:ingress 本身也需要部署Ingress controller时使用以下几种方式让外部访问 使用NodePort方式 使用hostPort方式 使用LoadBalancer地址方式 以下讲解基于Traefik,如果想要了解ingress-nginx的原理与实践,推荐阅读博客烂泥行天下的相关文章 部署...

2023-06-29
ingress负载转发端口
配置负载转发 ingress nodeport向集群外暴露 ingress-controller 本身的服务端口(80/443/8080)一般有以下三种方法: 1.部署ingress-controller时使用hostNetwork: true,这样就可以直接使用上述端口,可能与host已listen端口冲突 2.部署ingress-controller时使用LoadBalancer类型服务,需要集群支持LoadBalancer 3.部署ingress-controller时使用nodePort类型服务,然后在集群外使用 haproxy/f5 等配置 virtual server 集群 本文讲解使用 haproxy 配置 ingress的 VS 集群,前提是配置了自建ex-lb节点 1.配置 ex-lb 参数开启转发 ingress nodeport1234#/etc/ansible/hosts,在ex-lb下面天界以下参数[ex-lb]10.0.0.10 LB_ROLE=master EX_APISERVER_VIP=10.0.0.250...

2023-06-29
企业级仓库harbor搭建
1.简单说明 Harbor是由VMware公司开源的企业级的Docker Registry管理项目,相比docker官方拥有更丰富的权限权利和完善的架构设计,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。 2.组件 Harbor 由 5 个容器组成: 容器(组件)名称 说明 Proxy 由 Nginx 服务器构成的反向代理 Registry 由 Docker 官方的开源 registry 镜像构成的容器实例 Core services 构成此容器的代码是 Harbor 项目的主体 Mysql 由官方 MySql 镜像构成的数据库容器 Log 运行着 rsyslogd 的容器,通过 log-driver 的形式收集其他容器的日志 其中Core services是Harbor的核心功能,主要提供以下的服务: 组件 说明 UI 提供图形化界面,帮助用户管理registry上的镜像(image), 并对用户进行授权 Webhook 为了及时获取registry...

2023-06-29
traefik配置ingress-https
使用 traefik 配置 https ingress本文档基于 traefik 配置 https ingress 规则,请先阅读配置基本 ingress。与基本 ingress-controller 相比,需要额外配置 https tls 证书,主要步骤如下: 1.准备 tls 证书可以使用Let’s Encrypt签发的免费证书,这里为了测试方便使用自签证书 (tls.key/tls.crt),注意CN 配置为 ingress 的域名: 1$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=hello.97hjh.cn" 2.在 kube-system 命名空间创建 secret: traefik-cert,以便后面 traefik-controller 挂载该证书1$ kubectl -n kube-system create secret tls traefik-cert --key=tls.key...