安装 Kind
请访问官网 https://kind.sigs.k8s.io/docs/user/quick-start/#installing-from-release-binaries 下载 Kind 安装包。
安装什么架构的 Kubernetes,可访问官网 https://kind.sigs.k8s.io/docs/user/configuration/ 了解。
部署 一个主节点,两个工作节点的集群
编写 cluster.yaml,定义集群架构
vim cluster.yaml, 内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
extraPortMappings:
- containerPort: 80
hostPort: 80
protocol: TCP
- containerPort: 443
hostPort: 443
protocol: TCP
- role: worker
- role: worker
|
创建集群并且指定 Kubernetes 版本
执行以下命令:
1
2
3
|
kind create cluster
--name=yzhou-k8s-dev \
--config=cluster.yaml
|
output log:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
➜ kind kind create cluster
--name=yzhou-k8s-dev \
--config=cluster.yaml
Creating cluster "yzhou-k8s-dev" ...
✓ Ensuring node image (kindest/node:v1.30.0) 🖼
✓ Preparing nodes 📦 📦 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
✓ Joining worker nodes 🚜
Set kubectl context to "kind-yzhou-k8s-dev"
You can now use your cluster with:
kubectl cluster-info --context kind-yzhou-k8s-dev
Have a nice day! 👋
|
注意:本篇 Blog 仅介绍了如何通过 Kind 快速搭建 1 个 k8s 集群,若需部署其他组件,还需阅读官网了解更多信息,例如 安装 ingress nginx(需注意 ingress 与 Kubernetes 版本匹配)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.10.0/deploy/static/provider/kind/deploy.yaml
若出现 raw.githubusercontent.com 无法访问,可以通过访问 https://www.ipaddress.com/ip-lookup
,查看该域名解析的 IP 地址,再通过修改 Hosts 来隐射 IP 地址。
安装完之后,记得通过官网的案例(https://kind.sigs.k8s.io/docs/user/ingress/#ingress-nginx) 来测试在 Ingress 安装是否成功。
将镜像导入到 kind
kind 的 load
命令可以帮助我们将 Docker 中的镜像导入到由 kind 创建的集群中,命令如下:
1
|
kind load docker-image registry.k8s.io/e2e-test-images/agnhost:2.39
|
部署测试应用
此处使用 kind 官网提供的测试用例
1
|
kubectl apply -f https://kind.sigs.k8s.io/examples/ingress/usage.yaml
|
测试 ingress 连通性
![[image-20240814221742608.png]]
卸载一下:
1
|
kubectl delete -f https://kind.sigs.k8s.io/examples/ingress/usage.yaml
|
安装 kubectl
请访问 kubectl 官网 https://kubernetes.io/zh-cn/docs/tasks/tools/, 安装 kubectl。 例如 Mac 系统,访问 “在 macOS 上安装 kubectl” 文档 https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-macos/
1
2
3
4
5
6
7
|
# 针对系统 CPU,下载对应 kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
# sudo chown root: /usr/local/bin/kubectl
|
或者使用 brew 安装
查看安装结构
1
2
3
4
5
|
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f4bb1b7990e4 kindest/node:v1.27.0 "/usr/local/bin/entr…" About an hour ago Up About an hour yzhou-k8s-dev-worker2
151335202d41 kindest/node:v1.27.0 "/usr/local/bin/entr…" About an hour ago Up About an hour yzhou-k8s-dev-worker
b981f4c5fdba kindest/node:v1.27.0 "/usr/local/bin/entr…" About an hour ago Up About an hour 127.0.0.1:51052->6443/tcp yzhou-k8s-dev-control-plane
|
使用 K8s Cluster
切换已创建好的集群上下文
1
|
kubectl cluster-info --context kind-yzhou-k8s-dev
|
output log:
1
2
3
4
5
|
➜ kind kubectl cluster-info --context kind-yzhou-k8s-dev
Kubernetes control plane is running at https://127.0.0.1:63797
CoreDNS is running at https://127.0.0.1:63797/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
|
查看集群 Node
output log:
1
2
3
4
5
|
➜ kind kubectl get nodes
NAME STATUS ROLES AGE VERSION
yzhou-k8s-dev-control-plane Ready control-plane 47s v1.27.0
yzhou-k8s-dev-worker Ready <none> 25s v1.27.0
yzhou-k8s-dev-worker2 Ready <none> 24s v1.27.0
|
其他操作
查看集群
删除 clusters
1
|
kind delete cluster --name [集群名称]
|
删除后,使用 docker ps -a
检查节点是否删除。
refer
1.https://kind.sigs.k8s.io/
2.https://xie.infoq.cn/article/b686d00d5a6049fefc00eddeb
注意 1.27 不能使用。现在使用的是 1.30
这个是 kind 启动不了的
https://blog.csdn.net/qq_20614905/article/details/122253725
![[image-20240814221939291.png]]
![[image-20240814222003566.png]]
查看当前 namespace 下的镜像名称
1
|
kubectl -n namespace get pods -o jsonpath='{.items[*].spec.containers[*].image}' | tr ' ' '\n' | sort | uniq
|
kind 的限制,无法更新配置,只能重新开始部署集群。