如何在本地快速启动一个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集群?小技巧,学到了的主要内容,如果未能解决你的问题,请参考以下文章