{"id":18319631,"url":"https://github.com/mycloudlab/handson-cluster-limits","last_synced_at":"2026-01-21T03:32:43.737Z","repository":{"id":95758005,"uuid":"279720979","full_name":"mycloudlab/handson-cluster-limits","owner":"mycloudlab","description":null,"archived":false,"fork":false,"pushed_at":"2020-07-15T11:37:32.000Z","size":4,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-09T14:21:32.166Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mycloudlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-15T00:17:26.000Z","updated_at":"2020-07-15T11:37:34.000Z","dependencies_parsed_at":"2023-05-21T22:45:23.366Z","dependency_job_id":null,"html_url":"https://github.com/mycloudlab/handson-cluster-limits","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mycloudlab/handson-cluster-limits","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mycloudlab%2Fhandson-cluster-limits","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mycloudlab%2Fhandson-cluster-limits/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mycloudlab%2Fhandson-cluster-limits/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mycloudlab%2Fhandson-cluster-limits/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mycloudlab","download_url":"https://codeload.github.com/mycloudlab/handson-cluster-limits/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mycloudlab%2Fhandson-cluster-limits/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28624506,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T02:47:06.670Z","status":"ssl_error","status_checked_at":"2026-01-21T02:45:44.886Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T18:13:48.938Z","updated_at":"2026-01-21T03:32:43.724Z","avatar_url":"https://github.com/mycloudlab.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Exercícios do handson de gerenciamento de limites do cluster\n\nAntes de qualquer exercício faça o login no cluster no terminal para execução dos comandos OC.\n\n\n# 1.1 Definindo um pod com limites\n\nCrie o pod abaixo:\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: memory-demo-seu-usuario\nspec:\n  containers:\n  - name: memory-demo-ctr\n    image: polinux/stress\n    resources:\n      limits:\n        memory: \"220Mi\"\n      requests:\n        memory: \"100Mi\"\n    command: [\"stress\"]\n    args: [\"--vm\", \"1\", \"--vm-bytes\", \"150M\", \"--vm-hang\", \"1\"]\n```\n\n\n\n# 1.2 Definindo um pod com mais memoria do que o limite \n\nCrie o pod abaixo:\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: memory-demo-seu-usuario\nspec:\n  containers:\n  - name: memory-demo-ctr\n    image: polinux/stress\n    resources:\n      limits:\n        memory: \"150Mi\"\n      requests:\n        memory: \"100Mi\"\n    command: [\"stress\"]\n    args: [\"--vm\", \"1\", \"--vm-bytes\", \"200M\", \"--vm-hang\", \"1\"]\n```\n\n\n# 1.3 Definindo um pod com limite de CPU\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: memory-demo-seu-usuario\nspec:\n  containers:\n  - name: memory-demo-ctr\n    image: polinux/stress\n    resources:\n      limits:\n        memory: \"300Mi\"\n        cpu: \"1\"\n      requests:\n        memory: \"300Mi\"\n        cpu: \"0.5\"\n    command: [\"stress\"]\n    args: [ \"--cpu\", \"2\"]\n```\n\napós alguns minutos execute:\n\n```bash\noc project seu-namespace\noc adm top pod\n```\nA saida deve ser algo como abaixo:\n\n```bash\nNAME                  CPU(cores)   MEMORY(bytes)   \nmemory-demo-seu-usuario   1000m        2Mi      \n```\n\n# 2.1 definindo um limit range\n\nRemova o limit range atual\n```bash\noc delete limitrange limits-core-resource-limits\n```\n\ne crie o limit range abaixo:\n\n```yaml\nkind: LimitRange\napiVersion: v1\nmetadata:\n name: limits-core\nspec:\n limits:\n   - type: Container\n     max:\n       cpu: '500m'\n       memory: 256Mi\n     default:\n       cpu: 250m\n       memory: 256Mi\n     defaultRequest:\n       cpu: 200m\n       memory: 100Mi\n   - type: Pod\n     max:\n       cpu: '1'\n       memory: 1Gi\n```\n\nNeste exemplo são permitidos a criação de pods que a soma dos recursos não ultrapasse 1 core e 1Gi de uso.\n\nOs containers quando não especificados terão limite de 250 mili cores e 256Mi, e request de 200 milicores e 100Mi de memoria request.\n\nTentar definir limites fora desse intervalo ocasionará em erro: \n\ntente criar o pod abaixo sem aplicar limites:\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: web-server\nspec:\n  containers:\n    - name: web\n      image: nginx\n```\n\nDepois visualize o YAML do pod, verá que foi definido um limite embora não tenha sido informado:\n```yaml\n...\n...\ncontainers:\n    - name: web\n      image: nginx\n      resources:\n        limits:\n          cpu: 250m\n          memory: 256Mi\n        requests:\n          cpu: 200m\n          memory: 100Mi\n      volumeMounts:\n... \n...\n```\n\nRemova o container.\n\nO limit range não impede que seja definido um limite desde que não atinja o tamanho máximo:\n\nTente criar o pod abaixo é veja que recebe um erro pois o pod ultrapassou o limite maximo para um container que é de 500Mi.\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: web-server\nspec:\n  containers:\n    - name: web\n      image: nginx\n      resources:\n        limits:\n          memory: \"1Gi\"\n          cpu: \"1\"\n        requests:\n          memory: \"300Mi\"\n          cpu: \"0.5\"\n```\n\n# 3.1 Resource Quota\n\nCrie o resource quota abaixo:\n\n```yaml\napiVersion: v1\nkind: ResourceQuota\nmetadata:\n  name: mem-cpu-demo\nspec:\n  hard:\n    requests.cpu: \"3\"\n    requests.memory: 1Gi\n    limits.cpu: \"5\"\n    limits.memory: 2Gi\n    pods: \"5\"\n```\n\nNo exemplo acima podemos criar até 5 pods e a soma dos 5 pods não pode ultrapassar os limites de memória.\n\nCrie abaixo os pods de 1 a 6 e veja que no sexto vai dar erro pois será imposto o quota.\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: web-server-1-6\nspec:\n  containers:\n    - name: web\n      image: nginx\n```\n\n# 4.1 Exercício ferramenta hypercc\n\nA ferramenta permite saber como quanto de capacidade o cluster suporta para uma especificação de pod.\n\nNa linha de comando execute a ferramenta hypercc.\n\n```bash \nhypercc cluster-capacity --kubeconfig ~/.kube/config --podspec pod-example.yaml --verbose\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmycloudlab%2Fhandson-cluster-limits","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmycloudlab%2Fhandson-cluster-limits","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmycloudlab%2Fhandson-cluster-limits/lists"}