在 Docker Desktop 中启用 K8s 服务
Overview
作为目前事实上的容器编排系统标准,K8s 无疑是现代应用的基石,很多同学入门可能直接就被卡到第一关,从哪去弄个 K8s 的环境
自己搭吧,要求的硬件资源太高,基本上搭建一个 K8s 集群就劝退了很多的人,因此这里最简单的方式就是直接使用 Windows or Mac 上的 Docker Desktop 内置的 K8s 来学习
然而,由于某些网络原因,如果你直接在 Dokcer 中启用这个功能的话,基本上是不可能成功开启的,因此,本篇文章是基于 k8s-for-docker-desktop 进行的操作说明,希望可以帮你顺利的启用这一功能
Step by Step
首先,你需要在电脑上安装好 Docker Desktop,这个过程就不赘述了,一路 Next 即可。如果可以的话,推荐使用 WSL 作为宿主,后面运行 Docker 时的性能会更好些。最新版的软件在安装时也是会默认使用 WSL 作为宿主的,这里我使用的是 3.3.1 版本的 Docker,内置的 k8s 版本为 v1.19.7
PS:安装 Docker 之前需要你在 BIOS 中开启虚拟化,同时基于你的宿主程序的选择,你还需要执行如下的操作
- 使用 WSL2 作为宿主:在“控制面板\所有控制面板项\程序和功能”中选择“启用或者关闭 Windows 功能” 勾选上
适用于 Linux 的 Windows 子系统,然后在 Microsoft 商城中下载一个 Linux 的发行版本 - 使用 Hyper-V 作为宿主:在“控制面板\所有控制面板项\程序和功能”中选择“启用或者关闭 Windows 功能” 勾选上 
Hyper-V(没记错的话,如果你有安装别的虚拟机软件,启用 Hyper-V 后原来的虚拟机由于冲突是没办法继续使用了) 

Docker Desktop 中内置的 K8s 其实是依赖于相关的镜像,由于这些镜像位于 google 的服务器上,因此基本上是无法正常拉取下来的,所以这里就需要借助镜像网站将这些 docker 镜像拉取到本地
2.1、开启 K8s 服务
因为直接从 Docker Hub 拉取镜像的速度实在感人,所以安装完成之后我们可以配置镜像网站地址,加速 docker 镜像的拉取
找到 Docker 的设置页面,在 Docker Engine 页面,将镜像网站的地址加入到右侧配置文件的 registry-mirrors 节点下面,这里我使用的是 Docker 官方和中科大的镜像网站地址,你可以依据自己的喜好选择,调整完成之后重启 Dokcer 即可

{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",// 中科大
    "https://registry.docker-cn.com"// 官方
  ],
  "insecure-registries": [],
  "debug": false,
  "experimental": false,
  "features": {
    "buildkit": true
  }
}
镜像地址配置完成之后,clone 下 k8s-for-docker-desktop 这个项目,找到 load_images.ps1 这个 powershell 文件,打开后可以看到整个脚本其实是从阿里云拉取了相关的镜像,确保红框中的镜像版本与 Dokcer 内置的 K8s 版本保持一致,然后直接运行

因为使用到了 ps1 脚本文件来执行 powershell 命令,如果是第一次执行 powershell 的脚本文件的话,由于默认的安全策略,这里会提示没有权限执行,我们可以通过执行下面的语句来使脚本正常运行
Set-ExecutionPolicy RemoteSigned

等待命令的执行完成,可以看到我们本地的 Docker 中已经包含了  images.properties 文件中列到的镜像

打开 Docker 的设置页面,找到 Kubernetes 页面,选中 Enable Kubernetes,然后点击 Apply & Restart,这个执行过程有个一两分钟,稍等一会等待 K8s 的启动完成

当左下角出现 K8s 的 logo,并逐步变为绿色,整个 K8s 的环境也就运行起来了,此时我们就可以通过 kubectl 来操作集群,可以看到这里已经可以打印出整个“集群”的信息

2.2、启用 Dashboard
集群启动之后,虽然我们可以通过 kubectl 来操作集群,但是如果能够通过可视化页面的方式进行访问,则会更加便捷
在上文 clone 下的 repo 中有个 kubernetes-dashboard.yaml 文件,你可以直接通过 kubectl apply 命令运行,然后启用代理进行访问
-- 创建 dashboard 资源
kubectl apply -f kubernetes-dashboard.yaml
-- 查看 Deployment 的运行状态
kubectl get deployment -n kuberenetes-dashboard
-- 查看 Pod 的运行状态
kubectl get pods -n kuberenetes-dashboard
-- 通过代理的方式访问 dashboard
kubectl proxy

这里是使用 API Server 的形式访问的 dashboard ,具体的地址为:http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
我们可以使用下面的 powershell 命令打印出 token,然后登录到 dashboard 中查看整个集群的信息
$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]
kubectl config set-credentials docker-for-desktop --token="${TOKEN}"
echo $TOKEN

当然,这里访问 dashboard 的方式不是最优解,后续每一次访问时,都需要执行 kubectl proxy,正常的做法应该是通过 ingress 进行代理访问。由于 K8s 我也是刚刚入门,对于 ingress 的使用没有过多的了解,所以这里留下一个 topic,后续再进行补充
在 Docker Desktop 中启用 K8s 服务的更多相关文章
- 如何在ubuntu中启用SSH服务
		
