minikube start --driver=docker
kubectl create
kubectl create deployment first-app --image=kub-first-app
kubectl get pods, deployments 이렇게 정보 가능
클러스터에서 찾는 이미지가, 로컬이 아님.
minikube dashboard
대쉬보드 가기 가능
pod단위로 접근은 힘듬
서비스 단위로 접근 가능. 내부, 외부에 특정 주소 노출이 가능하도록 설정 가능. 여러 pod 묶는 단위인듯?
기본은 internal 만 접근 가능
kubectl expose deployment first-app
kubectl expose deployment first-app --type=ClusterIP --port=8080
클러스터 단위 변하지 않는 ip 가능
type=NodePort 는 노드단위.
--type=LoadBalancer 은 인프라에 있는 로드밸런서 같은 느낌으로 작동
minikube 에서는 pending으로 외부 ip가 표현되지만, 직접 배포하면 직접 ip를 볼 수 있게 되기는 함
minikube service first-app 으로 접근 가능하도록 만들어주긴 함
kubectl scale deployment/first-app --replicas=3
이렇게 3배로 스케일링 가능
kubectl set image deployment/first-app kub=presentsong/kub
새로운 이미지가 나왔다는 의미 어떤 컨테이너 + 어떤 이미지로 라는 거를 다 알려줘야 됨
태그가 달라야 업데이트 가능. 따라서 태그를 명시하는 습관을 다는 것이 좋음
kubectl rollout status deployment/first-app
진행 상황을 설명해줌
kubectl rollout undo deployment/first-app
가장 최근 부분을 롤백해줌
kubectl rollout history deployment/first-app 으로 히스토리 볼 수 있음
kubectl rollout history deployment/first-app --revision 을 통해서 자세한 것 가능함
kubectl rollout undo deployment/first-app --to-revision=1
버전 1로 가는게 가능
kubectl 도 정말 너무 할게 많기에, docker-compose같은 부분이 있음
yml파일로 설정하는 느낌
이게 선언적 접근임
명령적은 kubectl 로 하나하나 다 해야되는거고, 선언적은 다 알아서 해주는 느낌
kubectl apply -f config.yaml 이렇게 해두면, k8s가 알아서 최대한 적절하게 변경을 해줌
kubectl apply -f=deployment.yaml
이렇게 설정 가능
matchLabels:
depl: second-app
tier: backend
이거는 and 연산임 다 만족해야됨
spec:
selector:
depl: second-app
service는 모두 다 적을 필요 없이 하나만 적어도 됨
config 변경 후 apply 누르면 끝. 진짜 간단
제거는 delete 명칭으로 할 수는 있음
kubectl delete -f=deployment.yaml 로 리소스 제거 가능
volume은 수명주기가 다 다름
pod가 파괴되면 volume 도 사라짐 (고급 설정으로 바꿀 수는 있음)
쿠버네티스 볼륨 : 다양한 드라이버, 타입
emptyDir: pod 재생성시 하나씩 생김
다른 pod면 날아감
hostPath 이면 bindMount와 비슷함. 이 경로는 path 로 정하지만, linux path 는 건드리면 안됨
type: DirectoryOrCreate 으로 미리 생성 가능
csi 타입은 인터페이스임
영구 volume : pod의 생존 주기와 분리됨
한번의 정의 이후에 어디든 쓸 수 있음
영구 볼륨 claim
PV Claim 이 Persistent Volume을 가리킴.
Cluster안에 하나만 존재하는 영구 볼륨(당연히 다른 영구볼륨을 여러개 만들 수 있음)
노드에 저장이 아니라, 노드에 독립적이라는게 중요함
PersistentVolume을 만든 이후에
Pod에서 Claim 을 만들어야 사용할 수 있음
type LoadBalancer 은 노드단위로 로드밸런싱을 함