Deployment
ReplicaSet과 Pod의 배포 관리
Pod 및 ReplicaSet에 대한 선언적 업데이트를 제공
ReplicaSet의 상위 오브젝트
쿠버네티스에서 공식적으로 Deployment를 사용할 것을 권장함
Deployment 목록 확인
kubectl get deployments [옵션]
kubectl get deployments
- 유지되는 Pod 개수 확인 가능
kubectl get deploy -o wide
- replicaset의 Pod 선택기, 컨테이너이름, 이미지이름 확인 가능
* deploy : deployments의 짧은 명령어
Deployment 상세 정보 확인
kubectl describe deploy [옵션]
kubectl describe deploy kuweb-deployment
Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable
-pod 배포 상태
OldReplicaSets: <none>
-이전 ReplicaSet 이름
NewReplicaSet: kuweb-deployment-56688b8968 (3/3 replicas created)
-새로 생성된 ReplicaSet 이름과 pod 갯수
Deployment로 생성된 ReplicaSet, Pod 정보 확인
- ReplicaSet 이름 : Deployment이름+16진수 랜덤 값
- Pod 이름 : ReplicaSet이름+16진수 랜덤 값
Deployment 업데이트
애플리케이션 업데이트 시 중단 없이 업데이트 가능
변경 사항을 Revision에 기록하여 필요한 경우 롤백(rollback) 가능
테스트용 업데이트 이미지 생성
d:\KubeTestWeb\index.jsp 파일 수정
- Dockerfile 빌드
docker build –t testweb:2.0 d:\KubeTestWeb
버전 2.0. 이미지 업 버전 생성
Deployment 이미지 업데이트
kubectl set image deploy <Deployment이름> <컨테이너이름>=<이미지이름> --record=true
* --record : 변경사항을 기록하여 해당 버전의 ReplicaSet을 보존
> kubectl set image deploy kuweb-deployment kuweb=testweb:2.0 --record=true
Deployment Rollout 기록 확인
변경된 사항은 Revision으로 기록됨
kubectl rollout history deploy [Deployment이름] [옵션]
kubectl rollout history deploy kuweb-deployment
kubectl rollout history deploy kuweb-deployment --revision=2
Deployment 롤백
배포가 안정적이지 않은 경우 안정적인 이전 버전으로 롤백
kubectl rollout undo deploy <deploy이름> [--to-revision=번호]
--to-revision을 생략하면 바로 이전 버전으로 롤백
kubectl rollout undo deploy kuweb-deployment
Deployment 삭제
kubectl delete deploy <deploy명 | -l label | --all> [옵션]
kubectl delete deploy kuweb-deployment
- Deployment에 의해 생성된 ReplicaSet, Pod도 같이 삭제됨
Service
Pod 집합에서 실행 중인 애플리케이션을 네트워크 서비스로 노출하는 추상적인 방법
Pods에 접근하기 위한 규칙을 정의
하나의 애플리케이션에 하나의 Pod만 사용하지 않고 Pod의 집합을 사용하는 경우 각 Pod는 고유의 IP주소를 가지기 때문에 접근이 까다로움
Deployment를 사용하는 경우 Pod는 동적으로 생성/소멸 될 수 있기 때문에 배포 중 동작되는 Pod의 IP주소는 변경될 수 있음
Service 연결할 Deployment 생성
kubectl apply -f d:\KubeTestWeb\kuweb-deployment.ya
Service Yaml 파일 작성
- d:\KubeTestWeb\kuweb-serivce.yaml 파일 생성
Service 목록 확인
kubectl get services [옵션]
kubectl get svc -o wide
- 유지되는 Pod 개수 확인 가능
* svc : services의 짧은 명령어
Service 상세 정보 확인
kubectl describe svc [옵션]
kubectl describe svc kuweb-service
IP:
ClusterIP주소
Port:
TargetPort:
NodePort:
port 정보
Endpoints:
현재 연결된 pods 정보