一、获取镜像和填坑

  我的k8s是1.13.1,这里dashboard用的1.10.1;

  由于国内不能访问Google,而且大部分人可能也没有其他途径访问;只能在阿里云或者其他镜像网站上获取了;

   镜像获取命令:

    docker pull lizhenliang/kubernetes-dashboard-amd64:v1.10.1

(1)先填几个坑

  在部署dashboard1.10.1的时候,确实有几个坑,网友也有说的,如下:

  (1)第一个肯定就是镜像问题了,但是有办法解决,问题不大,用上面的命令获取就行,如果失效了,也可以注册账号去阿里云上搜索;

   阿里云镜像搜索链接:https://dev.aliyun.com/search.html

   我这里还有一个奇怪的问题,就是获取到镜像以后,不能重新打标签,如果重新打标签了,pod起不来,不知道什么情况..暂时没看出来;

  (2)证书问题

   生成证书:

    [root@master ~]# mkdir /certs

    [root@master ~]# openssl req -nodes -newkey rsa:2048 -keyout /certs/dashboard.key -out /certs/dashboard.csr -subj "/C=/ST=/L=/O=/OU=/CN=kubernetes-dashboard"

    

    [root@master ~]# ls /certs/

    

    [root@master ~]# cd /etc/kubernetes/pki/

    [root@master pki]# openssl x509 -req -sha256 -days 365 -in /certs/dashboard.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out /certs/dashboard.crt

     

    [root@master pki]# ls /certs/

    

    [root@master pki]# kubectl create secret generic kubernetes-dashboard-certs --from-file=/certs -n kube-system

    

    

   (3)获取kubernetes-dashboard.yaml文件,并修改;

    a、获取kubernetes-dashboard.yaml文件;

      GitHub上k8s-dashboard项目地址:https://github.com/kubernetes/dashboard

      获取kubernetes-dashboard.yaml文件命令:

      kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

    b、修改kubernetes-dashboard.yaml文件中service字段配置,

      将type: ClusterIP改成NodePort,便于通过Node端口访问,文件中可能没有type: ClusterIP字段,不要紧,可以手动加进去,

      还可以添加一个固定端口,如下图:

       [root@master manifests]# vim kubernetes-dashboard.yaml

     

    c、修改镜像地址

     由于我这里不能重新打标签,只能修改kubernetes-dashboard.yaml里面的镜像地址了:

      

    以上步骤,基本上开始的坑就填完了;

二、部署Kubernetes-dashboard

  (1)token认证方式登录

   a、创建资源

   [root@master manifests]# kubectl apply -f kubernetes-dashboard.yaml

    查看:

    

    可见dashboard的pod已经起来了,service的端口是我们设置的固定端口30001

    全局serviceaccount:

    b、创建serviceaccount并绑定默认cluster-admin管理员集群角色,使用输出的token登录Dashboard

    kubectl create serviceaccount dashboard-admin -n kube-system

    

    kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

    

    kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

    

     c、web端访问

    a、复制上面的“token”,这个“token”最好保存下来;   

     b、在外部浏览器中输入:https://ip:端口    应该能打开如下页面,选择令牌登录;

    

    c、dang dang dang dang...

    看到如下界面,可以平静一下了...

    

     上面我们创建的serviceaccount是全局性的,它可以访问所有的namespace资源;

    

   局部serviceaccount:

    接下来可以创建一个只有局部权限的serviceaccount,让它只对当前namespace生效;

    a、创建serviceaccount

    [root@master pki]# kubectl create serviceaccount def-ns-admin -n default

    

    b、创建rolebinding,用rolebinding将serviceaccount绑定到admin上(不是cluster-admin);

    [root@master pki]# kubectl create rolebinding def-ns-admin --clusterrole=admin --serviceaccount=default:def-ns-admin

     

     

     c、获取“token”

     [root@master pki]# kubectl describe secret def-ns-admin-token-hc9mf

    

     d、此时我们用这个“token”去令牌登录,发现只能管理默认的namespace

     

  (2)kubeconfig认证方式登录

    a、设置def-ns-admin的集群配置信息  

    [root@master ~]# cd /etc/kubernetes/pki/

   [root@master pki]# kubectl config set-cluster kubernetes --certificate-authority=./ca.crt --server="https://192.168.3.100:6443" --embed-certs=true --kubeconfig=/root/def-ns-admin.conf

    查看配置文件:

    

    b、以kubeconfig认证方式登录的时候,可以用开始时创建的私钥作为证书,也可以直接用token作为证书;

    查看帮助:

       

    c、这里用token作为证书;

    

    因为这里的token是base64编码,所以需要进行解码操作:

    

    由于这里的token字段太长,我们 可以把解码后的token字段保存到一个变量里面:

      [root@master pki]# DEF_NS_ADMIN_TOKEN=$(kubectl get secret def-ns-admin-token-hc9mf -o jsonpath={.data.token} |base64 -d)

    d、配置token作为认证

    [root@master pki]# kubectl config set-credentials def-ns-admin --token=$DEF_NS_ADMIN_TOKEN --kubeconfig=/root/def-ns-admin.conf

    

    查看配置文件,可见token已经配置进去了:

    

    e、配置上下文

    [root@master pki]# kubectl config set-context def-ns-admin@kubernetes --cluster=kubernetes --user=def-ns-admin --kubeconfig=/root/def-ns-admin.conf

    

    [root@master pki]# kubectl config use-context def-ns-admin@kubernetes --kubeconfig=/root/def-ns-admin.conf

    

    查看配置文件:

    

    f、将/root/def-ns-admin.conf文件发送到宿主机,浏览器访问时选择Kubeconfig认证,载入该配置文件;

    我用的VMware虚拟机在自己笔记本上做的集群,这里我将/root/def-ns-admin.conf传输到我笔记本的D:\k8s_kubeconfig下,

    

    然后,在笔记本上用浏览器访问,选择kubeconfig的方式,再找到配置文件,即可登录:

    

    

    

