fake-k8s is a tool for running Fake Kubernetes clusters
The old version uses shell implementation and is no longer maintained
- Binary (the default of Linux)
Download and start the fake cluster using the binaries,
Since Kubernetes officially only provides binaries for Linux, it is only the default for Linux.
For other than Linux you will need to compile Kubernetes binaries yourself. - Docker (compose v2) (the default of other than Linux)
Start the fake cluster using the container.
Compose v2 needs to be install on Linux - Nerdctl
ditto. - Kind
Start the fake cluster using the kind container.
fake-k8s create cluster --name c1
fake-k8s create cluster --name c2
kubectl get ns,node,statefulset,daemonset,deployment,replicaset,pod -A -o yaml > mock.yaml
fake-k8s create cluster --name m1 --generate-replicas 0
fake-k8s load resource --name m1 -f mock.yaml
kubectl --context=fake-k8s-c1 get node
NAME STATUS ROLES AGE VERSION
fake-0 Ready agent 1s fake
fake-1 Ready agent 1s fake
fake-2 Ready agent 1s fake
fake-3 Ready agent 1s fake
fake-4 Ready agent 1s fake
fake-k8s get clusters
c1
c2
fake-k8s delete cluster --name c1
fake-k8s delete cluster --name c2
$ time fake-k8s create cluster
[+] Running 5/5
⠿ Container fake-k8s-default-etcd Started 1.7s
⠿ Container fake-k8s-default-kube-apiserver Started 1.7s
⠿ Container fake-k8s-default-kube-scheduler Started 1.6s
⠿ Container fake-k8s-default-kube-controller Started 1.5s
⠿ Container fake-k8s-default-fake-kubelet Started 1.7s
real 0m2.587s
user 0m0.418s
sys 0m0.283s
$ kubectl --context=fake-k8s-default get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
fake-0 Ready agent 2s fake 196.168.0.1 <none> <unknown> <unknown> <unknown>
fake-1 Ready agent 2s fake 196.168.0.1 <none> <unknown> <unknown> <unknown>
fake-2 Ready agent 2s fake 196.168.0.1 <none> <unknown> <unknown> <unknown>
fake-3 Ready agent 2s fake 196.168.0.1 <none> <unknown> <unknown> <unknown>
fake-4 Ready agent 2s fake 196.168.0.1 <none> <unknown> <unknown> <unknown>
$ kubectl --context=fake-k8s-default 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:
containers:
- name: fake-pod
image: fake
EOF
deployment.apps/fake-pod created
$ kubectl --context=fake-k8s-default get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
fake-pod-794f9d7464-246z6 1/1 Running 0 1s 10.0.0.15 fake-3 <none> <none>
fake-pod-794f9d7464-2cvdk 1/1 Running 0 1s 10.0.0.19 fake-4 <none> <none>
fake-pod-794f9d7464-447d5 1/1 Running 0 1s 10.0.0.5 fake-3 <none> <none>
fake-pod-794f9d7464-5n5hv 1/1 Running 0 1s 10.0.0.13 fake-2 <none> <none>
fake-pod-794f9d7464-8zdqp 1/1 Running 0 1s 10.0.0.17 fake-0 <none> <none>
fake-pod-794f9d7464-bmt9q 1/1 Running 0 1s 10.0.0.7 fake-0 <none> <none>
fake-pod-794f9d7464-lg4x8 1/1 Running 0 1s 10.0.0.9 fake-4 <none> <none>
fake-pod-794f9d7464-ln2mg 1/1 Running 0 1s 10.0.0.3 fake-2 <none> <none>
fake-pod-794f9d7464-mz92q 1/1 Running 0 1s 10.0.0.11 fake-1 <none> <none>
fake-pod-794f9d7464-sgtdv 1/1 Running 0 1s 10.0.0.21 fake-1 <none> <none>
See more: fake-kubelet
Licensed under the MIT License. See LICENSE for the full license text.