DevOps 35

파일시스템에 볼륨 추가하기

apt-mirror 서버 구성에 용량이 800GB 정도 필요한데 멋도 모르고 진행하다가 루트 디렉토리 파일시스템 사용률이 100%가 되었다. 일단은 1TB 외장디스크 장치를 apt mirror 서버에 추가해주었다. 파일시스템을 정리하고 볼륨을 생성해서 용량을 확보해보자. 1. 공간확보하기 루트 디렉토리가 100%이므로 우선 이 문제부터 해결해주어야 한다. apt-mirror의 패키지를 설치하는 과정에서 /var/spool/apt-mirror 디렉토리에 데이터가 쌓여 파일시스템 사용률 100%가 되었으므로 정리해준다. 어차피 apt-mirror를 다시 설치해야해서 나는 그냥 삭제를 해서 공간을 확보하였다. 민감한 환경이면 또 다른 공간에 백업을 추천한다. 2. 볼륨 그룹 확장하기 볼륨그..

DevOps/Linux 15:23:54

Kubernetes 네트워크 동작원리

쿠버네티스 네트워크의 핵심 개념은 2가지이다. 1) kube-proxy2) CNI ( Container Network Interface ) kube-proxy는 서비스에서 파드로 트래픽을 이동시키는 역할을 하고 CNI는 서로 다른 노드 간의 트래픽 이동을 담당한다. 만약 A 노드에 배포된 kube-proxy가 B 노드에 있는 파드로 트래픽을 이동시킨다고 하면 서로 다른 노드이므로 CNI를 타고 트래픽을 이동하는 것이다. 정리하면트래픽 이동을 위한 룰은 kube-proxy가 담당하고 실제 노드 간 트래픽 이동은 CNI가 담당하는 것이다. kube-proxy kube-proxy는 iptables라는 tool을 이용하여 netfilter가 바라보는 룰을 조작하는 프로그램이다. 리눅스 서버는 netfil..

DevOps/K8S 2025.06.18

Linux 환경에서 간단한 컨테이너 직접 만들어 보기

Linux에서 컨테이너를 만들어 보자. 컨테이너의 핵심은 '격리(isolation)'이다. 여기서 2가지 격리를 구현해야 한다. 1) 파일시스템 격리 -> chroot2) 프로세스 격리 -> unshare ( namespace ) 파일시스템 격리 파일시스템 격리는 chroot로 구현된다. chroot는 root의 경로가 변경된 또 다른 쉘(shell)을 띄우는 것이다. 터미널로 접속하면 우리는 정해진 위치를 root로 하여 쉘(shell) 프로그램을 구동하여 터미널에 접속한다. chroot는 또 다른 경로를 root로 하여 쉘을 구동한다. 쉘이 바라보는 루트는 달라지지만 쉘이 커널로 전송하는 경로는 동일하다. 그러므로 달라진 루트 위치에 bin폴더, proc 폴더, lib 폴더를 복사 및 생성하면..

DevOps/Linux 2025.06.12

[K8S] Containerd에 Registry 설정하기 ( with Harbor )

Containerd로 생성된 컨테이너가 특정 Registry에서 이미지를 가져오도록 설정해보자. https://github.com/containerd/containerd/blob/main/docs/cri/registry.md#using-self-signed-certificates containerd/docs/cri/registry.md at main · containerd/containerdAn open and reliable container runtime. Contribute to containerd/containerd development by creating an account on GitHub.github.com 공식문서에는 deprecated된 방법이 메인으로 작성되어 있어서 혼란이 있을..

DevOps/K8S 2025.06.04

[Linux] CLI로 Disk의 파티션 및 파일시스템 생성하기

부팅디스크로 Linux OS를 설치하는 과정에서 파티션을 나누거나 파일시스템을 생성할 수 있으나,이미 설치된 환경에서 새로이 파티션과 파일시스템을 생성해야 하는 경우도 있다.  이런 경우,CLI로 Disk의 파티션과 파일시스템을 생성해주어야 한다.   Device 조회하기 Device : /dev/nvme0n1, Partition : /dev/nvme0n1p1Device : /dev/nvme1n1, Partition : /dev/nvme1n1p1, /dev/nvme1n1p2, /dev/nvme1n1p3, root@infra-test2:/# fdisk -l// loop device 생략 ...Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 se..

DevOps/Linux 2025.03.13

[Linux] 좀비 프로세스란? ( Zombie Process, Defunct Process )

좀비 프로세스는 프로세스 테이블에 종료상태(Exit Status)로 남아있는 자식 프로세스(Child Process)를 의미한다. 자식 프로세스는 부모 프로세스에 의해 정리되어야 한다.  부모 프로세스는 Wait 시스템 함수를 호출하여 자식 프로세스가 종료를 체크하다가,자식프로세스가 종료되면 프로세스테이블에서 자식 프로세스를 수거(repeaed)한다. 그러므로모든 프로세스는 부모 프로세스가 프로세스테이블에서 수거하기 전까지는, 종료되면 좀비 프로세스로 남아있는다. ( 수거 작업이 빠르게 진행되어 좀비프로세스 누적이 눈에 보이지 않는 것 뿐... )  좀비 프로세스 찾는 방법#ps 명령어ps -ef | grep defunct | grep -v grepps aux | egrep "Z|defunct"#top ..

DevOps/Linux 2025.03.11

[K8S] Kubernetes 동작원리

Docker는 컨테이너 기술의 혁명을 가져왔다.   [Docker] 컨테이너란 무엇일까?Docker 아이콘은 고래 하나가 여러 개의 컨테이너를 싣고 있는 모습이다. 여기서, 고래는 '컴퓨터'이고 컨테이너는 '격리된 프로세스'이다. 도커가 혁명적인 이유는 컨테이너라는 환경분리를 리눅lordofkangs.tistory.com  리눅스 기술( cgroups, namespace)을 활용하여 리소스를 독립적으로 격리하고 할당이 가능해지자, 컨테이너(Container)라는 개념이 등장하였다. 하나의 컴퓨터 안의 여러 개의 컨테이너가 만들어졌고 모두 독립적으로 활동하였다. 이렇게 되자, 수많은 컨테이너를 관리하는 기술이 필요해졌는데, 그것이 바로 쿠버네티스(Kubernetes)이다.  쿠버네티스는 여러 대의 컴퓨터(..

DevOps/K8S 2024.02.25

[Docker] 컨테이너란 무엇일까?

Docker 아이콘은 고래 하나가 여러 개의 컨테이너를 싣고 있는 모습이다. 여기서, 고래는 '컴퓨터'이고 컨테이너는 '격리된 프로세스'이다. 도커가 혁명적인 이유는 컨테이너라는 환경분리를 리눅스 기술로만 이루어 냈다는 점이다. 도커가 존재하기 전에는 VM ( VirtualMachine ) 기술을 활용하였다. VM은 Hypervisor를 활용하여, 물리적으로 한 대의 OS 위에 가상의 Guest OS 여러 대를 실행 및 관리하는 구조이다. 무거운 커널이 여러 대가 동작하니, 그 위에서 동작하는 APP의 성능은 당연히 떨어질 수 밖에 없다. 도커는 커널의 존재를 하나로 줄였다. 커널이 하나만 존재할 수 있는 이유는 namespace와 cgroups를 활용하여 리소스를 독립적으로 분리하였기 때문이다. nam..

DevOps/DOCKER 2024.02.24