Kubernetes 1.20 개선사항
Kubernetes 1.20 개선사항
2020년 올해의 마지막 릴리즈로 쿠버네티스 커뮤니티에서 kubernetes 1.20을 릴리즈했다.
이번 릴리즈는 주로 안정성에 초점을 두고, 알파 단계에서 16개 / 베타 단계에서 15개 / 안정에서 11개 / 2개의 지원 중단으로 릴리스를 진행한다.
1.20 Enhancements tracking에 대해 잘 정리된 시트를 아래에서 확인할 수 있다. 링크.. github document들 모아놓은 것만으로도 짱대박인듯
알파 개선 사항
IPV4 / IPV6 듀얼 스택
포드에 IPV4, IPV6 주소를 모두 할당 가능하다. 오.. 포드 주소가 다채로워지겠군
테스트 및 평가에 아직은 더 많은 시간을 할당하기 위해 알파로 남았다.
정상적인 노드 종료
kubelet에서 종료가 발생하고 있는 신호를 워크로드한테 보내 워크로드가 이벤트를 정상적으로 준비할 수 있는 기회를 제공한다.
로드밸런서를 위한 혼합 프로토콜
프로토콜이 서로 포트 정의가 다른 LB서비스를 만들 수 있다. 음.. 쿠버린이 아니 쿠버응애인 나는 이게 무슨말인지 이해가 안간다. 예전에는 둘 이상의 포트가 정의된 경우에 모든 포트가 동일한 프로토콜을 가져야했지만, 개선되었다고 한다.
아 .. lb가 부하분산할때 사용하는 프로토콜을 포트 단위로도 분리해줄 수 있다는 말인가보다.
resource requests, limits에 대한 메트릭 노출
아닛..! 포드 리소스랑 리밋을 메트릭으로 볼 수 있도록 하는 새로운 메트릭 endpoint가 스케줄러에 추가되었다. 쿠응애인 나에게 지금 인턴하는 회사에서 처음 맡겨주셨던 업무가 모니터링이었다. 그래서 쿠버 모니터링 쪽에 관련된 건 더 자세히 읽게 된다.(그나마 알만한 소리가 아주 조금 있는편..) Prometheus에서 pod별 resource requests, limits 에 대해 메트릭을 지원하지만, 이 새로운 엔드포인트를 도입하면 실제 클러스터 사용률이나 용량을 더 잘 설명하는데 도움이 될 것 같다.
베타 개선 사항
베타 향상은 예전에는 알파 형식으로 존재했지만 이제 안정적이어서 베타로 전환된 사항들을 말한단다.
대규모 커뮤니티 프로젝트는 릴리즈 할 때 개선사항을 이렇게 알파 베타로 나누어서 릴리즈하는 모습이 가끔 보인다.
CronJob
Kubernetes 1.4에서 Scheduled jobs라는 이름으로 쓰이던 기능이 1.8에서 CronJob이라는 이름으로 베타로 전환되었다. 그럼 이번 1.20에서는 대체 뭘 한거지!! CronJob 컨트롤러의 도입이다. CronJob을 성공적으로 배포하고 성능문제 해결하도록 하는 중간.. 컨트롤러가 도입되었다.
Kubectl Debug
원래 1.18에 있었던 kubectl debug 명령은 이번에 베타로 전환되었다. (kubectl 1.15까지만 경험해본 나는 kubectl debug명령어가 있는줄도 몰랐다) 이번에 새로 도입되는건 디버깅중인 포드의 복사본을 만들고 사용중인 이미지를 변경하는 기능이다.
Runtime class
Pod describe를 해보면 보이는 PodSpec내에서 Runtimeclass를 지정하는 기능이 있따. kubernetes 1.14에서 베타로 승격되었었음. 이 기능이 이번에 안정화되면서 1.20에 베타로 편입
느리게 시작되는 포드에다가 시작 활성 상태 Probe hold off 추가
이게 무슨 말이냐.. 어떤 워크로드는 시작하는데 오래걸릴 수 있다. 느리게 시작되면 문제가 생기는데, “워크로드가 상태가 괜찮니??!! 나 이제 시작해도 되니??”를 검증하는 활성 상태 probe 과정에서 문제를 일으킬 수 있다는 게 그 문제다. 1.16 버전에 처음 도입된 startupProbe를 사용하면, pod가 정상적으로 시작될 때까지 이 문제검사검증 을 늦춰주는 기능이다.
CSI Volume Snapshot
오..볼륨 스냅샷을 사용하는 기능이다. 1.17 이후 베타 상태를 유지했다고 함. 볼륨 스냅샷 작업을 트리거해주는 워크플로우를 지원하고, kuber환경이나 호환되는 스토리지 제공업체랑 통합을 지원한다.
향후 릴리즈는?
앞으로 Kubernetes 출시 주기는.. 2021년에 3개의 릴리즈 계획이 있다고 한다.
1.21은 1월에 시작! 해서 3월에 릴리즈 될 예정. 개인적으로 위에 알파 기능들 중에 어떤 친구가 안정화되어 베타로 전환될지 궁금하다.
디디늉의 개인적인 생각
한 1달쯤 전에 프로메테우스 관련되어서 배포를 하다가, 지원되는 버전이 안맞아서 메트릭이 안나오던 일이 있었다. 메트릭이 왜 안나오지? 의 이유에 관해 회사분들께 설명을 드리는 과정에서 숫자 1.14인지 1.15인지.. 1.16인지..를 까먹어서 허버허버어버버….훌루루룩.. 내 설명은 이렇게 신뢰를 잃어버렸고.. (이하생략…).
그 때, 팀 리더님께서 릴리즈 넘버, 버전을 기억하는건 엔지니어한테 중요하다는 팁을 주신 이후로 버전업이랑 릴리즈에 관심을 갖게 되었다. 쿠버 릴리즈에 대해 관심을 갖고 능동적으로 찾아본건 이번이 처음이지만, 읽으면서 “내가 하고 있는 프로젝트에 이 기능을 만약에 도입한다면? 이게 어느 범위에 영향을 끼치려나? 부작용은?” 을 깊은 수준은 아니더라도 상상해보는 나를 볼 수 있었다. 만약에 운좋게 기회가 되어서 기능 배포를 맡게 되면 꼭 글을 또 써야겠다.
참고한 링크