使用kind在本地搭建kubernetes e2e測試環(huán)境(mac)

給kubernetes社區(qū)貢獻(xiàn)代碼時,經(jīng)常需要寫e2e測試,本地測試通過后再提PR效率更高,也專業(yè)一點(diǎn)。

前提條件

  • 本地完成kubernetes代碼編譯(可以參看文末refs)
  • 8GB以上內(nèi)存

本地搭建kubernetes開發(fā)測試環(huán)境

社區(qū)推薦minikube和kind,個人覺得kind目前最適合kubernetes開發(fā)測試,很方便在自己的開發(fā)機(jī)快速創(chuàng)建kubernetes集群。

  1. 安裝kind
brew install kind
  1. 填寫kind配置文件, kind使用kubeadm創(chuàng)建k8s集群,如果有定制化參數(shù)可以按照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配置控制節(jié)點(diǎn)、woker節(jié)點(diǎn)副本數(shù)量,以及使用的鏡像??捎玫溺R像從releases-node 查找

  1. 創(chuàng)建集群
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 # 剛才創(chuàng)建的集群
  1. 集群切換
# 切換到 kubernetes-v1.29.2
kind get clusters # 查看所有集群
kind export kubeconfig --name kubernetes-v1.29.2 # 導(dǎo)出 kubernetes-v1.29.2 的 kubeconfig
kubectl cluster-info # 查看 kubernetes-v1.29.2 的集群信息

# 切換到 kubernetes-customize-v1.29
kind export kubeconfig --name kubernetes-customize-v1.29 # 導(dǎo)出 kubernetes-customize-v1.29 的 kubeconfig
kubectl cluster-info # 查看 kubernetes-customize-v1.29 的集群信息

使用kind運(yùn)行自己編譯過的kubernetes集群

  1. 使用kind構(gòu)建kubernetes鏡像
    修復(fù)一個bug后,使用kind構(gòu)建自定義鏡像,搭建測試集群
$ kind build node-image --image="kindest/node-custom-customize:v1.29" /Users/zhangzhifei/work/go/src/github.com/kubernetes
  1. 修改鏡像配置,然后通過kind創(chuàng)建即可
% 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. 創(chuàng)建集群
% 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 # 剛才創(chuàng)建的集群

詳細(xì)配置請看官網(wǎng):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. 運(yùn)行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:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容