使用 kind 快速搭建 kubernetes 环境
<h1 id="使用-kind-快速搭建-kubernetes-环境">使用 kind 快速搭建 Kubernetes 环境</h1><h2 id="intro">Intro</h2>
<p>kind(Kubernetes IN Docker) 是一个基于 docker 构建 Kubernetes 集群的工具,非常适合用来在本地搭建基于 Kubernetes 的开发/测试环境。</p>
<p>想写一篇 kind 的文章很久了,但是之前的 kind 都会有一个问题,每次系统重启或 docker daemon 重启的时候会导致原来的创建的集群不可用,需要重新创建才可以,从 0.8 版本开始,kind 不再需要重新创建集群了,基于这个集群的资源部署也会自动重启,无需再手动重新部署了,具体可以参考 Issue https://github.com/kubernetes-sigs/kind/issues/148,就在前几天 kind 0.8 版本发布了于是打算写一篇介绍 kind 的文章</p>
<h2 id="install">Install</h2>
<p>Kind 的安装不包括 kubectl,你需要独立安装 kubectl 来通过命令行来操作 kubernetes 集群,kubectl 的安装可以参考: https://kubernetes.io/docs/tasks/tools/install-kubectl/</p>
<p>通过 https://github.com/kubernetes-sigs/kind/releases/latest 获取最新的 release,根据自己的系统类型选择相应的系统 release,下载 release 之后重命名为 kind(Windows 系统 release 重命名为 kind.exe),然后将其放在某一个目录下,并要确保这个目录在系统 PATH 中以方便的使用,可以放在 <code>usr/bin</code> 目录下(默认已经在系统 PATH 中),linux 系统中可能需要配置文件权限</p>
<pre><code class="language-bash">sudo chmod +x kind
</code></pre>
<h2 id="操作-kuberneters-集群">操作 Kuberneters 集群</h2>
<p>使用 kind 创建 Kubernetes 集群非常的方便,只需要一行命令即可</p>
<pre><code class="language-bash">kind create cluster
</code></pre>
<p>删除集群</p>
<pre><code class="language-bash">kind delete cluster
</code></pre>
<p>默认集群名称是 "kind",如果要创建多个或者指定集群名称,可以指定 name 参数:</p>
<pre><code class="language-bash">kind create cluster --name=k8s-cluster1
</code></pre>
<p>删除集群</p>
<pre><code class="language-bash">kind delete cluster --name=k8s-cluster1
</code></pre>
<p>创建集群成功之后,就可以使用 kubectl 来操作 k8s 集群了</p>
<p>获取 k8s 集群所有资源示例:</p>
<p><img src="https://img2020.cnblogs.com/blog/489462/202005/489462-20200505162147932-17409977.png" alt="" loading="lazy"></p>
<p>既然说是基于 docker 的,那么我们再来看下 docker 资源,来验证一下是否真的是基于 docker 的</p>
<pre><code class="language-bash">docker ps
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/489462/202005/489462-20200505162428150-1054782625.png" alt="" loading="lazy"></p>
<p>可以看到 docker 里有一个 container,而 kind 创建的集群就是基于这个 container 的,如果你直接删掉了这个 container,通过 kind 创建的 k8s 集群也会有问题,</p>
<p>再来看一下 network,运行 <code>docker network ls</code></p>
<p><img src="https://img2020.cnblogs.com/blog/489462/202005/489462-20200505162726276-1374069580.png" alt="" loading="lazy"></p>
<p>可以看到有一个名称为 kind 的 network</p>
<p>我们可以进一步探究 kind-control-plane(就是上面的 docker container)</p>
<p>通过 <code>docker exec kind-control-plane crictl ps</code> 获取这个容器内部的运行容器列表,这个容器内部通过 crictl 来操作容器,可以参考 https://github.com/kubernetes-sigs/cri-tools</p>
<p><img src="https://img2020.cnblogs.com/blog/489462/202005/489462-20200505172457071-1611003789.png" alt="" loading="lazy"></p>
<p><img src="https://img2020.cnblogs.com/blog/489462/202005/489462-20200505172910079-1805266716.png" alt="" loading="lazy"></p>
<h2 id="more">More</h2>
<p>除了搭建开发测试环境之外,kind 也支持创建高可用的 kuberneters 集群,具体可以参考官方文档</p>
<p>kind 创建集群成功之后,就可以向 kubernetes 集群部署资源了,开始你的 Kubernetes 之旅吧~</p>
<h2 id="reference">Reference</h2>
<ul>
<li>https://github.com/kubernetes-sigs/kind</li>
<li>https://kind.sigs.k8s.io/docs/user/quick-start/</li>
<li>https://kind.sigs.k8s.io/docs/contributing/1.0-roadmap</li>
<li>https://github.com/kubernetes-sigs/kind/issues/148</li>
<li>https://github.com/kubernetes-sigs/cri-tools</li>
</ul>
</div>
<div id="MySignature" role="contentinfo">
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。<br><br>
来源:https://www.cnblogs.com/weihanli/p/12831225.html 回复如下:
感谢楼主的分享!
之前一直想在本机搭建 K8s 环境,但是 minikube 和 kubeadm 都太重了,kind 确实是个不错的选择。之前 0.8 版本之前的那些问题确实挺困扰的,现在 0.8 解决了重启问题,确实方便多了。
Kind 的安装不包括 kubectl,你需要独立安装 kubectl
这点提醒得很到位!我第一次装 kind 的时候就忘了装 kubectl,后来才发现命令都用不了 [表情]
有个小问题想请教一下:kind 创建的集群默认是单节点的,如果想测试多节点集群的话,应该怎么配置呢?看到官方说支持高可用集群,但是不太清楚具体怎么操作。
另外,如果电脑配置一般的话,创建集群会不会很卡?我看 docker 里跑的那个 container 资源占用应该不小吧。
kind 官方文档 这个链接也可以给新手看看,入门挺有帮助的。
期待楼主更多关于 K8s 的分享![表情] 我也尝试过用 kind 搭建 Kubernetes,体验很棒! 针对多节点集群的配置,kind 确实支持通过自定义配置文件来实现。你可以创建一个 kind-config.yaml 文件,在里面指定多个控制平面节点和 worker 节点,具体格式可以参考官方文档的示例,这样就能模拟高可用环境了。
至于性能方面,如果电脑配置一般,运行多节点集群可能会有点压力,因为 Docker 容器会消耗较多资源。建议初次测试时先使用单节点,或者调整 Docker 的资源限制来优化。kind 本身比较轻量,但合理分配内存和 CPU 会更流畅。
大家如果有其他使用技巧,欢迎继续交流!
頁:
[1]