使用 Kind 运行本地Kubernetes集群
Contents
使用 Kind 运行本地Kubernetes集群
Kind 是 Kubernetes In Docker 的缩写,顾名思义,就是把 Kubernetes 运行在 Docker容器里面。
特点
创建、启动k8s集群非常快速,资源消耗较低。
支持创建多节点的k8s集群,包括高可用模式。
kind 支持 Linux, macOS and Windows
它是CNCF认证的k8s集群安装方式之一
可以做什么
-
快速创建一个或多个 Kubernetes 集群(几分钟);
-
支持 HA master 部署高可用的 Kubernetes 集群;
-
支持从源码构建并部署一个 Kubernetes 集群;
-
可以快速低成本体验一个最新的 Kubernetes 集群,并支持 Kubernetes 的绝大部分功能;
-
支持本地离线运行一个多节点集群。
优势
-
最小的安装依赖,仅需要安装 Docker 即可
-
使用快速简单,使用 Kind CLI 工具即可快速创建集群
-
使用容器来模似 Kubernetes 节点
-
内部使用 kubeadm 的官方主流部署工具
-
使用了 Containerd
-
通过了 CNCF 官方的 K8s conformance 测试
工作原理
Kind 使用容器来模拟每一个 Kubernetes 节点,并在容器里面运行 Systemd 。 容器里的 Systemd 托管了 Kubelet 和 Containerd ,然后容器内部的 Kubelet 把其它 Kubernetes 组件: Kube-Apiserver 、 Etcd 、 CNI 等等组件运行起来。
Kind 内部使用了 Kubeadm 这个工具来做集群的部署,包括高可用集群也是借助 Kubeadm 提供的特性来完成的。在高用集群下还会额外部署了一个 Nginx 来提供负载均衡 VIP。
Kind 的镜像分为两个,一个 node 镜像,一个 base 镜像。
base 镜像使用 Ubuntu:19.04 作为基础镜像。
创建节点源代码: https://github.com/kubernetes-sigs/kind/blob/master/pkg/build/node/node.go
Kind vs Minikube
- Kind 不是打包一个虚拟化镜像,而是直接将 K8S 组件运行在 Docker。
- 不需要运行 GuestOS 占用资源更低。
- 不基于虚拟化技术,可以在 VM 中使用。
- 文件更小,更利于移植。
- 支持多节点 K8S 集群和 HA
- Kind 支持多角色的节点部署,可以通过配置文件控制你需要几个 Master 节点,几个 Worker 节点,以更好的模拟生产中的实际环境。
另一个本地运行kubernetes集群工具:Mac使用Colima运行Docker
安装
|
|
or 下载二进制文件:
|
|
使用
使用说明
|
|
常用选项的含义:
-
build:用来从 Kubernetes 源代码构建一个新的镜像。
-
create:创建一个 Kubernetes 集群。
-
delete:删除一个 Kubernetes 集群。
-
get:可用来查看当前集群、节点信息以及 Kubectl 配置文件的地址。
-
load:从宿主机向 Kubernetes 节点内导入镜像。
快速的创建k8s集群
|
|
可以通过配置文件创建k8s集群,同时可在配置文件中配置镜像源,
让新建的k8s集群从私有http仓库加载镜像,示例如下:
|
|