Kubernetes 1.35부터 cgroup v1 호스트에서 기본적으로 시작하지 않는 kubelet
Kubernetes 1.35부터 cgroup v1 호스트에서는 kubelet이 기본 설정으로 시작하지 않고 재시작을 반복합니다. 작성자는 kubelet 설정과 kubeadm 사전 검증에 각각 우회 설정이 필요하며, cgroup v1을 유지하면 Kubernetes 1.37에서 기본 활성화된 Memory QoS도 적용되지 않는다고 확인했습니다.
취약점과 보안 사고, 운영체제와 클라우드·네트워크를 다룹니다.
Kubernetes 1.35부터 cgroup v1 호스트에서는 kubelet이 기본 설정으로 시작하지 않고 재시작을 반복합니다. 작성자는 kubelet 설정과 kubeadm 사전 검증에 각각 우회 설정이 필요하며, cgroup v1을 유지하면 Kubernetes 1.37에서 기본 활성화된 Memory QoS도 적용되지 않는다고 확인했습니다.
Kubernetes RBAC에서 권한 범위는 Role의 종류만으로 정해지지 않습니다. Role이 허용할 동작을 정하고 Binding이 적용 범위를 정한다는 규칙을 일곱 가지 실패 사례로 설명하며, 브라우저 시뮬레이터와 kubectl auth can-i로 권한을 확인하는 방법을 안내합니다.
SIGTERM을 받자마자 종료하는 Python 앱으로 롤아웃을 비교했습니다. Kubernetes에서는 요청이 끊겼지만 DigitalOcean App Platform에서는 일반 요청 278,014건이 배포 중 실패하지 않았습니다. 다만 기본 드레인 시간은 15초라 더 긴 요청에는 설정 변경이 필요합니다.
Kubernetes의 상태 저장소 etcd가 데이터를 키-값으로 저장하고, 계층 구조를 슬래시가 포함된 키로 표현하는 방식을 설명합니다. Minikube에서 배포 정보를 조회하고, MVCC의 revision 값이 객체 변경에 따라 증가하는 과정을 실습합니다.
Kubernetes Deployment에 maxUnavailable: 0을 설정하고 graceful shutdown과 preStop 훅을 적용해도 keep-alive 연결 때문에 요청이 실패할 수 있습니다. 실험에서는 종료 전 애플리케이션이 연결을 닫도록 바꾼 뒤 실패가 0건이 됐지만, 댓글은 유휴 연결과 HTTP/2의 경우 추가 검증이 필요하다고 지적합니다.
DigitalOcean Kubernetes에서 워커 노드를 강제 종료하는 실험을 열 차례 반복했습니다. 노드 감지는 2.9초로 빨랐지만 Service 엔드포인트에서 해당 노드의 Pod를 빼기까지 중앙값 13.2초가 걸렸으며, 계획된 작업에서는 drain이 이 시간을 0.5초로 줄였습니다.
Agent Substrate는 Kubernetes 위에서 다수의 상태 저장 actor를 소수의 worker에 배치하는 에이전트 실행 런타임입니다. gVisor와 microVM을 지원하며 500ms 이하의 재개 시간, 초당 500회 이상의 suspend/resume, 8개 Pod에서 약 250개 actor를 multiplex하는 데모를 제공합니다.