Giter Club home page Giter Club logo

kube-stresscheck's Introduction

kube-stresscheck

Script to check Kubernetes nodes on stress (CPU/RAM) resistance.

It will run 5 iterations of stress command with following parameters:

  • CPU forks equal to number of cores.
  • Memory forks will be computed to allocate whole memory.

For details what stress does under the hood see manual.

Quick start

kubectl apply -f https://raw.githubusercontent.com/giantswarm/kube-stresscheck/master/examples/node.yaml

Wait at least 30 seconds and check for CrashLooping pods and NotReady nodes.

kubectl get pods -n kube-system
kubectl get nodes
kubectl delete -f https://raw.githubusercontent.com/giantswarm/kube-stresscheck/master/examples/node.yaml

Usually pods like kube-proxy, ingress-nginx-controller, calico-node are crashlooping. If kubelet or docker was affected by stress test then node will become NotReady.

Stress test whole cluster

If you're really brave, then you can start stress check on the whole cluster (including a master node).

kubectl apply -f https://raw.githubusercontent.com/giantswarm/kube-stresscheck/master/examples/cluster.yaml

Most probably you have just KILLED your cluster. It will probably require manual intervention after this command.

If cluster is still ok, then remove stress check.

kubectl delete -f https://raw.githubusercontent.com/giantswarm/kube-stresscheck/master/examples/node.yaml

kube-stresscheck's People

Contributors

biswarup1290dass avatar gacko avatar glitchcrab avatar marians avatar pipo02mix avatar r7vme avatar stevenpg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

kube-stresscheck's Issues

Add 'namespace: kube-system' to ServiceAccount resource in node.yaml

Environment:

  • Windows 10 Pro
  • Minikube v1.9.0
  • Kubernetes client & server versions v1.18.0
  • kubectl apply -f https://raw.githubusercontent.com/giantswarm/kube-stresscheck/master/examples/node.yaml

Command run:
kubectl describe rs kube-stresscheck-7f75dbbcb7 -n kube-system

Output:
Warning FailedCreate 2m45s (x17 over 8m13s) replicaset-controller Error creating: pods "kube-stresscheck-7f75dbbcb7-" is forbidden: error looking up service account kube-system/kube-stresscheck: serviceaccount "kube-stresscheck" not found.

After adding the namespace to the ServiceAccount, everything ran smoothly.

image quay.io/giantswarm/kube-stresscheck:latest can't be found

Hi !

Your image on quay.io seems to be unavailable.

When I try create I get :

Failed to pull image "quay.io/giantswarm/kube-stresscheck:latest": rpc error: code = Unknown desc = Error response from daemon: Get https://quay.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

examples/cluster.yaml DaemonSet and PSP YAML Spec not compatible with newer K8s API Version

The below attached YAML is tested on k8s 1.21 with minor fixes on PSP and DaemonSet YAML Spec & deprecated API versions

Also fixes similar issue - #7 (add namespace to serviceAccount resource) but for cluster.yaml

Unable to raise PR due to restricted repository permissions.

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: kube-stresscheck-psp
rules:
  - apiGroups:
    - extensions
    resources:
    - podsecuritypolicies
    verbs:
    - use
    resourceNames:
    - kube-stresscheck-psp
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kube-stresscheck-psp
subjects:
  - kind: ServiceAccount
    name: kube-stresscheck
    namespace: kube-system
roleRef:
  kind: ClusterRole
  name: kube-stresscheck-psp
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kube-stresscheck
  namespace: kube-system
---
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: kube-stresscheck-psp
spec:
  allowPrivilegeEscalation: true
  fsGroup:
    rule: RunAsAny
  privileged: true
  runAsUser:
    rule: RunAsAny
  seLinux:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny
  volumes:
  - 'secret'
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: kube-stresscheck
  namespace: kube-system
  labels:
    app: kube-stresscheck
spec:
  selector:
    matchLabels:
      app: kube-stresscheck
  template:
    metadata:
      labels:
        app: kube-stresscheck
    spec:
      serviceAccount: kube-stresscheck
      securityContext:
        runAsUser: 0
      containers:
      - name: kube-stresscheck
        image: quay.io/giantswarm/kube-stresscheck:latest
        resources:
          requests:
            cpu: 100m
            memory: 200Mi
        volumeMounts:
        - name: varlog
          mountPath: /var/log
      terminationGracePeriodSeconds: 30
      volumes:
      - name: varlog
        hostPath:
          path: /var/log

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.