查看原文
其他

试了试Docker桌面应用自带的K8s集群,一个字“简单”

KevinYan11 网管叨bi叨 2022-09-08

前言

之前给大家介绍过几种在笔记本电脑上安装Kubernetes集群的工具,虽然安装起来不太繁琐但是多多少少还是需要花一些时间的,对于不想瞎倒腾,就想快速安装个本地集群开始学习和测试的同学,推荐你们试一试Docker桌面应用里自带的Kubernetes集群。其实我也是之前用Minikube安装的集群莫名其妙坏掉启动不起来后,偶然发现Docker桌面应用里内嵌了一个Kubernetes集群,试了试效果感觉还是挺不错的。下面我带大家简单过一下启用集群方法,全程几乎就是点点点,也不需要做啥。

启用Kubernetes

也不知道是什么时候开始(反正老早就有了,我这个是前年装的...一直没升级过),Docker的桌面应用除了提供Docker CLI集成外还内嵌了一个Kubernetes集群,默认是不开启的,启用后这个单点的Kubernetes集群会运行在本地的Docker实例中。

要启用这个集群只需要打开Docker应用的首选项(Preferences)界面,选择Kubernetes选项卡。

开启内嵌的Kubernetes集群

点击应用并重启,就可以去刷小视频了,再回来集群就安装好了。

除了启用Kubernetes集群外,如果电脑上之前没有安装过 kubectl (客户端命令工具)的话还会为你自动安装上kubectl,并配置连接到刚才启动的本地集群上。如果是本地之前安装过kubectl 和 存在其他Kubernetes集群,想要连接到Docker桌面应用内嵌的集群则需要切换一下 kubectl 的上下文。

$ kubectl config get-contexts
$ kubectl config use-context docker-desktop

使用Kubernetes

集群启用完成后,在打开Docker桌面应用的选项卡在 UI 上会有些微的变化,证明Kubernetes集群已经成功启动起来了。

启用Kubernetes后的UI变化

让我们随便运行几个 kubctl 命令,试试效果。

➜  ~ kubectl get node                     
NAME             STATUS   ROLES                  AGE   VERSION
docker-desktop   Ready    control-plane,master   13d   v1.21.1

可以看到我们现在使用的是一个单节点,名字叫docker-desktop的集群。

使用Docker桌面应用自带的Kubernetes集群还有一点方便的地方就是,集群外部通过 127.0.0.1 就能访问集群内部,也就是我们通过NodePort类型的Service向集群外暴露的资源,通过 127.0.0.1:port 的形式就能访问到。

我们随便拿一个之前我们搭建MySQL开发环境的例子测试一下。搭建MySQL需要的YAML定义文件和步骤我就不再重复说了,忘记的同学之前访问上一篇文章:利用Kubernetes搭建便携式开发环境之MySQL和Redis

## 切到定义文件在的目录
kubectl apply -f mysql-configmap.yaml

kubectl apply -f deployment-service.yaml

--------------------------------------------------------
## 可以看到下面的Pod和Service资源
kubectl get pod

NAME                    READY   STATUS    RESTARTS   AGE
mysql-cc4479465-gwdj7   1/1     Running   0          13d
--------------------------------------------------------
kubectl get svc mysql
NAME    TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
mysql   NodePort   10.104.123.151   <none>        3306:30306/TCP   13d

在电脑上只要通过127.0.0.1:30306就能访问到我们刚刚安装的MySQL啦,持久化之类的事情我也试过,只要我们不主动把MySQL这个Pod删掉数据就会一直在。

通过Docker桌面应用在电脑上安装Kubernetes集群可以说是把我们学习K8s的起步依赖降到了最低,让我们能快速跳过工具安装步骤开始正题的学习,想学K8s的同学们赶紧动手试试吧。

下一期 Kubernetes 的文章我继续分享怎么在Kubernetes上搭建MongoDB开发环境方面的内容,有兴趣还没关注的同学赶紧点个关注吧。

往期文章推荐

Go语言类

Go语言的IO库那么多,我该怎么选?

Go指针的使用限制和突破之路

图文结合,白话Go的垃圾回收原理

Kubernetes 类

gRPC的平滑关闭和在Kubernetes上的服务摘流方案总结

用Kubernetes搭建Etcd集群和WebUI

学练结合,快速掌握Kubernetes Service


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存