Kubernetes는 Version마다 지원하는 기능이 바뀐다.
https://kubernetes.io/ko/docs/reference/command-line-tools-reference/feature-gates/
위 Official Doc을 보면,
[기능] [디폴트] [단계] [도입] [종료] 순의 5칼럼 테이블이 존재한다.
위 2 행은, APIListChunking이라는 알파 Feature가 1.8버전에 도입되었고, 1.8버전에 종료되었다가
똑같은 이름의 베타 Feature가 1.9부터 도입되어 지금까지 있다.
자, Feature는
- Alpha : Feature-Gate를 True하지않으면 동작하지 않는 실험단계
- Beta : Feature-Gate가 기본적으로 True되어있지만 아직 실험중인 단계
- GA (Graduated) : Feature가 안정화되어 본 버전의 기본 기능(True, False가 불가능하고 항상 동작하는 기능)이 된 단계
- Deprecated : Feature 폐기!
요렇게 단계가 나뉜다고 볼 수 있는데.
음...
최신 버전의 쿠베로 개발을 하다가, 조금이라도 이전의 쿠베를 만지게 되면,
물론 문법도 사뭇 다르겠지만, 이 제공 기능의 차이가 조금씩 발생한다.
이를테면,
위 기능은 1.23부터 GA단계고, 1.22v는 베타긴 하다. (기본 true)
이게 뭐냐면, job이 complete되었고, 그 job의 매니페스트 속성에 5를 적었다. 그러면 5초 뒤에 job pod를 삭제해주는 고마운 기능이다.
1.22 쿠베에서 TTL은 베타지만, 1.20에서는 아직 알파다.
그말인즉슨, 1.20에서는 직접 이 Feature-gate를 true시켜줘야 한다는 것 ㅠㅠ
자. 드가자
쿠베는 저마다 다른 플랫폼에서 돌릴 수 있다.
여러 케이스(kubeadm기반, kube-scheduler, kube-api, kube-etcd 매니페스트 직접 건드리기 등등)가 있는데, 그건 내가 참고한 레퍼런스를 하단에 걸어둘테니 그 케이스를 겪게되면 그 글을 보는 게 낫다.
나는 Rancher기반으로 클러스터를 관리하기 때문에, Rancher기반으로 Kubernetes의 Feature-gate를 어떻게 관리할 것이냐라는 점에 도달하고자 한다.
(막간 주의할 점은, Rancher에도 Feature-gate가 있다. 혹시 자료조사할때 헷갈리지 말길 - https://rancher.com/docs/rancher/v2.5/en/installation/resources/feature-flags/)
Rancher는 Cluster 페이지에서, 우상단을 보면
... 으로 되어있는 옵션 확장 버튼이 있을 거다.
Edit!
뭐가 많은데, UI상으로 건드리지말고,
Feature Gate는 보통 선언이 안 되어있기 때문에, YAML에 직접 config를 건드려줘야 한다.
즉, 우하단의 Edit as YAML을 클릭하자.
그러면 쪼로록 설정값들이 나오는데,
Feature Gate가 연관된 부분은 kube-api, kube-controller, kubelet 이 세 가지다.
여기에
extra_args:
feature-gates: TTLAfterFinished=true
요런식으로 설정값들을 각각 추가해주면 된다는 거다.
요렇게 수정한 후, 하단 save를 누르면
열심히 클러스터가 재시작된 후, Feature-gate가 활성화되어있을 것이다.