当前位置: 首页 > news >正文

在阿里云k8s服务中玩转最新版原生dashboard

缘由

阿里云的k8s服务,已经在阿里云的控制台提供了托管式的原生kubernetes控制台,无需客户自己占用机器来启动该控制台应用,但是这里有些“局限”:

  • 每次都要登录到阿里云的控制台
  • 如果期望使用最新的k8s控制台,而阿里云提供的k8s控制台又可能不是最新的版本

这个时候可以怎么办呢?自行部署k8s的原生控制台,通过kubectl proxy的方式去访问

部署最新k8s控制台

前置条件

  • 在阿里云部署了一套k8s集群
  • 在本地配置好了k8s config文件,并能访问集群
  • 安装好docker

部署步骤

  • 获取镜像:因为官方提供的镜像是在gcr上,受限国内网络情况,直接获取官方对应的yaml做部署是不行。所以必须先获取一个镜像并推送到国内的镜像仓库中,可以放到阿里云你自己的镜像中。(阿里云的镜像仓库是免费的哦,同时支持vpc模式访问,流量都免费)

具体做法如下:

  • 找一台国外的机器,先从grc获取最新image到本地
  • 给镜像打tag
  • push到阿里云的镜像仓库(目前dashboard最新版本为1.10.0)
#docker login --username=<your name> registry.cn-shenzhen.aliyuncs.com
#docker pull k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0 
#docker tag k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0 registry.cn-shenzhen.aliyuncs.com/<namespace>/kubernetes-dashboard-amd64:v1.10.0
#docker push registry.cn-shenzhen.aliyuncs.com/<namespace>/kubernetes-dashboard-amd64:v1.10.0
  • 使用官网yaml部署dashboard
$kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
  • 修改对应的镜像为自己镜像
$kubectl edit deployment/kubernetes-dashboard -n kube-system

这样就部署成功了

如果没有办法从国外获取到镜像,可以查询下阿里云的公共镜像仓库是否已经有对应的镜像

地址在:registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64

可以参考我之前的文章<<通过OAuth方式与docker hub v2 API交互>>来获取该镜像的tag列表,很幸运,该列表很新:

image

原因是阿里云容器团队会定期同步gcr中的google_containers下的image,这个同步工具也已经开源了: https://github.com/AliyunContainerService/sync-repo (求star)

  • 访问dashboard

    • 启动proxy
$kubectl proxy
  • 然后浏览器访问:
    http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
  • 登录

使用以下方式获得一个admin token来登录(支持多集群下config,官网的方式只支持一个集群的config,通过kubctx切换集群)

$kubectx <cluster name>
$kubectl describe secret -n kube-system $(kubectl get secrets --all-namespaces| grep admin-token | awk '{print $2}') | grep -E '^token' | cut -f2 -d':' | tr -d ' '

这样你就可以玩最新的k8s的原生dashboard了

参考文档

  • <<通过OAuth方式与docker hub v2 API交互>> https://yq.aliyun.com/articles/635236?spm=a2c4e.11155435.0.0.55be3312bxSM1
  • k8s dashboard github: https://github.com/kubernetes/dashboard
  • dashboard官网介绍:https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/

相关文章:

  • Linux netstat常用命令
  • Python从菜鸟到高手(8):print函数、赋值与代码块
  • [译] 探索 Swift 4 中新的 String API
  • 右键添加复制路径选项
  • cocos2d-x支持c++、js、lua开发
  • 旋转数组中查找最小值-剑指Offer11
  • RIP路由信息协议
  • 服务器连接工具 secureCRT
  • SeaweedFS---01
  • Spring Boot 最佳实践(五)Spring Data JPA 操作 MySQL 8
  • 周六相约橘子洲头,共话AWS上的AI和大数据技术
  • 【转】20-TCP 协议(滑动窗口——基础)
  • httpd之apache服务器配置
  • 如何重置migration
  • LVS 之 管理工具ipvsadm介绍
  • php的引用
  • [NodeJS] 关于Buffer
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【Amaple教程】5. 插件
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • axios 和 cookie 的那些事
  • echarts花样作死的坑
  • es6(二):字符串的扩展
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • nodejs:开发并发布一个nodejs包
  • node和express搭建代理服务器(源码)
  • Phpstorm怎样批量删除空行?
  • Vue.js源码(2):初探List Rendering
  • 创建一个Struts2项目maven 方式
  • 大数据与云计算学习:数据分析(二)
  • 浏览器缓存机制分析
  • 批量截取pdf文件
  • 前端面试之闭包
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • # Java NIO(一)FileChannel
  • #ifdef 的技巧用法
  • #QT(一种朴素的计算器实现方法)
  • #vue3 实现前端下载excel文件模板功能
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $().each和$.each的区别
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (3)(3.5) 遥测无线电区域条例
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (ibm)Java 语言的 XPath API
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (五)Python 垃圾回收机制
  • (转载)从 Java 代码到 Java 堆
  • .NET Core跨平台微服务学习资源
  • .net 受管制代码
  • .NET 药厂业务系统 CPU爆高分析