K8s

배병진·2023년 5월 3일
0

k8s

목록 보기
4/4

아래 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

백업 (jin.young을 jin.old로)

# 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

pod에서 사용 중인 이미지 확인

# kubectl get pod jin-pod -o jsonpath="{.spec.containers[?(@.name == 'nginx-container')].image}"

Deployment 리소스의 모든 파드 재기동(명령어 전 Deployment 리소스를 생성 후 사용가능)

# kubectl rollout restart deployment sample-deployment
  • 파드는 재기동이 안된다.

  • kubectl apply는 변경사항을 적용하는데 리소스가 없을 경우엔 리소스를 신규로 생성해 준다

  • kubectl apply 와 kubectl create 차이

  • kubectl create 를 사용하여 리소스 생성 시 --save-config 없이 사용하였으면 저장되지 않고, 특정 필드를 삭제하고 싶은 경우 변경 사항을 산출하지 못하고 의도한 대로 반영되지 않는 필드가 발생하기 때문에 항상 kubectl apply를 사용하는것이 좋다.

kubectl create로 pod생성 후 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

Server-side apply

  • kubectl apply를 여러 사용자가 같은 필드를 변경하는 경우 경합 현상이 발생하거나 컨테이너 이미지가 원래대로 돌아가버릴수 있는데 이런 현상을 감지할 수 있도록 해주는 옵션이다.

위에서 생성한 yaml파일 복원

# cp -av jin-pod.yaml{.old,}

Server-side apply 활성화 하여 매니페스트 생성

# kubectl apply -f jin-pod.yaml --server-side

이미지 변경

# kubectl set image pod sample-pod nignx-container=nginx:1.17

Server-side apply를 활성화하여 매니페스트 적용

# kubectl apply -f jin-pod.yaml --server-side

에러 발생 시

# kubectl apply -f jin-pod.yaml --server-side --force-conflicts
  • server-side의 옵션을 사용하여 매니페스트를 적용하였을 경우 manager가 관리하는 필드가 저장되는데 해당 필드를 찾아보면 변경사항을 확인 가능하다
profile
history and study

0개의 댓글