提示
本文是在没有K8S的基础上去了解和使用K3S,很多点都不会讲到,只是通过自己用到的demo来去理解K3S、K3D及K8S。我会将一些比较好的链接贴在恰当处,方便后续深入了解和使用。
什么是K3S
官网:https://k3s.io/
指南:https://rancher.com/docs/k3s/latest/en/
中文版指南:https://docs.rancher.cn/docs/k3s/_index/
K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化,易于安装,全部在不到100MB的二进制文件中;非常适合
- Edge
- IoT
- CI
- Development (用的就是这个)
- ARM
- Embedding K8s
- Situations where a PhD in K8s clusterology is infeasible
可以理解为是K8SLite版,单词比K8S一半还少,所以叫K3S
什么是K3D
官网:https://k3d.io/v5.3.0/
指南:https://k3d.io/v5.3.0/usage/configfile/
k3d 是一个轻量级的包装器,用于在 docker 中运行k3s(Rancher Lab 的最小 Kubernetes 发行版)。
k3d 使得在 docker 中创建单节点和多节点k3s集群变得非常容易,例如在 Kubernetes 上进行本地开发。
对于我们研发人员,我们不希望花太多精力和时间去搭建和维护K8S,那么我们使用K3D就能通过类似docker的方式来快速的构建K3S集群,所以两者加起来就相当于一个K8S了。
安装
我的是mac,直接使用brew安装,K3D官网首页有各种系统的安装方式
brew install k3d
附:brew切换国内镜像
如下代表安装成功
NodePort和Ingress的示例
到这里可能还是一脸懵逼的,因为涉及的点太多,也不知道从何下手,那就直接用一个demo来学习:使用集群部署一个可访问的服务,并在宿主机可以访问。
1、首先我们要知道使用k3d创建集群后,宿主机、k3d、k3s是怎样的关系,如下图
就把k3d理解为“docker”
2、使用k3d创建单节点集群架构
为了方便管理,这里使用yaml文件来创建集群,内容如下:
创建一个 server节点为1,agents节点为2的集群,且集群的30080端口映射宿主机的8087端口
附:非常详细的说明
接着我们使用命令k3d cluster create --config cluster.yaml
等待执行完成即可。
我们可以使用k3d cluster list
来查看集群的状态,也可以通过kubectl get all --all-namespaces
来查看k3s集群中已经部署了资源
3、区别
nodeport和ingress分别属于k8s中供外部访问的两种方式,nodeport又是service资源的一种类型,其中service分为以下几种类型:
- ClusterIp:默认类型,自动分配一个仅Cluster内部可以访问的虚拟IP
- NodePort:在ClusterlP基础上为Service在每台机器上绑定一个端口,这样就可以通过:NodePort 来访问该服务
- LoadBalancer:在NodePort的基础上