kubernetes-dashboard有两种认证方式,一个token认证,另一个是Kubeconfig文件的认证。这个时候的认证不是UserAccount而是获取kubernetes集群资源信息的serviceAccount。

token 认证

# 创建一个dashboard的私钥
cd /etc/kubernetes/pki/
(umask 077; openssl genrsa -out dashboard.key 2048) # 生成一个证书签署请求
openssl req -new -key dashboard.key -out dashboard.csr -subj "/O=klvchen/CN=dashboard" # 通过ca.key和ca.crt签署证书
openssl x509 -req -in dashboard.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out dashboard.crt -days 365 # 通过签署证书创建一个sercert
kubectl create secret generic dashboard-cert -n kube-system --from-file=dashboard.crt=./dashboard.crt --from-file=dashboard.key=./dashboard.key # 创建一个专用的 serviceaccount 帐号 dashboard-admin
kubectl create serviceaccount dashboard-admin -n kube-system # 绑定角色 cluster-admin
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin # 查看 dashboard-admin 的 Tokens
kubectl describe serviceaccount dashboard-admin -n kube-system
# 根据上面显示为 dashboard-admin-token-wrfng
kubectl get secret -n kube-system
kubectl describe secret dashboard-admin-token-wrfng -n kube-system
# 获取 token 值,用来在填写网页登录认证信息 # 创建 dashboard 所需要的资源
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.8.3/src/deploy/recommended/kubernetes-dashboard.yaml
kubectl get pods -n kube-system
kubectl get svc -n kube-system # 修改 svc 的的网络类型
kubectl patch svc kubernetes-dashboard -p '{"spec":{"type":"NodePort"}}' -n kube-system
kubectl get svc -n kube-system
# 获取 NodePort 映射的外网端口,这里是 32240

使用 火狐浏览器 访问 https://192.168.0.205:32240 ,点击 高级, 添加例外。这里使用 chrome 和 搜狗浏览器没法出来界面。

Kubeconfig文件认证

# 创建一个访问 default命令空间的 serviceaccount 账号
cd /etc/kubernetes/pki
kubectl create serviceaccount def-ns-admin -n default # 创建 rolebinding 把 def-ns-admin 与 admin 关联,命名空间是 default
kubectl create rolebinding def-ns-admin --clusterrole=admin --serviceaccount=default:def-ns-admin # 如果需要所有命名空间的权限,可以使用 clusterrolebinding 与 cluster-admin 关联
kubectl create clusterrolebinding def-ns-admin --clusterrole=cluster-admin --serviceaccount=default:def-ns-admin # 查看 def-ns-admin 的 token
kubectl get secret
kubectl describe secret def-ns-admin-token-8vzj5 # 创建一个kubeconfig配置文件(基于token配置)
kubectl config set-cluster kubernetes --certificate-authority=./ca.crt --server="https://192.168.0.205:6443" --embed-certs=true --kubeconfig=/root/def-ns-admin.conf kubectl config view --kubeconfig=/root/def-ns-admin.conf DEF_NS_ADMIN_TOKEN=$(kubectl get secret def-ns-admin-token-8vzj5 -o jsonpath={.data.token} |base64 -d) kubectl config set-credentials def-ns-admin --token=$DEF_NS_ADMIN_TOKEN --kubeconfig=/root/def-ns-admin.conf kubectl config view --kubeconfig=/root/def-ns-admin.conf # 配置上下文
kubectl config set-context def-ns-admin@kubernetes --cluster=kubernetes --user=def-ns-admin --kubeconfig=/root/def-ns-admin.conf # 配置当前上下文
kubectl config use-context def-ns-admin@kubernetes --kubeconfig=/root/def-ns-admin.conf kubectl config view --kubeconfig=/root/def-ns-admin.conf # 下载 def-ns-admin.conf # 使用 火狐浏览器 访问
https://192.168.0.205:31328

总结

#部署 Dashboard 的方法
1. 创建:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.8.3/src/deploy/recommended/kubernetes-dashboard.yaml 2. 将Service 改为 NodePort
kubectl patch svc kubernetes-dashboard -p '{"spec":{"type":"NodePort"}}' -n kube-system 3. 认证:
认证时的帐号必须为 ServiceAccount,被 dashboard pod 拿来由 kubernetes 进行认证; 一:token:
(1) 创建 ServiceAccount,根据其管理目标,使用 rolebinding 或 clusterrolebinding 绑定至合理 role 或 clusterrole;
(2) 获取到此 ServiceAccount 的 secret, 查看 secret 的详细信息,其中就有 token; 二:kubeconfig: 把 ServiceAccount 的 token封装为 kubeconfig 文件
(1) 创建 ServiceAccount,根据其管理目标,使用 rolebinding 或 clusterrolebinding 绑定至合理 role 或 clusterrole;
(2) kubectl get secret | awk '/^ServiceAccount/{print $1}'
DEF_NS_ADMIN_TOKEN=$(kubectl get secret def-ns-admin-token-8vzj5 -o jsonpath={.data.token} |base64 -d)
(3) 生成 kubeconfig 文件
kubectl config set-cluster --kubeconfig=/PATH/TO/SOMEFILE
kubectl config set-credentials NAME --token=$KUBE_TOKEN --kubeconfig=/PATH/TO/SOMEFILE
kubectl config set-context
kubectl config use-context

