Z.S.K.'s Records

Kubernetes学习(k3d实践)

之前进行了kind实践,可以很方便地快速组件在k8s中的验证,今天发现一款由rancher开源的相同工具, k3d,也是非常的牛逼,照样也实践一把

k3d的底层使用的是rancher开发的k3s, 一款轻量级的k8s发行版,普遍用于端边协同领域

k3d在快速开发中,因此有时官方的文档更新的不太及时,就容易出现看文档无法得到想要的结果,好在,一切都是那么方便

docker做为先决条件,是需要提前安装好的

同样,需要安装k3d 的client,这里不再详说,可参考git k3d

这里要注意的是,最好使用新版本的k3d, k3d版本之间的差异还是比较大的,以下都是以v3.3为例

k3d同样能够实现以node做为虚拟node进行k8s的模拟

想要创建一个集群, 最简单的1master+1node

1
k3d cluster create demo

如果需要指定多节点的话,则

1
k3d cluster create demo --servers 3 --agents 3

demo为集群名,因为k3d支持创建多个集群

–servers 为控制面节点

–agents为node节点

这里一个3master + 3node的k8s集群就创建出来了,当然,k3d也跟Kind一样,除了cli方式之外也支持配置文件指定参数.

可以使用以下命令进行list

1
k3d cluster list

在创建完集群之后,会自动地生成config文件,这个跟正常使用k8s是一样的,因此可以使用kubectl命令

查看一下pod情况

1
kubectl get pod --all-namespaces

可以看到几个比较常用见的组件

比如:

  • local-path-provisioner: 这个提供本地存储pv动态创建
  • metrics-server: 用于pod metrics的收集
  • traefik: 这个用于请求转发
  • coredns: 集群域名解析

从上面的图可以看到,其它的如Kube-proxy, kube-scheduler是没有,这个可以理解,用k3d创建出来的集群不管多少个agent,本质上还是一台实体机

经过一番实践后,体验还是比较不错的,但还是有点欠缺,比如,如果使用了hostpath时,因为是虚拟出来的node节点,是没有hostpath的,那要如何使用呢, 这个翻了很多的文档也没找到说明,最后还是在issue中找到答案,方法如下

使用host path时:

1
k3d cluster create deom -v /data/middleware-data:/data/middleware-data

需要在创建集群里将hostpath使用到的目录进行挂载即可

另外如果要使用nodeport,同样也是如此,需要在创建集群时就进行操作

k3d跟kind相比,感觉还是k3d体验好一些,kind之前用的时候出现过几次用kind创建出来的集群直接就不能用,kubectl config不起作用

k3d倒没有出现这种情况, 但是就是文档写的不怎么样,比如要从私有仓库中拉取镜像,这个就麻烦一点,但官方文档写的也不是很好,需要自己琢磨

不过,不得不承认,k3d确实是个很实用的效率工具,对于需要快速地创建k8s集群进行验证,用完即焚的你可能,本人也打算在团队中推广大家使用起来

参考文章:

转载请注明原作者: 周淑科(https://izsk.me)

 wechat
Scan Me To Read on Phone
I know you won't do this,but what if you did?