k8s-部署dashboard1.10.1-十七的更多相关文章

  1. ballerina 学习二十七 项目k8s部署&& 运行

    ballerina k8s 部署和docker 都是同样的简单,编写service 添加注解就可以了 参考项目 https://ballerina.io/learn/by-guide/restful- ...

  2. Python服务Dokcer化并k8s部署实例

    这篇文章记录了我试验将一个基于python的服务docker化并k8s部署的过程. 服务介绍Docker化设计业务代码改造创建docker镜像K8S部署设计yaml文件运行服务介绍这是一个用 pyth ...

  3. Prometheus K8S部署

    Prometheus K8S部署 部署方式:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/prometheus ...

  4. 阿里nacos k8s部署

    阿里nacos k8s部署 [root@master1 nacos]# cat nacos-quick-start.yaml --- apiVersion: v1 kind: Service meta ...

  5. 使用k8s部署springboot+redis简单应用

    准备 本文将使用k8s部署一个springboot+redis应用,由于是示例,所以功能比较简单,只有设置值和获取值两个api. (1)设置值 (2)获取值 构建Web应用 (1)创建一个spring ...

  6. 最简单的 K8S 部署文件编写姿势,没有之一!

    1. 头疼编写K8S部署文件? K8S yaml 参数很多,需要边写边查? 保留回滚版本数怎么设? 如何探测启动成功,如何探活? 如何分配和限制资源? 如何设置时区?否则打印日志是GMT标准时间 如何 ...

  7. K8S 部署 SpringBoot 项目(一篇够用)

    现在比较多的互联网公司都在尝试将微服务迁到云上,这样的能够通过一些成熟的云容器管理平台更为方便地管理微服务集群,从而提高微服务的稳定性,同时也能较好地提升团队开发效率. 但是迁云存在一定的技术难点,今 ...

  8. 微服务探索之路03篇-docker私有仓库Harbor搭建+Kubernetes(k8s)部署私有仓库的镜像

    ❝ 目录: 微服务探索之路01篇.net6.0项目本地win10系统docker到服务器liunx系统docker的贯通 微服务探索之路02篇liunx ubuntu服务器部署k8s(kubernet ...

  9. K8s 部署 Dashboard UI 仪表板 ——让一切可视化

    K8s 部署 Dashboard UI  仪表板   --让一切可视化 Dashboard 介绍 仪表板是基于Web的Kubernetes用户界面.您可以使用仪表板将容器化应用程序部署到Kuberne ...

随机推荐

  1. Go -- 判断chan channel是否关闭的方法

    如果不判断chan是否关闭 Notice: 以下代码会产生死循环 代码如下: package main import ( "fmt" ) func main() { c := ma ...

  2. 【Mongodb教程 第十八课 】MongoDB常用命令 数据库命令 集合操作命令

    面向文档的 NoSQL 数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能.  条件操作符 <, <=, >, >=  这个操作符就不用多 ...

  3. HDU 4334 Trouble(哈希|线性查找)

    给定五个集合.问是否能从五个集合各取一个元素,使得元素之和为0. 这道题有两种做法,一种是哈希,然而之前没写过哈希.....比赛后从大神那copy了一份. 这里说还有一种. 对于这五个集合分为三组.1 ...

  4. Mesa (computer graphics)

    http://en.wikipedia.org/wiki/Mesa_(computer_graphics) Mesa (computer graphics) From Wikipedia, the f ...

  5. busybox 终端支持 ctrl-r

    Busybox Settings ---> Busybox Library Tuning ---> [*] History saving [ ] Save history on shell ...

  6. 项目Alpha冲刺(团队10/10)

    项目Alpha冲刺(团队10/10) 团队名称: 云打印 作业要求: 项目Alpha冲刺(团队) 作业目标: 完成项目Alpha版本 团队队员 队员学号 队员姓名 个人博客地址 备注 22160041 ...

  7. 浅谈JavaScript的事件(事件流)

     事件流描述的是从页面中接收事件的顺序.IE的事件流失事件冒泡,而Netspace的事件流失事件捕获. 事件冒泡 IE的事件流叫事件冒泡,即事件开始时,由具体的元素(文档中嵌套层次最深的节点)接收,然 ...

  8. 诺基亚(Microsoft Devices Group)2014暑期实习生笔试题知识点

    总结一下Microsoft Devices Group的软件类笔试题,全部笔试题分两份试卷,逻辑题一份和软件測试题一份,仅仅总结技术题喽~题目全英文,仅仅包括选择题和填空题.选择题居多.分单选和多选. ...

  9. Finally语句块的运行

    一.finally语句块是否一定运行? Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被运行?非常多人都说不是.当然他们的回答是正确的,经过试验. ...

  10. VUE 之 JS指令

    1.v-text的用法: 2.v-html 3.v-for 4.v-if , v-else if ,v-else v-if 每次生成都只有一个标签,即符合条件的标签. 5.v-show v-show ...