K8S dashboard的更多相关文章

  1. Ubuntu下搭建Kubernetes集群(4)--部署K8S Dashboard

    K8S Dashboard是官方的一个基于WEB的用户界面,专门用来管理K8S集群,并可展示集群的状态.K8S集群安装好后默认没有包含Dashboard,我们需要额外创建它. 首先我们执行命令: wg ...

  2. 【k8s】在AWS EKS部署并通过ALB访问k8s Dashboard保姆级教程

    本教程适用范围 在AWS上使用EKS服务部署k8s Dashboard,并通过ALB访问 EKS集群计算节点采用托管EC2,并使用启动模板. 使用AWS海外账号,us-west-2区域 使用账号默认v ...

  3. [转帖] k8s dashboard 的创建 升级 以及 admin token的创建和简单使用.

    Kubernetes Dashboard中的身份认证详解 https://jimmysong.io/posts/kubernetes-dashboard-upgrade/ Thu Nov 2, 201 ...

  4. K8S dashboard 创建只读账户

    1.创建名字为“Dashboard-viewonly“的Cluster Role,各种资源只给予了list,get,watch的权限.dashboard-viewonly.yaml --- apiVe ...

  5. K8s+dashboard安装部署【h】

    系统安装使用虚拟机安装两个centos系统,在/etc/hosts里增加两行192.168.140.128 kuber-master192.168.140.129 kuber-node1 关闭防火墙s ...

  6. Windows玩转Kubernetes系列4-搭建K8S Dashboard

    下载官方yaml文件 最新的配置文件v2.0.0-beta8版本recommended.yaml,UI地址 wget https://raw.githubusercontent.com/kuberne ...

  7. k8s dashboard 安装和证书更新

    1.k8s 搭建   参见https://blog.51cto.com/lizhenliang/2325770 [root@VM_0_48_centos ~]# kubectl get cs NAME ...

  8. Ubuntu环境Docker+K8s+Dashboard的安装配置(无坑亲测)

    安装之前的准备: 安装docker 使用国内 daocloud 一键安装命令: curl -sSL https://get.daocloud.io/docker | sh 直接从dockerhub下载 ...

  9. k8s dashboard 部署发布

    https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml # Copyright 2015 ...

随机推荐

  1. 免费翻译API破解(简易翻译工具)

    思路:选取有道翻译,用fiddler抓取接口请求信息,提取相关请求参数,破解加密部分. 主要请求数据: i  :翻译文本 ts:时间戳 salt:ts +随机数 sign:加密信息,经过抓取信息,发现 ...

  2. 【Spark调优】聚合操作数据倾斜解决方案

    [使用场景] 对RDD执行reduceByKey等聚合类shuffle算子或者在Spark SQL中使用group by语句进行分组聚合时,经过sample或日志.界面定位,发生了数据倾斜. [解决方 ...

  3. chrome浏览器被reimage pair 劫持怎么处理

    不知道什么原因chrome浏览器被reimage pair劫持了,只要在浏览器内部一按回车,就马上进入了reimage pair下载的界面. 在网上找了很多解决方法,最后才在google的chrome ...

  4. 一看看懂Protocol Buffer(协议篇)

    前言 由于笔者业团队的业务对即时通讯服务有很大的依赖,春节结束后的第一天,红包没到,产品同学先到了,产品同学和我说要做一款IM,看到需求文档后和设计图后笔者大吃一斤 这不就是一个翻版的web qq吗? ...

  5. sql server 索引阐述系列四 表的B-Tree组织

    一.概述 说到B-tree组织,就是指索引,它可以提供了对数据的快速访问.索引使数据以一种特定的方式组织起来,使查询操作具有最佳性能.当数据表量变得越来越大,索引就变得十分明显,可以利用索引查找快速满 ...

  6. 微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能

    微信小程序+WEB使用JS实现注册[60s]倒计时功能开发步骤: 1.wxml页面代码: <text>绑定手机</text> <form bindsubmit=" ...

  7. html2canvas关于图片不能正常截取

    问题 首先说说遇到了什么问题.首先有这么一个需求.需要前端根据后端传过来数据,动态的生成图片.图片中的文案.背景图片.用户头像全部都是通过后端的接口获取.但是使用 html2canvas 生成的can ...

  8. github提交代码contributions不显示小绿块

    问题描述: 最近发现一个问题就是不管是提交新增的代码还是修改后提交的代码在github的contributions上都不显示贡献小绿块. 于是我在 github help 里面找到了答案: 官方链接如 ...

  9. Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录

    一.   MySQL InnoDB Cluster 介绍MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, G ...

  10. Python中编码和字符串

    编码和字符串 编码 在学习回顾中总结一下ASCII编码.Unicode编码和utf-8编码. 计算机中只能处理数字,我们若要处理文本的话就要将文件转换为数字.所以,这就涉及该怎样转换的问题,也就是编码 ...