내가 문서에서 이해 한 것은 다음과 같습니다.
- 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 오브젝트에 적용 할 수 있습니다.
applylike like docker-compose up -d+ use createlike 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/