前言

我们之前搭建了第一个docker项目:

windows环境30分钟从0开始快速搭建第一个docker项目(带数据库交互)https://www.cnblogs.com/xiongze520/p/15069441.html

然而我们知道,docker和k8s(Kubernetes)是配套使用的,我们今天就开启k8s并登录仪表盘。

注意:没有安装docker的可以先进行docker的搭建,接下来都是基于安装好docker的基础上进行的。

Docker:Docker Desktop for Window

Kubernetes版本:1.21.2

演示电脑系统版本:Windows 10 专业版


拉取Kubernetes镜像

方式一:使用下面命令拉取(不建议使用,github比较慢,会导致git失败)

命令1(拉取镜像分支):git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git

命令2(进入拉取的分支目录):cd k8s-for-docker-desktop

命令3(切换到指定版本)git checkout v1.21.2

方式二:强烈建议使用

点击下面地址链接进入Kubernetes主页,选择指定的版本下载代码,点击下载zip后解压,后续操作在解压目录。

注意:如果显示无法访问,可以多访问几次,网络问题导致,这个链接地址是正确的。

https://github.com/AliyunContainerService/k8s-for-docker-desktop

下载后解压到自己的指定目录,文件名可以自定义。


安装Kubernetes镜像

以管理员身份运行PowerShell,如果运行失败,运行x86的版本也可以。

进入我们下载安装的目录,如果路径不正确的自行跳转,如下:

cd..  返回上一级

cd 进入指定目录

 进入解压目录后,执行下面语句安装,静待安装完成。

.\load_images.ps1

安装完成后可以 使用docker images命令查看。


开启Kubernetes

1、修改host地址

将C:\ProgramData\DockerDesktop\tmp-d4w的host.docker.internal内容修改。

修改后内容指向本机,后续k8s仪表盘地址可自行修改。

# Kubernetes
127.0.0.1 kubernetes.docker.internal

2、配置镜像加速

配置完后点击Apply&Restart保存。

{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://registry.docker-cn.com",
"https://xxx.mirror.aliyuncs.com"
],
"insecure-registries": [],
"debug": true,
"experimental": true,
"features": {
"buildkit": true
},
"builder": {
"gc": {
"enabled": true,
"defaultKeepStorage": "20GB"
}
}
}
https://xxx.mirror.aliyuncs.com是阿里云镜像,
查看阿里云的镜像加速器地址,https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,
需要登录阿里云才能查看,将 xxx 字符替换为你获取到的地址,下面打码遮挡的部分。
注:这里的加速地址大家除了这几个,还可以去百度很多个进来。

3、启动镜像加速

4、设置k8s上下文

首先获取所有上下文,执行如下命令,得到NAME名称:

kubectl config get-contexts

设置上下文(注意,后面的名称是查看上下文时的NAME,也就是docker-desktop,如果有docker-for-desktop的话也可以)

kubectl config use-context docker-desktop

5、验证集群状态

kubectl cluster-info

6、安装k8s管理页面Dashboard

#方式1
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml #方式2(推荐)
kubectl create -f kubernetes-dashboard.yaml

使用命令重新安装

kubectl delete -f kubernetes-dashboard.yaml
kubectl create -f kubernetes-dashboard.yaml

查看Dashboard镜像是否正常运行

kubectl get pods --all-namespaces

7、访问Kubernetes Dashboard

使用 kubectl proxy 命令访问

kubectl proxy

打开浏览器输入以下地址访问(注意,PowerShell窗口不要关闭,关闭后无法访问)

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy


配置Token并登录

1、创建服务账号

首先创建一个叫admin-user的服务账号,并放在kubernetes-dashboard命名空间下。

注意:这里需要重新开启一个PowerShell,原来开启的不要动。

New-Item admin-user.yaml

创建成功后这是一个空文件,用记事本或者其他方式打开文件, 复制如下内容保存。

# admin-user.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard

保存后执行kubectl create命令

kubectl create -f admin-user.yaml

2、绑定角色

默认情况下,kubeadm创建集群时已经创建了admin角色,我们直接绑定即可:
使用命令

New-Item admin-user-role-binding.yaml

同样的,创建成功后这是一个空文件,用记事本或者其他方式打开文件, 复制如下内容保存。

# admin-user-role-binding.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard

保存后执行kubectl create命令

3、获取Token并登录

执行如下命令即可获得。

$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]
kubectl config set-credentials docker-for-desktop --token="${TOKEN}"
echo $TOKEN

由于我已经获取过了,所以这里显示有问题,这个是永久的,获取后可以放到记事本保存起来。

获取到Token后,直接复制token进行登录刚刚的面板,如下

这样我们就在Docker里面开启k8s(Kubernetes)仪表盘并登录成功了。


参考文献


下篇预告

在kubernetes里面部署服务器集群并访问项目

 
欢迎关注订阅微信公众号【熊泽有话说】,更多好玩易学知识等你来取

作者:熊泽-学习中的苦与乐
公众号:熊泽有话说


出处:   https://www.cnblogs.com/xiongze520/p/15268520.html



您可以随意转载、摘录,但请在文章内注明作者和原文链接。

