博客
关于我
在 Docker Desktop 中启用 K8s 服务
阅读量:412 次
发布时间:2019-03-06

本文共 2615 字,大约阅读时间需要 8 分钟。

Overview

作为目前事实上的容器编排系统标准,K8s 无疑是现代应用的基石,很多同学入门可能直接就被卡到第一关,从哪去弄个 K8s 的环境

自己搭吧,要求的硬件资源太高,基本上搭建一个 K8s 集群就劝退了很多的人,因此这里最简单的方式就是直接使用 Windows or Mac 上的 Docker Desktop 内置的 K8s 来学习

然而,由于某些网络原因,如果你直接在 Dokcer 中启用这个功能的话,基本上是不可能成功开启的,因此,本篇文章是基于 进行的操作说明,希望可以帮你顺利的启用这一功能

Step by Step

首先,你需要在电脑上安装好 Docker Desktop,这个过程就不赘述了,一路 Next 即可。如果可以的话,推荐使用 WSL 作为宿主,后面运行 Docker 时的性能会更好些。最新版的软件在安装时也是会默认使用 WSL 作为宿主的,这里我使用的是 3.3.1 版本的 Docker,内置的 k8s 版本为 v1.19.7

PS:安装 Docker 之前需要你在 BIOS 中开启虚拟化,同时基于你的宿主程序的选择,你还需要执行如下的操作

  1. 使用 WSL2 作为宿主:在“控制面板\所有控制面板项\程序和功能”中选择“启用或者关闭 Windows 功能” 勾选上适用于 Linux 的 Windows 子系统,然后在 Microsoft 商城中下载一个 Linux 的发行版本
  2. 使用 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 下 这个项目,找到 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-- 通过代理的方式访问 dashboardkubectl proxy

这里是使用 API Server 的形式访问的 dashboard ,具体的地址为:

我们可以使用下面的 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,后续再进行补充

转载地址:http://wezuz.baihongyu.com/

你可能感兴趣的文章
终于有人把 HTTPS 原理讲清楚了!
查看>>
IntelliJ IDEA 高级调试技巧,用得非常爽!
查看>>
别乱提交代码了,看下大厂 Git 提交规范是怎么做的!
查看>>
在滴滴和头条干了 2 年后端开发,太真实…
查看>>
Dubbo 的心跳设计,值得学习!
查看>>
送给你 12 个 Git 使用技巧!
查看>>
国人开源了一款超好用的 Redis 客户端,真香!!
查看>>
吊打 Tomcat ,Undertow 性能很炸!!
查看>>
盘点 100 个最受欢迎的 Java 库!谁拔得头筹?
查看>>
牛逼哄哄的零拷贝是什么?
查看>>
使用 Redis 实现一个轻量级的搜索引擎,牛逼!
查看>>
深入理解 CAS 算法原理
查看>>
你还在用分页?试试 MyBatis 流式查询,真心强大!
查看>>
配置中心新贵:Nacos,阿里开源,真香!!
查看>>
前后端分离必备的接口规范,十分接地气!
查看>>
如何写出让同事无法维护的代码?
查看>>
彻底干掉恶心的 SQL 注入漏洞, 一网打尽!
查看>>
查看 JVM 内存的几个工具,建议收藏!
查看>>
每天数十亿次请求的应用经验分享,值得参考!
查看>>