为了便于k8s 开发,社区提供了minikube,它的原理是通过在虚拟机里面部署k8s 集群,从而帮助用户一键创建一个k8s集群。
但这种方式比较笨重,需要我们本地环境能够支持虚拟化,譬如KVM,而且在虚拟机里面跑k8s 经常会面临资源不足的情况。那么能不能通过容器的方式启动一个k8s集群呢,为此社区提供了一个更加方便的集群部署方案 kind。从kind的图标就可以看出它将k8s的所有组件都放到容器里面运行。
整个架构图如下,可以看到是将所有的k8s组件都以systemd的方式管理,放到了docker 容器里面运行。
废话不多说,我们直接开干。首先安装kind 和kubectl
# 安装kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
#安装kind
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
然后就没有然后了。一条命令直接拉起一个k8s
# kind create cluster
Creating cluster "kind" ...
✓ Ensuring node image (kindest/node:v1.21.1)
✓ Preparing nodes
✓ Writing configuration
✓ Starting control-plane ️
✓ Installing CNI
✓ Installing StorageClass
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
Have a nice day!
我们设置一下kubectl 指向的集群
# kubectl cluster-info --context kind-kind
测试一下咱们的k8s 集群吧,测试一下集群里面安装哪些Pod。
]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-558bd4d5db-stl6w 1/1 Running 0 2m37s
kube-system coredns-558bd4d5db-t427c 1/1 Running 0 2m37s
kube-system etcd-kind-control-plane 1/1 Running 0 2m41s
kube-system kindnet-2vkrm 1/1 Running 0 2m38s
kube-system kube-apiserver-kind-control-plane 1/1 Running 0 2m41s
kube-system kube-controller-manager-kind-control-plane 1/1 Running 0 2m41s
kube-system kube-proxy-wg988 1/1 Running 0 2m38s
kube-system kube-scheduler-kind-control-plane 1/1 Running 0 2m41s
local-path-storage local-path-provisioner-547f784dff-d7mc4 1/1 Running 0 2m37s
nice,不仅如此,我们甚至可以通过kind 部署集群,先定义集群信息,如下所示,然后再执行kind 创建集群。
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
就可以部署一个包含一个master 和两个work的集群了。
我们深入容器内部看一下kind 是如何实现的。我们既然kind 启动的容器里面,查看里面运行的k8s 进程,他们都是通过systemd维护的。
# ps -ef|grep kube
还可以看到containerd 进程(1.21 版本k8s CRI 默认是containerd)。在容器内执行查看容器命令和通过kubectl 查询的效果一致。
# crictl pods
POD ID CREATED STATE NAME NAMESPACE ATTEMPT RUNTIME
69d19f68f2e27 17 minutes ago Ready coredns-558bd4d5db-stl6w kube-system 0 (default)
f0c38d8ee81c1 17 minutes ago Ready coredns-558bd4d5db-t427c kube-system 0 (default)
c5f04a7ede1c3 17 minutes ago Ready local-path-provisioner-547f784dff-d7mc4 local-path-storage 0 (default)
74edb02aec4ba 17 minutes ago Ready kindnet-2vkrm kube-system 0 (default)
4afa9b1c08f2e 17 minutes ago Ready kube-proxy-wg988 kube-system 0 (default)
ad983cdb2106f 18 minutes ago Ready kube-scheduler-kind-control-plane kube-system 0 (default)
9bfd0f99be135 18 minutes ago Ready kube-apiserver-kind-control-plane kube-system 0 (default)
13c2a792e3f45 18 minutes ago Ready kube-controller-manager-kind-control-plane kube-system 0 (default)
137ae1b147e3e 18 minutes ago Ready etcd-kind-control-plane kube-system 0 (default)
如果需要测试k8s ,kind 比 minikube更加轻量高效,必须强烈推荐!
页面更新:2024-04-10
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号