如何在ubuntu14.04 中启用SSH服务 开篇科普: SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为 ...
 - 在Rancher中修改K8S服务参数的万金油法则
		
作者简介 王海龙,Rancher中国社区技术经理,负责Rancher中国技术社区的维护和运营.拥有7年的云计算领域经验,经历了OpenStack到Kubernetes的技术变革,无论底层操作系统Lin ...
 - 腾讯云 TKE Everywhere 特性发布,用户可在自有基础设施中托管 K8s 服务
		
作者 孔令飞,腾讯云资深工程师,拥有大规模 Kubernetes 集群.微服务的研发和架构经验,目前专注于云原生混合云领域的基础架构开发. 朱翔,腾讯云容器服务高级产品经理,目前负责云原生混合云产品方 ...
 - ubuntu中启用ssh服务
		
ssh程序分为有客户端程序openssh-client和服务端程序openssh-server.如果需要ssh登陆到别的电脑,需要安装openssh-client,该程序ubuntu是默认安装的.而如 ...
 - 在ubuntu中启用ftp服务
		
Vsftpd vsftpd,ftp服务端,本文转自http://wiki.ubuntu.org.cn/Vsftpd 目录 [隐藏] 1 stand alone和super daemon 2 安装 3 ...
 - Ubuntu中启用ssh服务---转载
		
ssh程序分为有客户端程序openssh-client和服务端程序openssh-server.如果需要ssh登陆到别的电脑,需要安装openssh-client,该程序Ubuntu是默认安装的.而如 ...
 - IIS7.5 中启用rest服务,Delete、Put
		
WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准.利用这个协议用户可以通过Web进行远程的基本文件操作,如拷贝.移动.删除等.在I ...
 - docker 容器中部署 Go 服务时,请求 https 文件时抛错
		
错误提示: Get https://res.ddkt365.com/ddktRes/imageRes/wx_headimg/0f1d9e55913c22bcaf7cca9b38048d29.jpeg: ...
 - Docker Desktop 可以直接启用Kubernetes 1.25 了
		
作为目前事实上的容器编排系统标准,K8s 无疑是现代云原生应用的基石,很多同学入门可能直接就被卡到第一关,从哪去弄个 K8s 的环境, Docker Desktop 自带了Kubernetes 服务, ...
 
随机推荐
- Java volatile 关键字底层实现原理解析
			
本文转载自Java volatile 关键字底层实现原理解析 导语 在Java多线程并发编程中,volatile关键词扮演着重要角色,它是轻量级的synchronized,在多处理器开发中保证了共享变 ...
 - Project facet Java version 1.7 is not supported.解决方法
			
最近遇到这个问题,在网上查到的解决方案基本都是下面几个: 1.右击项目,properties,project facets,改动java的version为1.7. 2.window,propertie ...
 - Vue学习笔记-Vue.js-2.X 学习(七)===>脚手架Vue-CLI(路由Router)
			
脚手架Vue-CLI(路由Router) 一 按装(通过新创建脚手架按装),如果在原来的脚手架上按装直接进图型化界面vue ui的插件按装. 二 使用(上面按装下面步骤自动会生成) 第一步:导入路由对 ...
 - vue高级
			
1.nrm nrm提供了一些最常用的npm包镜像地址,可以快速切换服务器地址下载资源.它只是提供了地址,并不是装包工具.如果没有安装npm,需要安装node,然后直接安装即可.node下载链接:htt ...
 - 逆向基础 C++ Primer Plus 第二章 开始学习C++
			
C++ Primer Plus 第二章 开始学习C++ 知识点梳理 本章从一个简单的C++例子出发,主要介绍了创建C++程序的步骤,以及其所包含的预处理器编译指令.函数头.编译指令.函数体.注释等组成 ...
 - docker方式部署禅道
			
一.概述 使用docker方式部署禅道简单,快速,不容易出错.比起编译安装要方便很多. 二.部署 环境说明 操作系统:centos 7.6 ip地址:10.212.82.65 docker版本:19. ...
 - 使用lua-nginx模块实现请求解析与调度
			
系统版本及需求: OS:CentOS 7.7.1908 OpenResty:1.15.8.2 目录 描述 安装配置 安装openresty 使用示例 HTTP请求复制 HTTP报文解析 总结 描述 l ...
 - 剑指 Offer 14- II. 剪绳子 II + 贪心 + 数论 + 快速幂
			
剑指 Offer 14- II. 剪绳子 II 题目链接 因为有取模的操作,动态规划中max不能用了,我们观察:正整数从1开始,但是1不能拆分成两个正整数之和,所以不能当输入. 2只能拆成 1+1,所 ...
 - JVM 中的异常
			
StackOverflowError 在 JVM 的栈中,如果线程要创建的栈帧大小大于栈容量的大小时,就会抛出 java.lang.StackOverflowError.比如下面的代码 public ...
 - Celery:小试牛刀
			
Celery是如何工作的? Celery 由于 其分布式体系结构,在某种程度上可能难以理解.下图是典型Django-Celery设置的高级示意图(FROM O'REILLY): 当请求到达时,您可以在 ...