내가 문서에서 이해 한 것은 다음과 같습니다.
- kubectl create = 클러스터에 새로운 k8s 리소스를 만듭니다
- kubectl replace = 라이브 클러스터의 리소스를 업데이트합니다
- kubectl apply = 생성 + 바꾸기를 원한다면 ( Reference )
내 질문은
- 클러스터에서 동일한 작업을 수행하는 세 가지 작업이있는 이유는 무엇입니까?
- 이러한 작업의 사용 사례는 무엇입니까?
- 후드 아래에서 서로 어떻게 다른가요?
내가 문서에서 이해 한 것은 다음과 같습니다.
내 질문은
답변:
두 가지 접근 방식이 있습니다.
kubectl create
우리가 명령 관리 라고 부르는 것 입니다. 이 방법을 사용하면 K8 클러스터 환경의 모양이 아니라 Kubernetes API에 생성, 교체 또는 삭제하려는 것을 알 수 있습니다.
kubectl apply
은 선언적 관리 방식의 일부로 , 객체에 대한 다른 변경 사항이 있더라도 라이브 객체에 적용 할 수있는 변경 사항 (예 :을 통해 scale
)이 " 유지 "됩니다 apply
.
명령 및 선언적 관리에 대한 자세한 내용은 Kubernetes Object Management 설명서를 참조하십시오.
kubectl create
및 kubectl apply
동일한 효과 여부가 있습니다.
kubectl create
리소스가 이미 존재하면 오류가 발생합니다. kubectl apply
습관. 차이점은 kubectl create
구체적으로 "이것 만들기" kubectl apply
라고 말하지만 "이것처럼 보이게하기 위해 필요한 것 (만들기, 업데이트하기 등)"을 말합니다.
CI 스크립트에서 실행할 때 자원이 이미 존재하는 경우 create 명령 에서 오류 가 발생하므로 명령 명령에 문제가 있습니다.
수행 할 수있는 작업은 및 옵션 을 사용하여 명령형 명령의 출력을 적용 (선언적 패턴)합니다 .--dry-run=true
-o yaml
kubectl create whatever --dry-run=true -o yaml | kubectl apply -f -
위의 명령은 리소스가 이미 존재하는 경우 오류를 발생시키지 않으며 필요한 경우 리소스를 업데이트합니다.
이것은 선언적 패턴을 사용할 수없는 경우에 매우 유용합니다 (예 : 도커-레지스트리 비밀을 작성할 때).
kubectl delete deployment nginx --ignore-not-found; kubectl create deployment nginx --image=nginx
내 이해에서보다 솔직한 대답을하기 위해 :
apply
-기존 객체를 점진적으로 변경합니다
create
-완전히 새로운 객체를 만듭니다 (이전에 존재하지 않거나 삭제됨)
Kubernetes 웹 사이트에서 링크 된 DigitalOcean 기사
에서 가져옵니다 .
여기서는 작성 대신에 적용을 사용하여 이후에 변경 사항을 완전히 덮어 쓰지 않고 점진적으로 Ingress Controller 오브젝트에 적용 할 수 있습니다.
apply
like like docker-compose up -d
+ use create
like docker-compose up -d --build
?
kubectl run
= kubectl create deployment
kubectl create -f your-object-config.yaml
kubectl delete -f your-object-config.yaml
kubectl replace -f your-object-config.yaml
kubectl diff -f configs/
kubectl apply -f configs/
kubectl create 는 한 번에 하나의 객체 구성 파일로 작업 할 수 있습니다. 이것은 명령 관리라고도합니다.
kubectl create -f 파일 이름 | url
kubectl apply 는 객체 구성 yaml 파일을 포함하는 디렉토리 및 하위 디렉토리에서 작동합니다. 이것을 선언적 관리라고도합니다. 디렉토리에서 여러 오브젝트 구성 파일을 선택할 수 있습니다. kubectl apply -f 디렉토리 /
세부 사항 :
https://kubernetes.io/docs/tasks/manage-kubernetes-objects/declarative-config/
https://kubernetes.io/docs/tasks/manage-kubernetes-objects/imperative-config/