Você está na página 1de 38

Kubernetes Contributor

Workshop
Amim Knabben & Ricardo Katz
Broadcom
KCD Brasil Sao Paulo 2024
Quem sou eu? Amim Knabben

Senior R&D Engineer @ Broadcom


Standalone TKG Group Tech Lead
Kubernetes SIG Windows Tech
Lead

https://opssec.in
https://twitter.com/ak_ndb
https://www.linkedin.com/in/ami
m/
Quem sou eu? Ricardo Katz

R&D Engineer @ Broadcom


Maintainer/Subproject Lead do
Ingress-NGINX
Emeritus SIG-Cli reviewer
Criador do Kubepug
Preguiçoso, copiei esse slide do
Amim

https://rkatz.xyz
https://twitter.com/rpkatz
Agenda

● A comunidade Kubernetes
● Conhecendo o SIG-Windows
● Cenários
○ Caso 1 - Contribuindo para testes upstream
○ Caso 2 - Caçando bugs no Kubernetes
● Conclusão
Comunidade

https://github.com/kubernetes/community/blob/master/governance.md
Princípios
● Aberto: Kubernetes é open source
● Receptivo e respeitoso: Código de Conduta
● Transparente e Acessível: Trabalho e Colaboração deve ser realizado em
público
● Mérito: Idéia e contribuições são aceitas de acordo com mérito técnico e
alinhamento dos objetivos do projeto.

https://github.com/cncf/foundation/blob/main/code-of-conduct-languages/pt.md
Modelo Governança
● SIGs são permanentes até
dissolução voluntária ou
depreciado pelo Steering
Committee.
● Sub-projetos permanentes até
depreciado pelo SIG.
● Working Groups solvem um
problema (comum a mais de um
SIG), e são dissolvidos.
● Steering Committee governança a
nível de projeto.
Papéis (roles)
● Chair - define como prioridades e compromissos são gerenciados,
promover mudanças no estatuto (incluindo a criação) para obter a
adesão da comunidade.
● Tech Lead - facilitar a gestão de subprojetos, resolver problemas
técnicos e decisões cross-Subprojects e cross-SIG.
● Subproject Lead - são a autoridade técnica para um subprojeto no
projeto Kubernetes
● Member - contribuidores que estão continuamente ativos na
comunidade.
Qual SIG funciona para você?
● Escolha um domínio que te interessa
○ Node, Storage, Network, Schedule, Cloud provider
○ Documentation, Architecture, Security, Testing
● Entre no SIG mailing list
● Comece a frequentar as meetings do SIG
○ No começo é difícil pegar o contexto, tenha paciência.
○ Inglês pode ser uma dificuldade, mas também uma ótima oportunidade de praticar!
● Ache um mentor
○ Para facilitar o onboarding e entender os desafios do SIG ou projeto.
○ Kubernetes é complexo, um onboarding pode levar meses.
● Entre no Kubernetes Slack e participe da comunidade
Quiz 1 - Qual SIG você tem maior interesse e por que?
SIG Windows
Introdução
● Focado em suportar Windows OS e agendamento de containers Windows no
Kubernetes.
○ Mantendo uma interface entre Kubernetes e containers no Windows, além de
manter os componentes, kube-proxy, kubelet, containerd, com implementações
específicas
● Mantém no escopo
○ Código (Golang) para Windows OS em todas as partes do codebase
○ Teste de features específicas e clusters

https://github.com/kubernetes/community/blob/master/sig-windows/charter.md
Subprojetos atuais
● Windows gMSA
○ Integração com Active Directory para Group Managed Services
● Windows Operational Readiness
● Windows Samples
● Windows Service Proxy
○ Host do processo de build e HELM para o Windows Kube-Proxy
● Windows Testing
○ Repositório para scripts de testes
● Windows Tools
○ Dev Tools
○ Windows Tools
■ Guias, POCs de hostProcessContainers e Burritos
CNCF testes de conformance
● 388 Linux tests
● Conformance Linux Kubernetes Cluster

https://github.com/kubernetes/kubernetes/blob/master/test/conformance/testdata/confor
mance.yaml
Windows Operational Readiness
● Certifica que Clusters Kubernetes Híbridos estão prontos para rodar cargas de trabalho de
produção
● Valida através de especificações e um CLI, testes pre-definidos mínimos para cada
categoria:
○ (Core) Storage
○ (Core) Scheduling
○ (Core) Networking
○ Extended:
■ HostProcess
■ Activity Directory
■ Network Policy
■ Service Proxy

