본문 바로가기

container12

PID Namespace / Container 기초, Process, 격리, 네임스페이스, 컨테이너, 간단정리, Linux, Init process Pids in Linux 프로세스가 생성될 때 fork syscall을 통해 pid가 부모로 전달 커널에 의해 생성된 첫 프로세스는 pid1을 가짐 모든 프로세스는 부모를 계속 타고 올라가면 pid1을 만나고, 해당 프로세스가 죽으면 시스템 재부팅이 필요 (Init process) 이렇듯 Linux namespace는 unshare syscall을 통해 생성되고, 해당 namespace로 바로 이동하는 것 하지만 PID namespace는 바로 이동하지 않음 완벽히 분리된 구조라기보단 fork로 계층화된 process이고, PID namespace안에 따로 pid1이 존재하는 구조 PID Namespace PID Namespace에서의 pid1이 죽으면 namepsace가 죽음 signal handler.. 2023. 1. 13.
Mount Namespace / Container 기초, 파일시스템, 마운트, 네임스페이스, 컨테이너, 간단 정리 Mount Namespace 전에 공부할때 확인했듯이 리눅스는 루트 파일 시스템으로 구성 루트로 시작하는 계층 구조 파일, 디렉토리 제어 정보 생성, 삭제, 마운트 등의 기능을 제공 Mount namespace는 각 프로세스에 격리된 파일시스템 마운트 포인트를 제공 VFS(virtual filesystem)으로 데이터 구조, 저장 매체를 추상화하여 사용 가능 매체의 특징에 따라 파일시스템을 어떻게 나눌지 결정하는 것이 많음 unshare 명령어를 통해 Mount namespace 생성 가능 보통 이미지를 통해 mountns를 관리하는데, 중복된 이미지 때문에 리소스 낭비가 심할 수 있음 Union Mount 중복된 이미지로 인한 리소스 낭비를 해결하기 위해 사용 복수의 filesystem을 하나로 mou.. 2023. 1. 10.
cgroups / 컨테이너 기초, 프로세스 제어, 자원 제한 Container는 보통 리눅스의 프로세스로 실행이 된다. 한 프로세스가 다른 프로세스들에게 영향을 끼치면 안되기 때문에 cgroup을 통해서 제한을 할 수 있다. cgroup 제어그룹, 구조 리눅스 커널은 보통 /sys/fs/cgroup에서 위계구조를 갖고 있음 /sys/fs/cgroup$ ls blkio cpu,cpuacct freezer memory... memory쪽을 자세히 보면 /sys/fs/cgroup$ ls memory/ cgroup.clone_children memory.memsw.limit_in_bytes cgroup.event_control memory.memsw.max_usage_in_bytes cgroup.procs memory.memsw.usage_in_bytes cgroup.s.. 2023. 1. 3.
Container 사전지식 / 리눅스, 권한, 컨테이너, 파일, 시스템콜 Kubernetes와 그 구성요소 중 하나인 Container를 공부하기 전에 너무 막막했던 적이 있다. Container가 뭔지 공부하기 전에 기본적으로 알아두면 좋은 것들을 찾아 정리해봤다. 시스템콜 컨테이너는 대부분 리눅스OS를 이용하고 파일접근, 네트워크이용 등등이 필요하면 커널에 접근이 필요 사용자가 커널에 요청을 보낼 때 시스템콜 인터페이스를 통해 호출 유저가 프로그래밍을 하며 확인해볼 수 있는 것으로 Golang syscall도 그 중 하나 https://pkg.go.dev/syscall syscall package - syscall - Go Packages StringByteSlice converts a string to a NUL-terminated []byte, If s contains.. 2023. 1. 1.
Kubernetes Components (Worker Node) / 쿠버네티스 컴포넌트, 워커 노드, 노드 컴포넌트 Kubernetes Node Components Control-plane component를 볼때 확인했던 Kubernetes component 구성요소이다. Worker node component로 해당되는 것들은 그림에 따로 빨간색으로 표시해둔 것들이다. - kubelet 각 노드에서 실행되는 agent 노드의 파드, 컨테이너들의 실행을 보장하도록 관리해주는 컴포넌트 파드의 상태(스케줄링, 모니터링, 종료 등)를 kube-apiserver에 지속적으로 전달 - kube-proxy 각 노드에서 실행되는 네트워크 프록시, 서비스의 구현부 네트워크 규칙을 관리, 클러스터 외부에서 파드와 통신이 가능하도록 함 원래는 userspace에서 proxy동작을 하기때문에 이름이 이렇게 붙여졌지만, kernelspa.. 2022. 12. 28.
개발 이야기 / 블로그 목표, kubernetes, container, golang, 개발자 간단하게.. 내가 티스토리를 쓰면서 어떤 내용을 쓰고싶은지 생각해봤다.. 그저 그런 개발 이야기만 쓰는 것이 아닌.. 내가 직접 공부하며 정리하거나 궁금했던 것들을 짧던 길던 간단하게 나눠서 적어가는 것이 목표이다. 아직은 글이 많이 없어서 카테고리별로 나눠가면서 쓸 정도는 아니기 때문에 그때그때 내가 기록하고 싶은 것들을 적을 예정이다. 일단 집중하고 싶은 분야는 kubernetes, container, golang이다. 공부도 열심히 하면서 기록하면 되돌아볼때 기억이 잘 날 것 같다. 다시 정리하면서 내가 부족한 부분도 다시 알게되고, 궁금하면 더 찾아보고~ 첫 글은.. container공부할때 좀 어려웠던걸로 해봐야하나..? 2022. 12. 24.
반응형