下文将使用这个集群进行演示
发布时间:2025-06-24 18:38:57 作者:北方职教升学中心 阅读量:737
使用kind安装配置集群
kind
主要用于在本地机器上快速启动一个Kubernetes
集群,由K8s
官方开发设计,用于日常开发和测试(勿用于生产环境)。确保你的宿主机内存充足kind create cluster --config=kind-config.yaml --retain--wait=1m
其中的--retain
flag表示在kind
命令执行结束后保留节点容器,否则集群会自动删除。
# 安装两个集群$ kind create cluster$ kind create cluster --namekind-2# 查看集群列表$ kind get clusterskindkind-2# 切换context(默认是kind-kind)$ kubectl cluster-info --contextkind-kind$ kubectl cluster-info --contextkind-kind-2
3. 部署应用
3.1 添加镜像到节点容器
如果我们想要将宿主机上已存在的docker镜像直接导入节点容器(免去重复拉取),参照下面的命令:
# 需要先将镜像拉取到宿主机dockerpull busybox# 再进行load操作kind load docker-image busybox -ntest-1.27 # 也可以从tar包导入kind load image-archive /my-image-archive.tar# 导入镜像到特定节点容器(默认所有)kind load docker-image <image1>--nodes<node-name>
Load之后,查看节点容器中的镜像:
$ dockerexec-ittest-1.27-control-plane crictl imagesIMAGE TAG IMAGE ID SIZEdocker.io/kindest/kindnetd v20230511-dc714da8 b18bf71b941ba 25.3MBdocker.io/kindest/local-path-helper v20230510-486859a6 d022557af8b63 2.92MBdocker.io/kindest/local-path-provisioner v20230511-dc714da8 eec7db0a07d0d 17.3MBdocker.io/library/busybox latest 23466caa55cb7 4.27MBregistry.k8s.io/coredns/coredns v1.10.1 97e04611ad434 14.6MBregistry.k8s.io/etcd 3.5.7-0 24bc64e911039 80.7MBregistry.k8s.io/kube-apiserver v1.27.3 634c53edb5c14 79.8MBregistry.k8s.io/kube-controller-manager v1.27.3 aea4f169db16d 71.5MBregistry.k8s.io/kube-proxy v1.27.3 278dd40f83dfb 68.1MBregistry.k8s.io/kube-scheduler v1.27.3 6234a065dec4c 57.6MBregistry.k8s.io/pause 3.7e5a475a038057 268kB
3.2 部署Pod
注意,我们前面已经在宿主机上安装了kubectl,所以现在可以直接在宿主机上管理集群,而不需要进入节点容器。
如果你有遇到问题请提出ISSUE,但也希望你能够先看一下官方kind文档。kind
支持通过yaml
文件[kind-config.yaml
]来详细配置集群的启动参数,以下是一个包含注释的1主2Worker集群
的完整kind
配置示例。使用配置文件启动集群:
# nonk8s# 此配置文件的完整说明位于:https://kind.sigs.k8s.io/docs/user/configuration/#getting-startedkind:ClusterapiVersion:kind.x-k8s.io/v1alpha4name:test-1.27# 集群名featureGates:# 启动/禁用K8s的特性门"AdmissionWebhookMatchConditions":true# 配置API Server的--runtime-config# https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/runtimeConfig:"api/alpha":"false"# 配置集群的网络#networking:# ipFamily: ipv6# apiServerAddress: 127.0.0.1 # 默认127.0.0.1# apiServerPort: 6443 # 默认随机# podSubnet: "10.244.0.0/16" # 默认值# serviceSubnet: "10.96.0.0/12" # 默认值# disableDefaultCNI: true # 默认false,禁用后需安装其他CNI,例如calico# kubeProxyMode: "ipvs" # kube-proxy使用的组件,默认iptables,设置none则禁用 kube-proxy# 配置节点,下面是一个一主多worker的配置nodes:-role:control-plane # 默认的主节点# 可选的为每个节点配置使用的节点镜像,不指定则使用kind版本对应的默认值image:kindest/node:v1.27.3@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72 # 可选的节点路径映射配置,用于持久化数据# 若使用mac或win上的docker,需要检查hostPath必须存在于Docker配置中的Preferences -> Resources -> File SharingextraMounts:-hostPath:~/node_volume # 需提前创建containerPath:/node_volume -hostPath:~/node_volume/example_file containerPath:/example_file readOnly:true# 默认falseselinuxRelabel:false# 默认false。
笔者使用的机器是MacBookPro M1,所以演示的一些命令为macOS平台下的指令。遗憾的是,
笔者看到了kind仓库中的这个ISSUE #1422
,也就是说kind截止目前(2024-1-2)也没有支持这个功能。创建命令如下:
kind create cluster --image=kindest/node:v1.27.3@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72
如果不使用--image
flag,则使用当前kind版本默认的节点镜像。
教育和学习:对于学习和教学来说,Kind提供了一个低成本、参考
- kind官方文档