以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!
一、Kind 简介
Kind 是一个在 Docker 容器中运行 Kubernetes 集群的工具,主要是为了测试 Kubernetes 本身而设计的,但也可以用于本地开发或 CI。
Kind 项目地址:https://github.com/kubernetes-sigs/kind
Kind 官网地址:kind
二、Kind 下载、安装
# AMD架构
wget -O /usr/bin/kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x /usr/bin/kind
# ARM架构
wget -O /usr/bin/kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-arm64
chmod +x /usr/bin/kind
# 查看版本信息
kind version
三、Kind 部署 Kubernetes 集群
1、准备工作
# 关闭防火墙
systemctl disable --now firewalld
# 关闭 selinxu
setenforce 0
sed -i ’s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
# 清空 iptables 规则
iptables -F && iptables -t nat -F
# 禁用 swap 分区
swapoff -a
sed -i '/swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 升级内核版本
🔔 部分低版本内核会出现报错 cgroup namespaces aren't enabled in the kernel: unknown
yum update -y
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
yum install -y --enablerepo=elrepo-kernel kernel-ml # 安装新内核(例如,最新的稳定版本是 kernel-ml)
grub2-mkconfig -o /boot/grub2/grub.cfg # 更新 GRUB 引导菜单
grub2-set-default 0 # 修改默认引导顺序,使新内核成为默认引导
cat /proc/cmdline # 重启服务器后查看是否生效
# 配置主机间 SSH 免密(详细过程略)
# 安装 docker、kubectl(详细过程略)
🔔 docker 需要安装 20 以上版本,否则会出现报错 unknown flag: --cgroupns
2、部署集群
- 部署单节点集群
kind create cluster
🔔 可选配置项
# --image kindest/node:v1.xx.xx # 指定集群版本
# --name xxx # 指定集群上下文名称(不指定则默认为 kind)
# --wait 5s / 5m # 指定安装超时时间
# --retain # 保留日志,并通过 kind export logs 导出
# --config xx.yaml # 创建多节点集群,需要指定 yaml 文件
- 部署多节点集群
kind create cluster --config config.yaml
# config.yaml 配置示例(1 Master + 2 Node)
apiVersion: kind.x-k8s.io/v1alpha4
kind: Cluster
nodes:
- role: control-plane
image: kindest/node:v1.27.3
- role: worker
image: kindest/node:v1.27.3
- role: worker
image: kindest/node:v1.27.3
3、实测结果
- Kind 部署 Kubernetes 集群非常简单、方便
- 可以提前下载 Kind 集群镜像,方便离线部署
四、Kind 常用命令
kind --help
kind creates and manages local Kubernetes clusters using Docker container 'nodes'
Usage:
kind [command]
Available Commands:
build Build one of [node-image]
completion Output shell completion code for the specified shell (bash, zsh or fish)
create Creates one of [cluster]
delete Deletes one of [cluster]
export Exports one of [kubeconfig, logs]
get Gets one of [clusters, nodes, kubeconfig]
help Help about any command
load Loads images into nodes
version Prints the kind CLI version
Flags:
-h, --help help for kind
--loglevel string DEPRECATED: see -v instead
-q, --quiet silence all stderr output
-v, --verbosity int32 info log verbosity, higher value produces more output
--version version for kind
Use "kind [command] --help" for more information about a command.
# 查看集群信息
kind get clusters
# 查看集群节点
kind get nodes
# 查看集群上下文
kind get kubeconfig
# 集群节点导入主机镜像
kind load docker-image <镜像名称>
# 集群节点导入打包镜像(tar文件)
kind load image-archive xxxx.tar
# 导出日志到指定目录
kind export logs somedir
.
├── docker-info.txt
├── kind-control-plane
│ ├── alternatives.log
│ ├── containerd.log
│ ├── containers
│ ├── images.log
│ ├── inspect.json
│ ├── journal.log
│ ├── kubelet.log
│ ├── kubernetes-version.txt
│ ├── pods
│ └── serial.log
└── kind-version.txt
# 删除集群
kind delete cluster