美文网首页
使用kind在本地搭建kubernetes e2e测试环境(ma

使用kind在本地搭建kubernetes e2e测试环境(ma

作者: zhangzhifei | 来源:发表于2024-04-19 14:40 被阅读0次

给kubernetes社区贡献代码时,经常需要写e2e测试,本地测试通过后再提PR效率更高,也专业一点。

前提条件

  • 本地完成kubernetes代码编译(可以参看文末refs)
  • 8GB以上内存

本地搭建kubernetes开发测试环境

社区推荐minikube和kind,个人觉得kind目前最适合kubernetes开发测试,很方便在自己的开发机快速创建kubernetes集群。

  1. 安装kind
brew install kind
  1. 填写kind配置文件, kind使用kubeadm创建k8s集群,如果有定制化参数可以按照kubeadmConfig。
cat kubernetes-v1.29.2.yaml
# this config file contains all config fields with comments
# NOTE: this is not a particularly useful config file
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
## patch the generated kubeadm config with some extra settings
#kubeadmConfigPatches:
#- |
#  apiVersion: kubelet.config.k8s.io/v1beta1
#  kind: KubeletConfiguration
#  evictionHard:dd
#    nodefs.available: "0%"
## patch it further using a JSON 6902 patch
#kubeadmConfigPatchesJSON6902:
#- group: kubeadm.k8s.io
#  version: v1beta3
#  kind: ClusterConfiguration
#  patch: |
#    - op: add
#      path: /apiServer/certSANs/-
#      value: my-hostname
# 1 control plane node and 3 workers
networking:
  ipFamily: ipv4
nodes:
# the control plane node config
- role: control-plane
  image: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245
# the three workers
- role: worker
  image: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245
- role: worker
  image: kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245

可以通过nodes配置控制节点、woker节点副本数量,以及使用的镜像。可用的镜像从releases-node 查找

  1. 创建集群
kind create cluster --config kubernetes-v1.29.2.yaml --name kubernetes-v1.29.2
  1. 查看集群
$ kind get clusters
$ kubernetes-customize-v1.29
kubernetes-v1.29.2 # 刚才创建的集群
  1. 集群切换
# 切换到 kubernetes-v1.29.2
kind get clusters # 查看所有集群
kind export kubeconfig --name kubernetes-v1.29.2 # 导出 kubernetes-v1.29.2 的 kubeconfig
kubectl cluster-info # 查看 kubernetes-v1.29.2 的集群信息

# 切换到 kubernetes-customize-v1.29
kind export kubeconfig --name kubernetes-customize-v1.29 # 导出 kubernetes-customize-v1.29 的 kubeconfig
kubectl cluster-info # 查看 kubernetes-customize-v1.29 的集群信息

使用kind运行自己编译过的kubernetes集群

  1. 使用kind构建kubernetes镜像
    修复一个bug后,使用kind构建自定义镜像,搭建测试集群
$ kind build node-image --image="kindest/node-custom-customize:v1.29" /Users/zhangzhifei/work/go/src/github.com/kubernetes
  1. 修改镜像配置,然后通过kind创建即可
% cat kubernetes-customize-v1.29.yaml
# this config file contains all config fields with comments
# NOTE: this is not a particularly useful config file
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
## patch the generated kubeadm config with some extra settings
#kubeadmConfigPatches:
#- |
#  apiVersion: kubelet.config.k8s.io/v1beta1
#  kind: KubeletConfiguration
#  evictionHard:dd
#    nodefs.available: "0%"
## patch it further using a JSON 6902 patch
#kubeadmConfigPatchesJSON6902:
#- group: kubeadm.k8s.io
#  version: v1beta3
#  kind: ClusterConfiguration
#  patch: |
#    - op: add
#      path: /apiServer/certSANs/-
#      value: my-hostname
# 1 control plane node and 3 workers
networking:
  ipFamily: ipv4
nodes:
# the control plane node config
- role: control-plane
  image: kindest/node-custom-customize:v1.29
# the three workers
- role: worker
  image: kindest/node-custom-customize:v1.29
  1. 创建集群
% kind create cluster --config kubernetes-customize-v1.29.yaml --name kubernetes-customize-v1.29
% kind get clusters
kubernetes-customize-v1.29
kubernetes-v1.29.2 # 刚才创建的集群

详细配置请看官网:https://kind.sigs.k8s.io/docs/user/quick-start/#installation

Kubernetes End-to-End (e2e) 测试

  1. 编译e2e.test
make WHAT="test/e2e/e2e.test"
  1. 运行e2e测试用例
~/work/go/src/github.com/kubernetes/_output/bin/e2e.test -context kind-kubernetes-customize-v1.29-fore2e -ginkgo.focus="\[sig-network\].*Conformance" -num-nodes 2
  1. 返回如下,说明流程跑通


    image.png

refs:

相关文章

网友评论

      本文标题:使用kind在本地搭建kubernetes e2e测试环境(ma

      本文链接:https://www.haomeiwen.com/subject/mycuxjtx.html