전체 글

[kubernetes] kube-proxy
kube-proxy는 클러스터의 각 노드에서 실행되는 네트워크 프록시로 쿠버네티스 서비스 개념의 일부를 구현한다. kube-proxy는 노드에서 네트워크 규칙을 유지한다. 이러한 네트워크 규칙은 클러스터 내부 또는 외부의 네트워크 세션에서 파드로의 네트워크 통신을 허용한다. 운영체제 패킷 필터링 계층이 사용 가능한 경우 kube-proxy는 이를 사용하지만, 그렇지 않으면 kube-proxy가 트래픽 자체를 전달한다. IPVS - IP Virtual Server kube-proxy가 네트워크를 관리하는 방법은 userspace, iptables, ipvs 3가지가 있다. 초기에는 userspace가 기본 모드였고 현재는 iptables가 기본 모드이다. 그리고 iptables에서 ipvs 모드로 넘어가려..

netfilter, iptables
netfilter - The Packet Filtering Framework for Linux 리눅스 커널 모듈로서 네트워크 패킷을 처리하기 위한 프레임워크이다. netfilter는 패킷 필터링, 네트워크 주소 변환 및 포트 변환을 위한 다양한 기능 및 작업을 제공한다. 이러한 기능은 네트워크를 통해 패킷을 전달하고 패킷이 네트워크의 중요한 위치에 도달하는 것을 방지하는 데 필요한 기능을 제공한다. iptables - Packet Mangling Tool 패킷을 필터링하거나 변환할 수 있는 방화벽 규칙을 정의하기 위한 테이블 기반 시스템을 제공한다. NIC을 거쳐 유입되는 모든 네트워크 패킷을 netfilter에 등록된 룰을 거쳐 제어된다. iptables를 활용하면 특정 조건에 부합하는 패킷을 드랍하거..

[kubernetes] Kubernetes Networking Model
해당 내용은 아래 포스팅 내용을 번역한 것입니다. https://sookocheff.com/post/kubernetes/understanding-kubernetes-networking-model/ A Guide to the Kubernetes Networking Model Kubernetes was built to run distributed systems over a cluster of machines. The very nature of distributed systems makes networking a central and necessary component of Kubernetes deployment, and understanding the Kubernetes networking model wil..
[Linux] 로그인쉘과 비로그인쉘
shopt login_shell 명령어로 로그인쉘 여부를 확인할 수 있다. 로그인쉘과 비로그인쉘의 차이점은 환경설정 파일을 적용하는 데 있다. 로그인쉘의 경우 /etc/profile, ~/.bash_profile 의 환경설정 파일에 영향을 받지만 비로그인쉘의 경우 영향을 받지 않는다. 로그인 쉘 Linux는 사용자가 자신의 계정에 로그인할 때 로그인쉘을 시작한다. 로그인쉘은 로그인할 때 수행되는 기본 쉘이다. logout 명령으로 로그아웃하여 쉘을 종료할 수 있다. 터미널을 통해 SSH를 통해 리눅스 시스템에 접근할 때 “su -” 명령어를 통해 user를 바꿀 때 다음과 같은 순서로 명령을 실행한다. /etc/profile 을 실행 /etc/profile은 /etc/profile.d 안에 있는 스크립트..
[Linux] chmod
chmod 리눅스(Linux)는 하나의 컴퓨터를 여러 사람이 사용할 수 있는 멀티유저 운영체제(OS)이기 때문에 권한 관리가 매우 중요하다. 리눅스 파일, 디렉토리 권한 확인 ls -l 명령을 사용하여, 권한을 확인할 수 있다. snchoi@snchoi:/usr/local/bin$ ls -al 합계 354452 drwxr-xr-x 2 root root 4096 6월 9 15:39 . drwxr-xr-x 11 root root 4096 5월 9 11:39 .. -r-xr-xr-x 1 root root 140376278 5월 9 18:52 argocd -rwxr-xr-x 1 root root 12737304 2월 13 15:00 docker-compose -rwxr-xr-x 1 root root 604500..
VM과 컨테이너
근본적인 차이점은, VM은 커널을 포함해 운영체제 전체의 복사본을 실행하는 반면 컨테이너는 호스트 컴퓨터의 커널을 공유한다는 점이다. 1. 컴퓨터 부팅 과정 BIOS 라고 하는 초기 프로그램을 실행한다. BIOS는 가용 메모리양을 파악하고, 네트워크 인터페이스들을 식별하고, 그 밖에 디스플레이나 키보드, 저장 장치 같은 여러 장치들을 탐지한다. 요즘은 이런 기능의 상당 부분을 UEFI가 담당하고 있다. 하드웨어 탐지 완료 후, 시스템은 부트로더를 실행한다. 부트로더는 운영체제의 커널 코드를 메모리에 적재해서 실행한다. 커널 코드는 응용 프로그램보다 높은 수준의 권한으로 실행된다. 커널이 메모리나 네트워크 인터페이스 등에 접근할 수 있는 것은 그런 권한 수준 덕분이다. 커널 코드는 CPU에서 기계어 명령의..
[Linux] 리눅스 능력 (getcaps)
특정 프로세스에 주어진 능력들은 getpcaps 명령으로 볼 수 있다. 보통의 경우 비루트 사용자가 실행한 프로세스에는 아무런 능력도 배정되지 않는다. $ snchoi@snchoi:~$ ps PID TTY TIME CMD 1905 pts/0 00:00:00 bash 3577 pts/0 00:00:00 ps $ snchoi@snchoi:~$ getpcaps 1905 1905: = 최소 권한 원칙에 따라, 프로세스나 파일에 능력을 부여할 때는 작업에 꼭 필요한 능력들만 부여하는 것이 바람직하다. 컨테이너 실행 시 컨테이너에 부여할 능력들을 설정할 수 있다.
[Linux] 리눅스 setuid, setgid
보통의 경우 사용자가 파일을 실행하면 해당 프로세스는 그 사용자의 ID로 실행된다. 그러나 파일에 setuid 비트를 설정해 두면 프로세스는 파일 소유자의 ID로 실행된다. $ snchoi@snchoi:~$ ls -l `which sleep` -rwxr-xr-x 1 root root 26984 Feb 7 2022 /usr/bin/sleep $ snchoi@snchoi:~$ cp /usr/bin/sleep ./mysleep $ snchoi@snchoi:~$ ls -l ./mysleep -rwxr-xr-x 1 snchoi snchoi 26984 Jul 4 02:11 ./mysleep 출력에서 보듯이 복사본 mysleep의 소유자는 snchoi 라는 사용자이다. # 복사본을 루트계정으로 실행 $ snchoi@..