전체 글 316

[k8s] Pod

Pod는 Kubernetes에서 가장 기본적인 배포 단위로, 하나 이상의 컨테이너를 포함할 수 있다. 같은 Pod에 있는 컨테이너들은 동일한 네트워크와 저장소를 공유한다. 예제다음은 Kubernetes에서 nginx라는 이름의 Pod를 생성하고, 상태를 확인하며, 컨테이너에 접근하는 과정이다Pod 생성nginx라는 이름의 Pod가 nginx 이미지를 사용하여 생성된다.$ k run nginx --image=nginxpod/nginx createdPod 상태 확인Pod가 생성되었지만 아직 컨테이너가 준비되지 않았다. ContainerCreating 상태는 컨테이너가 생성되는 중임을 나타낸다.$ k get podNAME READY STATUS RESTARTS AGEngin..

DevOps/K8S 2024.08.29

[k8s] NodePort

NodePort는 Kubernetes 서비스 유형 중 하나로, 클러스터의 모든 노드에서 지정된 포트를 열어 외부에서 접근할 수 있도록 해준다. NodePort 유형의 서비스는 다음과 같은 방식으로 작동한다.NodePort 할당: NodePort 서비스가 생성되면, Kubernetes는 클러스터 내의 모든 노드에서 동일한 포트를 열어둔다. 이 포트는 30000-32767 범위 내에서 할당된다. 트래픽 라우팅: 클러스터 외부의 클라이언트가 노드의 외부 IP와 NodePort를 통해 접속하면, 해당 요청은 Kubernetes의 kube-proxy에 의해 처리된다. kube-proxy는 요청을 적절한 Pod로 라우팅 하며, 이 Pod는 클러스터 내 어디에 위치하든 접근할 수 있다.로드 밸런싱: kube-prox..

DevOps/K8S 2024.08.29

[k8s] Namespace

네임스페이스는 쿠버네티스(Kubernetes) 클러스터에서 리소스를 그룹화하고 논리적으로 구분하는 방법을 제공하는 기능이다. 네임스페이스를 사용하면 동일한 클러스터 내에서 서로 다른 프로젝트, 팀, 또는 환경(예: 개발, 테스트, 프로덕션) 간에 리소스를 격리할 수 있다. 네임스페이스의 주요 기능리소스 격리:네임스페이스는 쿠버네티스 리소스를 논리적으로 구분하여 서로 간섭하지 않도록 한다. 예를 들어, 동일한 이름의 파드(Pod)나 서비스(Service)를 다른 네임스페이스에 중복 생성할 수 있다.접근 제어:RBAC(Role-Based Access Control)을 통해 네임스페이스별로 권한을 설정할 수 있다. 이를 통해 특정 사용자나 그룹이 특정 네임스페이스에서만 리소스를 관리하도록 제한할 수 있다.리소..

DevOps/K8S 2024.08.28

[k8s] Service

서비스는 쿠버네티스 클러스터 내의 여러 파드를 하나의 엔드포인트로 묶어주는 역할을 한다. 파드들은 클러스터 내에서 동적으로 생성되고 제거되기 때문에 IP 주소가 변할 수 있지만, 서비스는 일관된 IP 주소와 DNS 이름을 제공하여 파드들의 변경에도 불구하고 안정적인 네트워크 접속을 보장한다. 서비스의 유형ClusterIP기본 서비스 유형으로, 클러스터 내부에서만 접근 가능한 IP 주소를 제공한다.클러스터 외부에서는 접근할 수 없으며, 내부 통신에 주로 사용된다.마이크로서비스 간의 내부 통신, 데이터베이스 접근 등 내부 네트워크에서의 통신.NodePort외부에서 노드 IP의 특정 포트(:)로 들어오는 요청을 감지하여, 해당 포트와 연결된 파드로 트래픽을 전달하는 유형의 서비스다.NodePort 서비스를 생..

DevOps/K8S 2024.08.28

[k8s] 배포 흐름

쿠버네티스는 선언적인 시스템(Declarative System)으로, 사용자가 원하는 시스템의 상태를 정의하고, 시스템이 이 상태를 유지하도록 하는 방식으로 동작한다.API 서버쿠버네티스 API 서버는 클러스터의 중앙 API 엔드포인트로, 사용자와 클러스터 간의 인터페이스 역할을 한다.사용자가 쿠버네티스 클러스터에 요청을 보내면, API 서버가 이 요청을 처리하고 클러스터의 상태를 업데이트한다.API 서버는 모든 리소스의 현재 상태를 관리하고, 이를 etcd에 기록한다.etcdetcd는 쿠버네티스의 분산 키-값 저장소로, 클러스터의 구성 정보를 영구적으로 저장한다.모든 쿠버네티스 리소스의 상태는 etcd에 저장되며, API 서버는 이 정보를 읽고 쓴다.etcd는 클러스터의 현재 상태와 목표 상태를 저장한..

DevOps/K8S 2024.08.28

[VM] 네트워크 설정 방식

