基于Kind搭建单机Kubernetes环境
基于Kind搭建单机Kubernetes环境
0.环境
配置:4c16g 系统:Ubuntu 22.04
1. 目标
- 单机快速搭建 Kubernetes 集群
- 支持 Operator 开发与调试
- 适配国内网络环境
2. 目录规划(推荐)
1
mkdir -p /work/{bin,src,lab/{kind,kubeadm,manifests},data}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/work
/src
/kubernetes # k8s 源码
/operators # 自己的 operator 项目
/kubebuilder-demo # 练手工程
/bin # kind/kubebuilder/kustomize/helm 等二进制
/lab
/kind # kind 配置文件
/kubeadm # kubeadm 配置文件
/manifests # 练习 yaml
/data
/registry # 本地 registry 数据
/containerd
/docker
3.安装 Docker
1
2
3
4
5
apt update
apt install -y docker.io
systemctl enable --now docker
配置镜像加速:
1
2
3
4
5
6
7
8
9
10
11
12
13
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<'EOF'
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://docker.m.daocloud.io"
]
}
EOF
systemctl daemon-reload
systemctl restart docker
4.安装kubectl
1
2
3
4
cd /work/bin
curl -fLO https://dl.k8s.io/release/v1.29.2/bin/linux/amd64/kubectl
chmod +x kubectl
ln -sf /work/bin/kubectl /usr/local/bin/kubectl
验证
1
kubectl version
5.安装Kind
1
2
3
4
cd /work/bin
curl -fLO https://dl.k8s.io/release/v1.29.2/bin/linux/amd64/kubectl
chmod +x kubectl
ln -sf /work/bin/kubectl /usr/local/bin/kubectl
加入path
1
2
echo 'export PATH=/work/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
验证
1
kind version
6.拉取国内kind node镜像(国内加速)
1
2
docker pull m.daocloud.io/docker.io/kindest/node:v1.29.2
docker tag m.daocloud.io/docker.io/kindest/node:v1.29.2 kindest/node:v1.29.2
7.创建kind集群配置
创建kind.yaml
1
vim /work/lab/kind/kind.yaml
写入配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: dev
nodes:
- role: control-plane
image: kindest/node:v1.29.2
- role: worker
image: kindest/node:v1.29.2
- role: worker
image: kindest/node:v1.29.2
containerdConfigPatches:
- |-
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
endpoint = ["https://k8s.m.daocloud.io"]
8.创建集群
1
2
cd /work/lab/kind
kind create cluster --config kind.yaml
9.验证集群
1
2
kubectl get nodes
kubectl get pods -A
期望结果:
- 所有节点 Ready
- kube-system 下组件全部 Running
10.常用操作
删除集群:
1
kind delete cluster --name dev
查看日志:
1
kind export logs ./kind-logs
This post is licensed under CC BY 4.0 by the author.