개발자를 향해...

cka 강의 정리 본문

카테고리 없음

cka 강의 정리

eugeneHwang1124 2023. 8. 22. 00:24
728x90
반응형

Deployment

제품 환경에서 프로그램을 배포하는 방법

 

  • 롤링 업데이트(Rolling Update)
    • 새 버전을 배포하면서, 새 버전 인스턴스를 하나씩 늘려가고 기존 버전의 인스턴스를 하나식 줄여나가는 방식
  • 롤백
    • 업그레이드 시 오류 발생 시 변경사항을 이전으로 돌리는것

 

Deployment는 원활한 업그레이드를 위해 롤링 업데이트, 롤백, 중지, 재개 등의 기능을 제공

 

명령어

  1. Deployment 생성하기
  2. 생성한 Deployment 확인
  3. 자동으로 생성된 ReplicaSet 확인하기
  4. 파드 확인하기

 

Services

  • 내부 components 들과 어플리케이션 외부 간의 통신을 도움
  • 어플리케이션 간의 통신, 어플리케이션과 유저 간의 통신을 도움

3 services type

  • NodePort
    • 노드에서 port로 들어오는 요청을 듣다가 요청이 오면 pod port로 전달
    • label에 pod 가 여러개면 리퀘스트를 전달하는 파드를 endpoint로 지정하여 파드 간 로드 밸런싱의 역할을 한다

service-node port

  • ClusterIP
    • 서로 다른 서비스 간의 소통을 가능하게 만들기 위해 Virtual IP 생성
    • pod의 IP는 바뀔 수 있어서 application 간 통신에 적절 x
    • 각 서비스는 ip name을 할당받고 이 name은 다른 pod가 service에 접근하기 위해 사용 => cluster IP

  • LoadBalancer
    • 여러 node의 각 pod에 접근하기 위해 하나의 url로 하나의 app에 접근하기위해 LB 필요
    • url로 들어오는 사용자의 요청을 ip 주소로 바꾸어 접근할 수 있도록함

 

Namespaces

파드와 서비스 , 네트워킹 솔루션등이 하나의 Namespaces로 묶임

 

종류

  • default Namespaces- 클러스터가 처음 설정될 때 k8s에 의해 자동으로 생성됨
  • kube-system - k8s는 파드와 서비스들을 실수로 삭제나 수정하는 것을 방지하기 위한 공간
  • kube-public- 모든 사용자가 접속할 수 있는 공간

특징

  • 각 네임스페이스는 고유의 정책과 고유 저장소을 가질 수 있음
  • 다른 네임스페이스의 요소에 접근하려면 아래와 같이 호출해야함

명령어

  • 특정 Namespace에 pod 생성
kubectl create –f pod-definition.yml --namespace=myNamespaceName
  • 새로운 Namespace 생성

kubectl create –f namespace-dev.yml 
# or
kubectl create namespace dev

 

Imperative vs Declarative

k8s의 오브젝트를 관리하는 방법 2가지

 

Imperative(명령형)

  • 무언가를 작업하기 위하여 “어떻게” 진행할 것인지를 나열하는 것(kubenetes에게 지시하는것) = Step by Step 지시
  • 지금까지 무언가를 생성하기 위해 definition file을 kubectl create –f커맨드로 지정하고, 수정을 위해 kubectl replace 커맨드를 사용하고, 삭제를 위해 kubectl delete를 사용하는 이런 과정들인 모두 Imperative 방식
  • 접근 방법 2가지
    • run, create, expose,edit,scale 와 같은 imperative 명령어를 사용하기 → yaml이 필요 x,속도가 빠름/ 복잡한 설정을 넣어야할때 커맨드가 복잡해짐
    • configuration file(=definition file) 사용하기

Declarative(선언형)

  • “무엇”을 진행할것인지
  • Declarative방식을 적용하려면 오브젝트를 만들고 수정하고 업데이트하기 위해 kubectl apply 커맨드를 사용
반응형