반응형
Notice
Link
스택큐힙리스트
kubectl apply vs kubectl create?kubectl apply와 kubectl create의 차이점은 무엇인가요? 본문
카테고리 없음
kubectl apply vs kubectl create?kubectl apply와 kubectl create의 차이점은 무엇인가요?
스택큐힙리스트 2023. 11. 3. 23:25반응형
문서를 통해 이해한 것은 다음과 같습니다:
kubectl create
클러스터에 새로운 k8s 리소스를 생성합니다.kubectl replace
라이브 클러스터의 리소스를 업데이트합니다.kubectl apply
만약 create + replace를 하고 싶다면 (참고)
제가 가진 질문은 다음과 같습니다.
- 왜 클러스터에서 같은 작업을 수행하는데 세 가지 연산이 있는 것인가요?
- 이러한 연산들의 사용 사례는 무엇인가요?
- 내부에서는 어떻게 다른가요?
답변 1
이들은 두 가지 다른 접근 방식입니다:
명령형 관리
kubectl create
는 우리가 명령형 관리라고 부르는 것입니다. 이 접근 방식에서는 Kubernetes API에게 무엇을 생성, 대체 또는 삭제하고자 하는지 알려주는 것이며, K8s 클러스터의 상태는 어떻게 보일지에 대해서는 알려주지 않습니다.
선언적 관리
kubectl apply
는 선언적 관리 접근 방식의 일부입니다. 이 방식은 라이브 객체에 대해 적용한 변경 사항 (예 : scale
을 통한 변경)이 유지되는 것입니다. 다른 변경 사항을 객체에 apply
하더라도 변경 사항이 유지되는 것입니다.
더 많은 세부 정보는 쿠버네티스 객체 관리 문서에서 명령형 및 선언적 관리에 대해 자세히 읽을 수 있습니다.
간단히 말해서, 두 가지 명령어는 다른 작업을 수행합니다. 자원이 이미 존재하는 경우, kubectl create
는 오류를 발생시킬 것이고, kubectl apply
는 오류를 발생시키지 않을 것입니다.
답변 2
kubectl apply vs kubectl create: 차이점과 사용법Kubernetes(K8s)는 현대적인 컨테이너 오케스트레이션 플랫폼으로, 애플리케이션을 배포하고 관리하기 위한 도구입니다. K8s는 애플리케이션 확장성, 가용성, 안정성과 같은 다양한 이점을 제공하며, 실제로 많은 IT 기업들이 K8s를 도입하고 있습니다. 이러한 K8s를 사용할 때 자주 사용되는 명령어인 `kubectl create`와 `kubectl apply`에 대해 알아보도록 하겠습니다.
`kubectl create`는 K8s 리소스를 생성할 때 주로 사용되는 명령어입니다. `create` 명령어로 작성된 리소스는 클러스터에 한 번만 적용되며, 이미 존재하는 리소스를 덮어쓰지 않습니다. 이것은 생성 명령어가 일회성이라는 의미로 해석될 수 있습니다. 예를 들어, `kubectl create pod my-pod`라는 명령어를 입력하면, `my-pod`라는 이름의 파드가 생성됩니다. 하지만, 만약 이미 `my-pod`라는 이름의 파드가 존재한다면, 오류가 발생합니다. 따라서 `create` 명령어를 사용할 때에는 만약 같은 이름의 리소스가 이미 존재하는지 확인하는 것이 중요합니다.
한편, `kubectl apply`는 리소스를 생성하는 것 외에도 이미 존재하는 리소스를 업데이트하거나 대체할 때 사용됩니다. `apply` 명령어는 리소스의 현재 상태를 분석하고, 변경된 내용만을 업데이트하는 특징을 갖고 있습니다. 이러한 특성 덕분에 클러스터에 새로운 리소스를 추가하는 것 뿐만 아니라, 기존 리소스를 수정하는 작업에도 유용하게 사용될 수 있습니다. `kubectl apply` 명령어는 클러스터에 작성된 리소스를 반영하기 때문에, 중요한 설정 정보를 보존하면서도 업데이트를 수행할 수 있습니다.
위에서 언급한 것처럼, `kubectl create`와 `kubectl apply`는 생성 및 업데이트 목적으로 사용되는 두 가지 명령어입니다. 그러나 어떤 경우에 어떤 명령어를 선택해야하는지에 대해서 몇 가지 유의해야 할 점이 있습니다. 첫 번째로는 한 번만 적용되기를 원하는 리소스를 생성할 때 `create`를 사용하는 것이 적합합니다. 예를 들어, 배포용 리소스를 작성하거나, 구성 설정 파일을 적용할 때 `create`를 사용할 수 있습니다. 두 번째로, 이미 존재하는 리소스를 업데이트하거나 대체해야할 때 `apply`를 사용하면 됩니다. 이 경우, 변경된 사항만을 업데이트하므로 중요한 설정 정보가 유지되면서도 제대로 동작하는지 확인할 수 있습니다.
결론적으로, `kubectl create`와 `kubectl apply`는 K8s 리소스를 생성하고 업데이트하기 위한 명령어입니다. `create`는 일회성으로 동작하며 이미 존재하는 리소스를 덮어쓰지 않으며, `apply`는 현재 상태를 분석하여 변경된 내용만을 업데이트합니다. 그러므로 적절한 명령어를 선택하고 다양한 상황에서 유연하게 사용할 수 있어야합니다. 이를 통해 K8s를 용이하게 관리하여 애플리케이션의 확장성과 가용성을 극대화할 수 있습니다.
반응형
Comments