작성
·
684
0
[질문 전 답변]
1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]
3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요]
(https://www.inflearn.com/blogs/1719)
4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
[질문 하기]
안녕하세요.
pod 는 실행할 때 run 을 사용하는데 deployment 는 create 를 사용합니다. 왜 굳이 다른 커맨드를 만들어 사용하는지 궁금합니다.
답변 1
0
안녕하세요
쿠버네티스가 발전한 역사와 좀 관련이 있는데요.
예전에 run이 다음과 같은 형태로도 수행이 가능했습니다.
kubectl run --generator=deployment/apps.v1
< 덜 찾아보고 적는 그럴듯한 이유 >
정확하게는 git issue 및 PR 히스토리를 다 찾아봐야 하는데, 대략적으로 추정으로 적어본다면
처음에 run이 만들어지고 이를 통해 더 쉽게 다른 오브젝트들을 배포하도록 위와 같은 --generator 옵션을 추가하면서 만들어졌는데, 추후에 많은 오브젝트들이 포함되면서 이를 generator라는 옵션으로 만들고 바로 실행한다는 의미와 부합하지 않아 create라는 수행어(동사)를 만들었고, 이 부분이 결국 run에서 가지고 있는 generator 옵션과 중복이 되면서 run에 있는 옵션을 deprecated한 것으로 보여집니다.
<---->
그런데 현재는 run은 그와 같은 형태의 수행은 불가능하고 pod만 생성하도록 변경되었으며, 이에 따라 run은 간단히 pod만 생성해서 테스트하는 곳에서 사용하고 있습니다.
그에 반해 create는 pod를 포함하고 있는 deployment 뿐만 아니라 다양한 오브젝트를 생성할 수 있습니다.
그래서 공식적으로 이렇게 구분하지 않지만, (run의 기능들이 deprecated되어서) run을 포함해서는 이렇게 볼 수도 있습니다.
Using Generators (Run, Expose)
Using Imperative way (Create)
Using Declarative way (Apply)
Run은 위와 같은 이유로 생성자(Generators)로 구분을 잘 하지 않고 Create와 Apply는 구분을 할 필요가 있기 때문에 명령적인 그리고 선언적인 방법으로 구분합니다. 그러한 이유로 지금은 Run과 Expose를 생성자 영역보다 명령적인 방법으로 포함시킬 수 있습니다.
이와 관련하여 다음의 영상을 보시면 더 이해에 도움이 되실 것 같습니다.
감사합니다.
조훈 드림.
이 부분도 함께 보시면 좋으실 것 같습니다.
https://thebook.io/080241/ch03/02/01-04/