https://github.com/kubernetes/enhancements/tree/master/keps/sig-windows/2578-windows-conformance
Exemplo de CLI
./op-readiness –verbose –category Core.Network –report-dir /tmp/report
Integração com Prow
Prow é o CI-CD oficial do Kubernetes
SIG Windows Dev Tools
● Ambiente de desenvolvimento local de Windows nodes no Kubernetes
● Suporte para desenvolvimento de aplicações Windows em containers
● Testes e validação de clusters com baixa latência e controle de
recursos
● Alternativa para desenvolvedores que não querem pagar um cloud
provider.
Procedimento de instalação
● Pre-requisitos: Vagrant, VirtualBox
● Passos dos scripts:
○ Iniciar 2x VM (Linux and Windows) - Vagrantbox imagens disponíveis
○ Instalar pacotes e Kubernetes binários nas VMs
○ Instalar CNI (Calico, Antrea)
● Downsides: Processo atual demora ~1h pra subir (se não houver falhas)
● Suportado em Linux nativo e Windows (WSL2)
● O time está pesquisando alternativas
○ https://opssec.in/2023/1230/
SWDTv2 - Configuração
swdt setup
swdt k8s
Cenários
Caso 1 - gMSA no WOR
● Achando um problema
○ Problema: Finalizar a cobertura de testes na categoria Extended.ActiveDirectory
○ Solução: Verificar o primeiro teste não implementado na especificação
■ https://github.com/kubernetes-sigs/windows-operational-readiness/blob/main/specifications/ext-active-directo
ry/spec.yaml
Caso 1 - gMSA no WOR
● Entenda o problema, implemente a solução
○ Não tenha medo de errar, estude o code base e boas práticas antes, revise outros
PRs no test/e2e/* e o E2E Framework.
○ https://github.com/kubernetes/kubernetes/pull/108432/files
Caso 1 - gMSA no WOR
● Tenha o PR revisado e mergeado
● Profit
QUIZ 2 - Qual o serviço de domínio da Microsoft suportado pelo
Kubernetes
Case 2 - Flake nos testes upstream
● Problema: Um teste específico (usando master@containerd 1.7) falha
randomicamente
● Solução: Replica & gets your hands dirty

Deep dive - https://opssec.in/2024/0104/


Case 2 - Flake nos testes upstream
● Replicando localmente o problema
Case 2 - Container Runtime Interface e métricas
Case 2 - Flake nos testes upstream
● Containerd oferece stubs para métrica, Kubelet acessa como um gRPC client.
● Passos:
○ Acessa o Kubelet endpoint primeiro (tem erro)
○ Acessa o containerd direto (tem erro)
■ Isola o problema na camada do containerd
Case 2 - Flake nos testes upstream
● Tl;dr - Cache do Containerd para armazenamento do Usage Nano Seconds é compartilhado e sobrescrito por
requisições paralelas.
● Falta granularidade na chave (ns) que vem do OS.
○ currentUsageCoreNanoSecond - oldStats.UsageCoreNanoSeconds == 0

https://github.com/containerd/containerd/issues/9531
QUIZ 3 - Cite um dos Subprojetos do SIG-Windows que mais interessou, explique.
Conclusão
Próximo passos para clusters Híbrios
● Node Log Query promovido para Beta
○ https://github.com/kubernetes/enhancements/tree/master/keps/sig-windows/2258-node-log-query
● Aumento na cobertura de testes do Win Operational Readiness
○ Core Storage
○ Core Concurrent
○ Extended Network Policy
○ Extended Host Process
○ Extended Active Directory
○ Extended Network
● Validação do Minikube para cluster híbridos locais
Shoutout to SIG Windows team
● Mark Rossetti (Microsoft) - Chair
● James Sturtevant (Microsoft) - TL
● Aravindh (Red Hat) - Chair
● Claudiu Belu (Cloudbase Solutions) - TL
● Jay Vyas (Tesla) - Emeritus TL
● Mateusz Loskot (CadCorp) - Member
● Tatenda Zifudzi (AWS) - Member
Thanks!

Entre no Slack da Comunidade Kubernetes


https://communityinviter.com/apps/kubernetes/community

#sig-windows

Você também pode gostar