아래 Command에서 사용할 yaml 파일
apiVersion: v1
kind: Pod
metadata:
name: jin-pod
spec:
containers:
- name: nginx-container
imgae: nginx: 1.16
kubectl create의 command는 거의 이용하지 않음
파드 생성 (리소스 존재하지 않을 경우)
# kubectl create -f jin-pod.yaml
kubectl create -f jin-pod.yaml (리소스 존재할 경우)
Error from server (AlreadyExists) : error when creation "jin-pod.yaml" : pods "jin-pod" already exists
# kubectl get pods
# kubectl delete -f jin-pod.yaml
> "jin-pod" deleted
kubectl delete -f jin-pod.yaml (리소스 존재하지 않을 경우)
Error from server (NotFound) : error when deleting "jin-pod.yaml" : pods :jin-pod: not found
# kubectl delete pod sample-pod
> pod "sample-pod" deleted
# kubectl delete pod --all
# kubectl delete -f jin-pod.yaml --wait
# kubectl delete -f jin-pod.yaml --grace-period 0 --force
# cp -av jin-pod.yaml{,.old}
# diff jin-pod.yaml.old jin-pod.yaml
# kubectl apply -f jin-pod.yaml
> pod/jin-pod confiugred
# kubectl apply -f jin-pod.yaml
> pod/jin-pod unchanged
# kubectl apply -f jin-pod.yaml
> pod/sample-pod created
# kubectl get pod jin-pod -o jsonpath="{.spec.containers[?(@.name == 'nginx-container')].image}"
# kubectl rollout restart deployment sample-deployment
파드는 재기동이 안된다.
kubectl apply는 변경사항을 적용하는데 리소스가 없을 경우엔 리소스를 신규로 생성해 준다
kubectl apply 와 kubectl create 차이
kubectl create 를 사용하여 리소스 생성 시 --save-config 없이 사용하였으면 저장되지 않고, 특정 필드를 삭제하고 싶은 경우 변경 사항을 산출하지 못하고 의도한 대로 반영되지 않는 필드가 발생하기 때문에 항상 kubectl apply를 사용하는것이 좋다.
# kubectl apply -f jin-pod.yaml
> Warming: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply pod/sample-pod configured
위에서 생성한 yaml파일 복원
# cp -av jin-pod.yaml{.old,}
# kubectl apply -f jin-pod.yaml --server-side
# kubectl set image pod sample-pod nignx-container=nginx:1.17
# kubectl apply -f jin-pod.yaml --server-side
# kubectl apply -f jin-pod.yaml --server-side --force-conflicts