kind 是一个非常方便的用于创建 kubernetes 测试集群的工具,可以基于 docker 环境快速构件集群环境,方便进行学习测试!
可参考:简易最小化虚拟机安装配置(CentOS-7-Minimal)
kind 官网下载二进制包进行安装~
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.14.0/kind-linux-amd64
chmod +x ./kind
mv ./kind /usr/local/bin/kind
基础环境,kind 是以 docker 为底座,以 容器 为 node 的理念所设计开发的快速构建测试集群环境的工具。
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all && yum makecache fast
yum -y install docker-ce
systemctl start docker
systemctl enable docker
也可参考:Docker 学习笔记-01:安装
Kubernetes 命令行工具 kubectl 允许您对 Kubernetes 集群运行命令。您可以使用 kubectl 部署应用程序、检查和管理集群资源以及查看日志。有关更多信息,包括 kubectl 操作的完整列表,请参阅 kubectl 参考文档。
curl -LO https://dl.k8s.io/release/v1.21.1/bin/linux/amd64/kubectl
chmod +x ./kubectl
mv ./kubectl /usr/local/bin/kubectl
Kubernates 中的包管理器,可以用于统一管理 Kubernates 中的相关资源和软件包
curl -LO https://get.helm.sh/helm-v3.7.2-linux-amd64.tar.gz
tar -C /tmp/ -zxvf helm-v3.7.2-linux-amd64.tar.gz
mv /tmp/linux-amd64/helm /usr/local/bin/helm
chmod +x /usr/local/bin/helm
以安装 Kubernates V1.21.1 为例,介绍如何通过 kind 进行集群构建和使用
kind 创建集群的时候可以指定使用配置文件,这里贴出官方提供的一份配置文件:
# this config file contains all config fields with comments
# NOTE: this is not a particularly useful config file
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
# patch the generated kubeadm config with some extra settings
kubeadmConfigPatches:
- |
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
evictionHard:
nodefs.available: "0%"
# patch it further using a JSON 6902 patch
kubeadmConfigPatchesJSON6902:
- group: kubeadm.k8s.io
version: v1beta2
kind: ClusterConfiguration
patch: |
- op: add
path: /apiServer/certSANs/-
value: my-hostname
# 1 control plane node and 3 workers
nodes:
# the control plane node config
- role: control-plane
# the three workers
- role: worker
- role: worker
- role: worker
在这份文件中,配置了一个(1控制面板3工作节点的集群),更多配置详细见文档:kind 配置
基于配置文件,直接创建一个多节点集群(V1.21.1)
[root@evm-docker yaml]# kind create cluster --name multi-node --image kindest/node:v1.21.1 --config kind-example-config.yaml
Creating cluster "multi-node" ...
✓ Ensuring node image (kindest/node:v1.21.1)
✓ Preparing nodes
✓ Writing configuration
✓ Starting control-plane ️
✓ Installing CNI
✓ Installing StorageClass
✓ Joining worker nodes
Set kubectl context to "kind-multi-node"
You can now use your cluster with:
kubectl cluster-info --context kind-multi-node
Have a nice day!
执行命名后可以看到,kind 在创建集群时,会依次进行:
接下来,使用 kubectl 查看集群节点信息,使用 docker 查看容器(即集群节点)信息
[root@evm-docker yaml]# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
multi-node-control-plane Ready control-plane,master 2m10s v1.21.1 172.18.0.6 <none> Ubuntu 21.04 3.10.0-1160.66.1.el7.x86_64 containerd://1.5.2
multi-node-worker Ready <none> 92s v1.21.1 172.18.0.7 <none> Ubuntu 21.04 3.10.0-1160.66.1.el7.x86_64 containerd://1.5.2
multi-node-worker2 Ready <none> 92s v1.21.1 172.18.0.9 <none> Ubuntu 21.04 3.10.0-1160.66.1.el7.x86_64 containerd://1.5.2
multi-node-worker3 Ready <none> 92s v1.21.1 172.18.0.8 <none> Ubuntu 21.04 3.10.0-1160.66.1.el7.x86_64 containerd://1.5.2
[root@evm-docker yaml]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a78d35d1b926 kindest/node:v1.21.1 "/usr/local/bin/entr…" 2 minutes ago Up 2 minutes 127.0.0.1:46675->6443/tcp multi-node-control-plane
e18d33e18354 kindest/node:v1.21.1 "/usr/local/bin/entr…" 2 minutes ago Up 2 minutes multi-node-worker2
f6e7ec59ef2a kindest/node:v1.21.1 "/usr/local/bin/entr…" 2 minutes ago Up 2 minutes multi-node-worker
5e5b4b589dd1 kindest/node:v1.21.1 "/usr/local/bin/entr…" 2 minutes ago Up 2 minutes multi-node-worker3
由此可以看出其对应关系:Docker 容器 = Kubernates cluster 节点
通过上述安装后,一个基础的集群已经构建完成,可以进行使用了,其他相关配置参考 官网文档 进行配置即可!