클라우드 45일차

soso·2024년 8월 9일

클라우드 부트캠프

목록 보기
47/77

worker에도 적용supervisor 명령을 실행할때는 sbin에서 작업하는것이 일반적임
/usr/sbin/ksetup를 추가
해당 사용자 홈에 .kube라는 디렉토리가 있으면 먼저 삭제, 삭제 후 밑의 3 step을 진행하는 쉘 스크립트
chmod +x /usr/sbin/ksetup 그 후 ksetup에 실행 권한을 추가
user1을 생성 후 kubectl을 사용했을 때 접근할 수 없는 것을 확인user1에서 ksetup을 실행 후 접근 가능token을 생성해 worker node 추가 가능yaml에서 tab을 쓰면 오류, 띄어쓰기를 해야 함
--- 리소스 구분자, 한개 파일 내의 여러개의 리소스에 대한 명세서
-를 사용하여 multi value
인라인 방식으로 쓸 때는 대괄호 안에 ,로
key-value 형태의 object형태,
k get cm -n kube-system만 한다면 이름이 kube-system인 config map 리스트들이 보이지만
k get cm -n kube-system kube-proxy를 한다면 kube-proxy만 보임
busybox 단순 fileset, 서비스가 없기 때문에 start했다가 바로 stop
때문에 command 구문을 줘야 함지정해주지 않으면 첫번째 컨테이너 정보를 출력c2라는 이름을 지정해줘 c2의 list, 커맨드 출력busybox 안에는 bash가 없고 sh가 있음
삭제 시 kubelet delete po mypod
delete 타입 이름
컨테이너가 안에 여러개 있으면 delete 시간이 좀 걸림
template를 만들때는 apiVersion, kind, metadata, spec만 남겨두고 삭제
annotations 외부 솔루션과 연계하기 위한 노출 필드
--dry-run 실제 객체는 만들지 않고 시뮬레이션
%s/example/jse 적용하여 모든 example을 jse로 변경 후 deploy_template.yaml을 저장kubectl create -f deploy_template.yaml로 생성 후 kubectl delete po jse-69df854dc9-7hdd6로 삭제를 했지만 이름이 변경되어 자동으로 생성됨kubectl scale deploy jse --replicas 3로 복제
controller 기반으로 create 된 컨테이너들은 delete 할 수 없기 때문에 kubectl scale deploy jse --replicas 0으로 중단
컨트롤러를 삭제해 삭제할 수 있지만 컨트롤러를 삭제 후 다시 생성하는 과정에서 불필요하게 리소스가 삭제되고 생성되어 database에 overhead가 발생될 수 있기 때문에 replicas를 이용해 임시 중단, 서비스를 안정적이게 관리할 수 있음

  • Deployment: 주로 stateless 애플리케이션(예: 웹 서버)을 배포할 때 사용
    복제본을 생성하고, 업데이트나 롤백을 쉽게 관리할 수 있음
  • StatefulSet: stateful 애플리케이션(예: 데이터베이스)을 배포할 때 사용
    각 복제본에 고유한 네트워크 ID와 스토리지가 할당되며, 이를 통해 상태를 유지

stateless app vs stateful app

  • stateless 클라이언트의 상태를 저장하지 않으며, 모든 요청이 독립적
    스토리지를 공유하면서 여러 복제본이 동시에 동일한 작업을 수행

  • stateful 클라이언트의 상태를 유지하며, 다음 요청에서 이 정보를 필요로 할 수 있음
    예를 들면 데이터베이스 서버는 상태를 유지하며, 특정 클라이언트에 대한 데이터를 지속적으로 저장하고 필요할 때 이를 제공
    복제본이 고유한 스토리지를 가지며, 주로 상태를 저장하는 애플리케이션에 사용

  • DaemonSet: 클러스터 내의 각 노드에 특정한 데몬(예: 로그 수집기)을 배포할 때 사용

  • Job: 특정 작업을 완료할 때까지 실행되는 일회성 작업을 배포할 때 사용
    resource 타입.api 그룹/이름 pod개수컨트롤러(예: Deployment, ReplicaSet)는 Desired(원하는 Pod 수)와 Current(현재 실행 중인 Pod 수)를 일치시키는 역할label이 일치해야함Replicaset 독립적으로 사용할때만 사용
    Replication controller 대신 ReplicaSet을 사용
    실질적으로는 Deployment와 StatefulSet을 사용
    create가 적용되지 않기 때문에 yaml 명세서를 생성해서 사용NodePort가 가장 심플하면서 비용이 적게 드는 방식

0개의 댓글