본문 바로가기

kubernetes(cka)

(18)
[cka] Storage (PV, PVC) Docker StorageDocker 는 이미지를 왼쪽과 같이 처음 빌드 했다고 하면, 각 상태별로 layer를 기록해 두고, 다음에 레이어 4부터가 바꼈다고하면이전꺼는 그대로 쓰고 바뀐 부분만 빌드 해서 용량을 차지함. 빌드 속도도 빨라짐. 위처럼 도커에서 이미지를 사용해서 컨테이너를 만들면 같은 이미지를 사용하는건 같은 이미지 레이어를 사용함. 공통 이미지 레이어 말고 각각의 컨테이너 레이어 부분의 용량만 추가해서 사용함.예를 들어서 • 이미지 레이어: 380MB (두 컨테이너가 공유)• 첫 번째 컨테이너의 쓰기 레이어: 5MB• 두 번째 컨테이너의 쓰기 레이어: 3MB총차지하는 공간은 : 380MB + 5MB + 3MB = 388MB  이렇게 됨.또 예를들어 그럼 컨테이너에서 공통레이어 파일에 속한..
[cka, kubernetes] CNI, cluster network 컨테이너 네트워킹 인터페이스(CNI)네트워크 네임스페이스와 브리지 네트워크네트워크 네임스페이스: 시스템 내에서 격리된 네트워크 환경을 생성.브리지 네트워크: 여러 네임스페이스를 연결하는 가상 네트워크 장치.가상 케이블: 가상 인터페이스를 통해 네임스페이스와 브리지 네트워크를 연결.IP 할당 및 NAT 설정: 네임스페이스에 IP를 할당하고, 외부 통신을 위해 NAT 또는 IP 마스커레이드를 설정.Docker의 브리지 네트워크Docker는 기본적으로 브리지 네트워크를 사용하여 컨테이너 간 통신을 설정.Docker는 브리지 네트워크를 통해 컨테이너를 호스트 네트워크에 연결.다양한 컨테이너 솔루션의 네트워킹 문제 해결여러 컨테이너 솔루션(예: Rocket, Mesos, Kubernetes)은 유사한 네트워킹 문..
[cka, kubernetes] network 사전학습 네트워킹 기초 요약네트워크의 기본 개념스위칭: 같은 네트워크 내의 시스템 간 통신을 가능하게 함. 스위치는 네트워크 내에서 패킷을 전달하는 장치입니다.라우팅: 서로 다른 네트워크를 연결하고 통신을 가능하게 함. 라우터는 여러 네트워크를 연결하고 패킷을 올바른 네트워크로 전달합니다.게이트웨이: 다른 네트워크로의 출입구 역할을 함. 네트워크의 경계에 위치하여 트래픽을 다른 네트워크로 보내는 역할을 합니다.인터페이스: 네트워크 연결을 위한 물리적 또는 가상 장치입니다.주요 명령어ip link: 호스트의 인터페이스 목록 확인 및 수정ip addr: 인터페이스에 할당된 IP 주소 확인ip route: 라우팅 테이블 확인 및 수정라우터 설정라우터를 통해 서로 다른 네트워크 간의 통신을 설정합니다.네트워크 A와 B를..
[Kubernetes, cka] 15. Cluster Maintenance OS Upgrades클러스터 내 노드를 유지 목적으로 껐다켜야하는 경우가 생길수 있음일반적으로 워커 노드가 종료되면 pod-eviction-timeout값에 따라(기본5분) 기다리고, 그게 넘으면 pod를 종료하고 죽은것으로 간주해서 다른 노드에서 다시 생성됨. 그래서 5분 넘을거 같으면 따로 아래처럼 작업 해줘야함.kubectl drain node-1node-1에 있는 resource들을 다 뺌. 종료되고 다른 노드로 다 옮겨감. 그 이후 필요하면 리붓같은거 하면됨.kubectl uncordon node-1위에 명령을 하면 다시 노드를 스케줄 가능하게 할수 있음. 근데 uncordon하는게 기존 배치된 파드들을 재배치하진 않음. 새로 생성되는것만 스케줄링 해줌 레플리카셋이아닌 파드가 있는데 drain하..
[Kubernetes, cka] 14. Init Containers / Self Healing application Init Containers pod 를 정의할때 처음에 한번만 실행되는 컨테이너를 넣을수 있음. 여러개 정의된다면 순차적으로 실행됨. Init Container 의 키로 정의하면됨. Self Healing application 쿠버네티스(Kubernetes)에서는 ReplicaSets와 Replication Controllers를 통해 애플리케이션이 자가 치유(self-healing)할 수 있는 환경을 지원함. 이러한 메커니즘은 파드(Pod) 내부의 애플리케이션이 실패했을 때 자동으로 파드를 재생성하여 애플리케이션의 복제본(replicas)이 항상 일정 수준으로 유지되도록 보장합니다. 근데 이건 cka 범위 벗어나서 나중에 ckad 에서!
[Kubernetes, cka] 13. Env 설정 / ConfigMap 활용 / Secretes 환경변수를 기입하는 방법으로 그냥 yaml 파일에 Env로 넣어도 되지만 configmap을 띄워서 환경변수를 공통적으로 쓸수 있다. 각 yaml에 환경변수 사용하기 apiVersion: v1 kind: Pod metadata: name: debug-pod spec: containers: - name: debug-container image: debug-image env: - name: LOG_LEVEL value: "DEBUG" 위와같이 env 에서 name 과 value를 넣어줌 만약 config map을 만든다면 bash command 로는 kubectl create configmap app-config --from-literal=app-color=blue 이렇게 할수 있고 yaml로 한다면 api..
[Kubernetes, cka] 12. commands 왼쪽 도커에서의 entrypoint 가 k8s의 yaml파일command로, cmd가 args로 감 * 추가 설명 CMD는 사용자가 컨테이너를 실행할 때 기본 명령을 제공하되, 사용자가 쉽게 오버라이드할 수 있게 ENTRYPOINT는 컨테이너가 실행될 때 반드시 실행되어야 하는 명령을 설정하며, 컨테이너를 특정 애플리케이션의 실행 파일처럼 사용하게 합니다. ENTRYPOINT로 설정된 명령은 오버라이드하기가 더 어렵 둘 사이의 주된 차이는 사용자가 docker run을 사용하여 컨테이너를 실행할 때 어떻게 명령어가 처리되는지와 관련. ENTRYPOINT를 사용하면 애플리케이션을 더 엄격하게 제어할 수 있으며, CMD는 더 유연한 설정을 제공
[Kubernetes, cka] 11. Rolling updates / Rollbacks 롤링 업데이트는 deployment에서 이미지 번경같은걸로 업데이트를 했을때 pod를 하나씩 내리고 올리고 하는 방식으로 업데이트 하는 거. 업데이트 할때마다 revision이 생기는데 이걸로 변경사항을 추적해서 필요시에 그 버전으로 롤백도 할수 있음 전략 Recreate: 모든 인스턴스를 동시에 삭제한 후 새 버전의 인스턴스를 생성. 이 방법은 일시적인 다운타임이 발생 Rolling Update: 인스턴스를 점진적으로 업데이트하여 어느 시점에도 애플리케이션이 사용 가능하도록. 기본 전략 update할땐 kubectl apply -f 로 하면 되고 아니면 kubectl set image 로도 할수 있음 # 예시 kubectl set image deployment/ myapp deployment nginx..
[Kubernetes, cka] 10. Monitoring & Logging * Monitoring 모니터링 솔루션은 여러개 있지만 현재는 주로 Metrics Server로함 githhub 코드 가져와서 설치 하면 됨. 메트릭스 확인 노드 메트릭스 확인: kubectl top node 명령으로 각 노드의 CPU 및 메모리 사용량을 확인할 수 있음 파드 메트릭스 확인: kubectl top pod 명령으로 각 파드의 성능 메트릭스를 확인할 수 있음 * Logging 컨테이너가 표준 출력(Standard Output)과 표준 에러(Standard Error)로 보내는 로그를 수집 Pod 내의 컨테이너가 생성하는 로그도 표준 출력과 표준 에러를 통해 관리 kubectl logs 명령으로 특정 Pod의 로그를 조회. -f 옵션을 사용하면 로그를 실시간으로 스트리밍 Pod가 다수의 컨테이..
[Kubernetes, cka] 09. Scheduling * Multi Scheduling클러스터에서 하나의 스케줄러만 사용하는게 아니라 목적에 따라서 직접 만든 스케줄러를 쓰는것과 같이 여러개의 스케줄러를 사용할수 있음. 그리고 나중에 pod 띄울때는 schedulerName 필드에다가 스케줄러를 지정하면됨. * 스케줄링 과정스케줄링 큐(Scheduling Queue): 대기 중인 Pod가 우선순위에 따라 정렬됩니다.필터링(Filtering): Pod를 실행할 수 없는 노드가 제거됩니다.스코어링(Scoring): 각 노드가 점수를 받으며, 가장 높은 점수를 받은 노드에 Pod가 배치됩니다.바인딩(Binding): Pod가 최종적으로 선택된 노드에 바인딩됩니다.