如何在本地快速启动一个k8s集群?小技巧,学到了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在本地快速启动一个k8s集群?小技巧,学到了相关的知识,希望对你有一定的参考价值。

参考技术A 最近在阅读《每天5分钟玩转Kubernetes》 这本书,个人感觉是一本不错的 K8S 的入门书籍。

我们在刚开始学习一项技术的时候,不论是通过官方文档、书籍,亦或是视频的形式,如果仅仅是去看,而不去练习实践的话,那么是很难将其真正应用起来的。

然而当我开始准备实践的时候,发现要想在本地将 K8S 跑起来,并不像我们想象的那么容易。存在以下几点「问题」:

那么有没有什么方案可以更优雅更轻量更快速搭建一个 K8S 集群呢?答案就是 k3d。

其实有很多种方式可以在本地运行 k8s,比如:

当然了,如果只是学习 k8s 的使用,那么以上方案均可以使用。

k3s 包括以下一些组件:

k3s 是一种模块化的发行版,可以很方便的替换上面的组件。

在 Mac 下,使用 Homebrew 可以很方便的安装 k3d: brew install k3d。

顺手安装一下 kubectl 和 kubecm:

我们通过 k3d 的命令可以轻易的在本地启动一个或 N 个 k8s 集群。

首先我们尝试创建一个 1主2从 的集群:

初次创建可能会比较慢,因为会从 Docker 仓库拉取最新的 rancher/k3s 镜像。

当出现下面的日志时,k8s 集群就创建成功了

此时,我们按照日志提示,运行 kubectl cluster-info 查看下当前集群的信息:

运行 kubectl get nodes 查看下当前集群的节点情况:

注意,这里的“节点”其实是本机 Docker 运行的容器,通过 docker ps 查看下当前本机运行的容器吧

解释一下我们创建集群时配置的端口映射:

现在我们集群和主机的网络通信是这样子的:

创建一个 nginx 的 Deployment

创建一个 Service 通过 ClusterIP 的方式暴露服务

创建一个 Ingress,k3s 默认安装的是 traefik 1.x 作为 Ingress Controller

此时,打开浏览器,访问 http://localhost:8080/ 就可以看到熟悉的 nginx 默认页。

这是不是太酷了~

当使用 Helm Chart 安装 Rancher 时,可能会出现如下错误日志:

要创建一个 k8s 版本号为 v1.19.8-k3s1 的 k8s 集群,可以在创建集群的命令后面加 --image 参数,指定版本号:k3d cluster create first-cluster xxxxx --image rancher/k3s:v1.19.8-k3s1

还记得在第二步顺手安装的 kubecm 吗?

当我们在本地使用 k3d 创建了多个集群之后,我们可以通过 kubecm 快速切换 context。

以上是关于如何在本地快速启动一个k8s集群?小技巧,学到了的主要内容,如果未能解决你的问题,请参考以下文章

云原生:windows 10家庭版使用kind启动本地k8s测试集群

K8S集群内Pod如何与本地网络打通实现debug

如何在k8s集群里快速运行一个镜像?

花了快一天,才搞出来的一个client-go的demo

k8s本地构建后台开发环境

Kubernetes二进制单节点集群部署