低配置旧笔记本下轻量运行K8s以进行控制器与Operator开发的方案咨询
低配置旧笔记本下轻量运行K8s以进行控制器与Operator开发的方案咨询
兄弟我太懂你这种旧本跑K8s的痛苦了——之前用差不多配置的机器折腾过,minikube一开风扇直接拉满,开个共享屏幕直接卡成PPT,连代码都敲不动。针对你主要是开发控制器/Operator、不需要完整集群的需求,给你几个亲测有效的轻量方案,完全不用纠结kubeconfig或者功能缺失的问题:
首选方案:k3s 极简控制平面模式
k3s本身就是为边缘设备设计的轻量K8s发行版,比minikube省一半以上的资源。你可以直接启动仅包含核心组件的控制平面,完全砍掉不必要的插件:
- 安装k3s后,用这个命令启动:
k3s server --disable traefik --disable servicelb --disable local-storage --disable metrics-server - 这个命令会只保留
kube-apiserver、etcd、kube-controller-manager、kube-scheduler这些你开发必须的核心组件 - kubeconfig会自动生成在
/etc/rancher/k3s/k3s.yaml,你只需要把这个文件复制到~/.kube/config,或者在开发工具里指定这个路径就行,和标准K8s的kubeconfig完全兼容,没有任何额外配置复杂度
次选:kind 单节点集群+资源限制
kind虽然是用容器跑集群,但你可以自定义配置严格限制资源,让它在旧本上安分下来:
- 新建一个
kind-config.yaml文件,内容如下:
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane resources: requests: cpu: "1" memory: "1024Mi" limits: cpu: "1.5" memory: "1536Mi"
- 然后用命令启动:
kind create cluster --config ./kind-config.yaml - 启动后用
kind get kubeconfig > ~/.kube/config导入配置,就可以正常用kubectl操作了。这个集群的资源被牢牢限制,不会把你的笔记本榨干,而且完全兼容标准K8s API,开发控制器/Operator完全够用
进阶玩法:kubeadm 搭极简单节点集群
如果你想自己掌控所有组件,用kubeadm搭个仅核心组件的集群也不难,而且资源占用极低:
- 先安装较旧但稳定的K8s版本(比如1.24.x,对硬件要求更低),忽略CPU和内存的预检:
kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=NumCPU,Mem - 初始化完成后,不需要部署CNI插件(因为你不需要跑业务Pod,控制器只需要和api-server交互)
- 把生成的kubeconfig复制到用户目录:
mkdir -p ~/.kube && cp /etc/kubernetes/admin.conf ~/.kube/config - 如果觉得kube-proxy占资源,直接删掉它的DaemonSet:
kubectl delete daemonset -n kube-system kube-proxy,完全不影响控制器开发
额外优化小技巧
- 关闭系统后台的不必要进程:比如自动更新、杀毒软件、云同步工具,能多释放10-20%的CPU和内存
- 用
kubectl top pods -A实时查看资源占用,把暂时不用的组件Pod停掉(比如k3s里的metrics-server,平时不需要可以直接kubectl delete deployment -n kube-system metrics-server) - 开发Operator时,用
operator-sdk run --local模式:这个模式下Operator直接在本地运行,不需要部署到集群里,只需要连接到集群的api-server,能进一步降低集群的负载
内容来源于stack exchange
相关产品推荐
相关产品推荐