30分钟学会Docker里面开启k8s(Kubernetes)登录仪表盘(图文讲解)的更多相关文章

  1. 【grunt第二弹】30分钟学会使用grunt打包前端代码(02)

    前言 上一篇博客,我们简单的介绍了grunt的使用,一些基础点没能覆盖,我们今天有必要看看一些基础知识 [grunt第一弹]30分钟学会使用grunt打包前端代码 配置任务/grunt.initCon ...

  2. 30分钟学会使用Spring Web Services基础开发

    时隔一年终于又推出了一篇30分钟系列,上一篇<30分钟学会反向Ajax>是2016年7月的事情了.时光荏苒,岁月穿梭.虽然一直还在从事Java方面的开发工作,但是私下其实更喜欢使用C++. ...

  3. 30 分钟学会 Flex 布局

    30 分钟学会 Flex 布局 有酒   617 人赞同了该文章 为什么我要写这一篇关于 Flex 布局的教程? 因为它十分简单灵活,区区简单几行代码就可以实现各种页面的的布局,以前我在学习页面布局的 ...

  4. 【Shell】30分钟关闭Tcpdump,开启Tcpdump、检测目录大小终止任务

    场景 按照一定时间规律运行Tcpdump 思路 编程思路细化思考 查看文件个数 file_count_results=`ls -al "C:\\Users\\Windows32\\Deskt ...

  5. 30分钟学会XAML

    1.狂妄的WPF 相对传统的Windows图形编程,需要做很多复杂的工作,引用许多不同的API.例如:WinForm(带控件表单).GDI+(2D图形).DirectX API(3D图形)以及流媒体和 ...

  6. 30分钟学会如何使用Shiro

    本篇内容大多总结自张开涛的<跟我学Shiro>原文地址:http://jinnianshilongnian.iteye.com/blog/2018936 我并没有全部看完,只是选择了一部分 ...

  7. 教你30分钟学会XAML

    1.狂妄的WPF 相对传统的Windows图形编程,需要做很多复杂的工作,引用许多不同的API.例如:WinForm(带控件表单).GDI+(2D图形).DirectX API(3D图形)以及流媒体和 ...

  8. 30分钟学会Objective-C

    注: 本文首发于我的个人博客:https://evilpan.com/2019/04/05/objc-basics/ 请原谅我的标题党.但是如果你有其他语言的学习经验,要学习Objective-C的语 ...

  9. 【grunt整合版】30分钟学会使用grunt打包前端代码

    grunt 是一套前端自动化工具,一个基于nodeJs的命令行工具,一般用于:① 压缩文件② 合并文件③ 简单语法检查 对于其他用法,我还不太清楚,我们这里简单介绍下grunt的压缩.合并文件,初学, ...

随机推荐

  1. 记一次WindowsServer2012提权 - 烂土豆

    此次主题:烂土豆 shell咋拿的 我也忘了 好像是添加友情链接那里还是啥 不重要了 直接获取shell后 先用systeminfo > 1.txt了一下 然后放到了 windows-explo ...

  2. vulnhub-DC:8靶机渗透记录

    准备工作 在vulnhub官网下载DC:8靶机DC: 8 ~ VulnHub 导入到vmware,设置成NAT模式 打开kali准备进行渗透(ip:192.168.200.6) 信息收集 利用nmap ...

  3. EL表达式和JSTL标签

    什么是 EL 表达式,EL 表达式的作用? EL 表达式的全称是:Expression Language.是表达式语言. EL 表达式的什么作用:EL 表达式主要是代替 jsp 页面中的表达式脚本在 ...

  4. MySQL学习07(规范化数据库设计)

    规范化数据库设计 当数据库比较复杂时我们需要设计数据库 糟糕的数据库设计 : 数据冗余,存储空间浪费 数据更新和插入的异常 程序性能差 良好的数据库设计 : 节省数据的存储空间 能够保证数据的完整性 ...

  5. JavaSE-常用类

    JavaSE-常用类 Obeject Java Object类是所有类的父类,也就是说Java的所有类都继承了Object,子类可以使用Object的所有方法. Object类位于java.lang包 ...

  6. 【XXE学习】XML外部实体注入

    一.XML外部实体注入介绍 1.1 XXE简介 XML外部实体注入(XML External Entity Injection)也就是人们(mian shi guan )常说的XXE啦,见名知意,就是 ...

  7. MATLAB—信号与系统中的应用

    文章目录 一. 理论知识 1.线性系统的响应 2.微分方程的解 Ⅰ.经典解 Ⅱ.完全响应 3.零输入响应 4.零状态响应 5.冲激响应 6.阶跃响应 7.卷积求零状态响应 二.连续信号的MATLAB描 ...

  8. 从MySQL大量数据清洗到TiBD说起

    从MySQL大量数据清洗到TiBD说起 一.业务场景: 公司主要做的业务是类似贝壳的二手房租售,公司数据库存了上亿级别的房源数据,之前的数据库使用的是 mysql,后面需要将mysql数据库切换成了 ...

  9. NOIP 模拟 $14\; \text{队长快跑}$

    题解 \(by\;zj\varphi\) 一道很妙的 \(dp\) 题,方程状态不好设置,细节也不少 看到数据范围,直接想离散化 设 \(f_{i,j}\) 表示处理完前 \(i\) 个水晶,其中摧毁 ...

  10. JavaWeb单体项目的分层设计与实现

    1.概述 为什么要把一个完整的项目(Project)按层拆分成多个模块(Module)? 1)使项目层次更加的清晰: 2)提高代码的复用性: 3)细化分工: 4)解耦. 是不是听起来很高大尚,今天就简 ...