브리지 모드 (Bridged Network)브리지 모드는 가상 머신(VM)이 호스트 네트워크와 동일한 서브넷에 배치되며, 네트워크 장비는 VM을 물리적 장치와 동일하게 처리하는 네트워크 구성 방식이다. VM의 MAC 주소와 IP 주소는 호스트 네트워크 내의 다른 장치와 동일하게 취급된다.MAC 주소: VM은 가상 네트워크 어댑터를 통해 호스트의 물리적 네트워크 인터페이스(예: Ethernet 카드, Wi-Fi 어댑터)와 연결된다. VM의 MAC 주소는 물리적 네트워크 상의 다른 장치들과 동일하게 사용된다.IP 주소: VM은 호스트 네트워크의 DHCP 서버로부터 IP 주소를 할당받거나, 수동으로 IP 주소를 설정할 수 있다. 이 IP 주소는 호스트 네트워크의 서브넷 내에 위치한다.트래픽 처리: VM이 전송..

DevOps/VM 2024.08.27

[Linux] 파일 시스템(/etc/fstab)

/etc/fstab 파일은 리눅스 시스템에서 파일 시스템을 부팅 시 자동으로 마운트 할 수 있도록 설정하는 중요한 구성 파일이다. 이 파일에는 시스템의 각 파일 시스템, 스왑 공간, 네트워크 파일 시스템(NFS) 등을 정의하고, 부팅 시 어떤 위치에 어떻게 마운트 할지를 결정한다.만약 이 파일의 구성이 잘못되어 버린다면 부탕시 파일시스템 마운트 과정에서 부팅이 멈추어 버릴것이다. /etc/fstab 파일의 형식각 라인은 특정 파일 시스템 또는 스왑 공간을 나타내며, 다음과 같은 필드를 포함한다:파일 시스템 (UUID 또는 디바이스 경로):예: UUID=0400035f-3725-4df6-822a-4d41da31ff41파일 시스템의 고유 식별자(UUID) 또는 장치 파일 경로(예: /dev/sda1)를 지정..

CS 2024.08.26

[Linux] 호스트네임 관리와 네트워크 설정

시스템 호스트네임 관리리눅스 시스템에서 호스트네임은 시스템을 네트워크 상에서 식별하는 중요한 요소이다. 호스트네임은 네트워크 통신에서 다른 컴퓨터와의 연결 및 식별에 사용된다. 호스트네임 설정hostnamectl 명령어는 시스템의 호스트네임을 설정하거나 변경하는 데 사용된다. 단순히 시스템의 이름을 설정하는 것 이상으로, 이 명령어는 시스템이 재부팅되더라도 설정된 호스트네임을 유지하게 하며, 네트워크 상에서의 시스템 정체성을 확립한다.새로운 호스트네임을 설정하려면 다음과 같은 명령어를 사용한다.sudo hostnamectl set-hostname new-hostname이 명령어를 실행하면, 시스템의 호스트네임이 new-hostname으로 변경된다. 이 변경 사항은 즉시 적용되며, 시스템의 네트워크 식별자..

CS 2024.08.26

[Linux] 스왑 공간

스왑 공간은 리눅스 시스템에서 물리적 메모리(RAM)가 부족할 때, 디스크의 일부를 임시 메모리로 사용하는 공간이다. 시스템의 RAM이 가득 차면 사용하지 않는 데이터나 프로그램의 일부를 스왑 공간으로 옮겨 RAM을 확보하게 된다. 이 과정을 스왑아웃(swap out)이라고 하며, 스왑 공간에서 다시 RAM으로 데이터를 가져오는 과정은 스왑인(swap in)이라고 한다.스왑은 크게 두 가지 형태로 존재할 수 있다:스왑 파티션: 디스크의 일부를 스왑 전용 파티션으로 할당한 것.스왑 파일: 일반 파일 시스템에서 파일로 존재하는 스왑 공간. 스왑 공간의 역할메모리 부족 시 도움: RAM이 부족해지면 스왑 공간을 활용하여 시스템의 안정성을 유지할 수 있다.대용량 작업 지원: 스왑 공간을 활용하면 대규모 데이터 ..

CS 2024.08.26

[K8s] 설치 시 스왑 비활성화의 필요성

Kubernetes는 컨테이너 관리와 리소스 할당을 엄격하게 제어하는 시스템이다. 스왑이 활성화된 경우, Kubernetes의 메모리 관리 로직이 예상대로 작동하지 않을 수 있으며, 이는 시스템 불안정성으로 이어질 수 있다.스왑 비활성화 이유메모리 관리 일관성: Kubernetes는 노드의 물리적 메모리만을 기준으로 리소스를 할당하며, 스왑 메모리를 포함하지 않는다. 스왑이 활성화된 경우 메모리 부족 상황을 정확히 감지하지 못할 수 있다.안정성: 스왑 사용으로 인해 컨테이너의 메모리 사용량이 증가하면, Kubernetes가 이를 적절히 관리하지 못할 수 있으며, 이는 전체 클러스터의 안정성에 부정적인 영향을 미칠 수 있다.스왑 비활성화 방법Kubernetes 설치 전에 스왑을 비활성화하려면 다음 명령어를..

DevOps/K8S 2024.08.26
728x90