使用KWOK拉起数千个假Node和假Pod

介绍:

KWOK 是一个工具包,能在数秒内建立一个由数千个节点组成的集群。在场景下,所有节点都是模拟的,行为与真实节点无异,因此整体方法占用的资源非常少。

安装:

官网:kwok.sigs.k8s.io/

KWOK支持两种安装方式,第一种是在现有的集群上安装,第二种是直接起一个假集群。

1. 设置变量参数

定义变量KWOK_REPO用于存储kwok的仓库地址

ini 复制代码
KWOK_REPO=kubernetes-sigs/kwok

定义变量KWOK_LATEST_RELEASE,获取当前kwok的最新版本,当然也可以将版本写死在变量中,写这篇文章的时候测试版本为v0.4.0。

ini 复制代码
KWOK_LATEST_RELEASE=$(curl "https://api.github.com/repos/${KWOK_REPO}/releases/latest" | jq -r '.tag_name')

2. 安装KWOK controller

kwok-controller是一个deployment,请求github上对应版本的kwok.yaml并部署在集群上

bash 复制代码
kubectl apply -f "https://github.com/${KWOK_REPO}/releases/download/${KWOK_LATEST_RELEASE}/kwok.yaml"

确保kwok-controller被正确启动,有可能会因为网络原因导致镜像拉取失败

3. 设置假node、pod的模拟行为

bash 复制代码
kubectl apply -f "https://github.com/${KWOK_REPO}/releases/download/${KWOK_LATEST_RELEASE}/stage-fast.yaml"

部署

1. 假节点(fake node)

在部署pod前至少需要部署一个fake node,否则无法部署fake pod。如果需要拉起多个fake node需要修改labels中的name和kubernetes.io/hostname。

yaml 复制代码
kubectl apply -f - <<EOF
apiVersion: v1
kind: Node
metadata:
  annotations:
    node.alpha.kubernetes.io/ttl: "0"
    kwok.x-k8s.io/node: fake
  labels:
    beta.kubernetes.io/arch: amd64
    beta.kubernetes.io/os: linux
    kubernetes.io/arch: amd64
    kubernetes.io/hostname: kwok-node-0
    kubernetes.io/os: linux
    kubernetes.io/role: agent
    node-role.kubernetes.io/agent: ""
    type: kwok
  name: kwok-node-0
spec:
  taints: # Avoid scheduling actual running pods to fake Node
  - effect: NoSchedule
    key: kwok.x-k8s.io/node
    value: fake
status:
  allocatable:
    cpu: 32
    memory: 256Gi
    pods: 110
  capacity:
    cpu: 32
    memory: 256Gi
    pods: 110
  nodeInfo:
    architecture: amd64
    bootID: ""
    containerRuntimeVersion: ""
    kernelVersion: ""
    kubeProxyVersion: fake
    kubeletVersion: fake
    machineID: ""
    operatingSystem: linux
    osImage: ""
    systemUUID: ""
  phase: Running
EOF

使用kubectl get no查看node节点,就可以看到我拉起的两个fake node都已经处于Ready状态了。

2. 假Pod(fake pod)

接着就可以apply这个yaml文件用于拉起多个fake pod。这个文件中设置了replicas为10,就会拉起10个fake pod,可以根据需要进行调整。

yaml 复制代码
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: fake-pod
  namespace: default
spec:
  replicas: 10
  selector:
    matchLabels:
      app: fake-pod
  template:
    metadata:
      labels:
        app: fake-pod
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: type
                operator: In
                values:
                - kwok
      # A taints was added to an automatically created Node.
      # You can remove taints of Node or add this tolerations.
      tolerations:
      - key: "kwok.x-k8s.io/node"
        operator: "Exists"
        effect: "NoSchedule"
      containers:
      - name: fake-container
        image: fake-image
EOF
相关推荐
AI攻城狮11 小时前
OpenFang 给我的一个提醒:AI Agent 真正难的不是自主,而是治理
人工智能·云原生·aigc
Java陈序员14 小时前
轻量强大!一款现代化的 Kubernetes 集群管理与监控工具!
云原生·容器·kubernetes
Johny_Zhao1 天前
OpenClaw中级到高级教程
linux·人工智能·信息安全·kubernetes·云计算·yum源·系统运维·openclaw
AI攻城狮2 天前
OpenClaw 里 TAVILY_API_KEY 明明写在 ~/.bashrc,为什么还是失效?一次完整排查与修复
人工智能·云原生·aigc
阿里云云原生3 天前
零配置部署顶级模型!函数计算一键解锁 Qwen3.5
云原生
AI攻城狮3 天前
Kimi Bot + OpenClaw 完整配置指南:5 步实现本地 AI Agent 集成
人工智能·云原生·aigc
AI攻城狮4 天前
RAG Chunking 为什么这么难?5 大挑战 + 最佳实践指南
人工智能·云原生·aigc
可观测性用观测云5 天前
云原生网关 Ingress-Nginx 链路追踪实战:OpenTelemetry 采集与观测云集成方案
nginx·kubernetes
哈里谢顿6 天前
Kubernetes Operator核心概念、实现原理和实战开发
云原生
阿里云云原生6 天前
你的 OpenClaw 真的在受控运行吗?
云原生