전체 분류 보기 500

[CKA] 25. Docker Network 구조

개요 k8s의 container runtime 중 하나인 docker의 network 구성 방식을 알아보겠습니다. Docker의 network 종류 None Network network 통신이 불가능한 container를 생성할 때 사용합니다. 외부 통신 및 container 간 통신이 불가능한 구조입니다. 명령어 $sudo docker run --network none ngnix 구조 Host Network Docker의 'host' 네트워크는 container가 host의 network statck을 직접 사용하도록 합니다. 이는 container가 host와 동일한 network namepsace를 공유하게 되므로, network 격리가 사실상 없어집니다. 단점으로는 container가 host의 ..

Cloud/k8s-CKA 2023.07.10

[linux] netfilter 소개 및 동작 방식

개요 linux의 netfilter가 무엇인지 알아보겠습니다. netfilter란? Netfilter는 리눅스 커널에서 네트워크 패킷을 처리하는 프레임워크입니다 전체 구성도 https://en.wikipedia.org/wiki/Netfilter 에 잘나와 있습니다. netfilter의 동작 구조 5개의 chain과 5개의 table을 사용하여 packet을 제어 합니다. 좀더 풀어서 설명하면 각 chain에 여러개의 tabledmf 순차적으로 적용하여 packet을 제어 하는 것입니다. chain 사용자에게 Hook을 걸수있는 point를 제공하니다. 각 chain에 대한 설명 종류 설명 PREROUTING 이 chain은 패킷이 커널을 통과하기 전, 즉 데이터링크 계층과 네트워크 계층 사이에서 작동합니..

[Hook ] LD_PRELOAD

개요 LD_PRELOAD가 무엇인지 알아보겠습니다 용도 "Hooking" 용도로 사용됩니다. LD_PRELOAD는 Linux 및 Unix 계열 시스템에서 사용되는 환경 변수로서, 프로그램이 실행되기 전에 특정 동적 라이브러리를 먼저 로드하도록 지시합니다. 이를 통해, LD_PRELOAD에 명시된 라이브러리의 함수가 다른 동일한 이름의 함수보다 먼저 호출됩니다. 사용법 1. overrride할 함수를 포함하는 shared library를 생성 이 library에는 hooking할려는 함수와 동일함 이름및 paramter를 가져야 합니다. 2. shared library compile 공유 라이브러리를 컴파일하고 .so 파일을 생성합니다. 3. LD_PRELOAD를 사용하여 실행 환경 변수 LD_PRELOA..

SIMD와 MMX, SSE, AVX

SIMD와 MMX, SSE, AVX SIMD 정의 SIMD (Single Instruction, Multiple Data): 이는 한 번의 명령으로 여러 데이터를 동시에 처리하는 병렬 처리 컴퓨팅 구조를 나타냅니다. 이 구조는 서로 다른 데이터 세트에 같은 연산을 동시에 적용하므로, 대량의 데이터에 대해 동일한 연산을 반복해야 하는 경우에 특히 유용합니다. MMX, SSE, AVX 정의 MMX, SSE, 그리고 AVX는 모두 프로세서가 한 번에 여러 데이터를 처리하는 것을 돕는 SIMD(Single Instruction, Multiple Data) 명령어 집합의 확장입니다. MMX (MultiMedia Extensions): MMX는 Intel이 개발한 특수 명령 세트 확장입니다. 병렬 정수 명령을 도입..

[CKA] 24. k8s network를 위한 기초

개요 k8s의 network는 어떻게 구현이 되어있는지 알아보겠습니다. k8s의 network를 무엇을 구현하였는가? 실제 물리적인 network 구성을 Host 내부에 구현한 것이 k8s의 network의 기본입니다. 그리고 k8s에서 Host 간의 network 구성은 CNI plugin을 통하여 확장할 수 있습니다. 아래 그림 2개는 각각 실제 무리적인 network의 구성과 k8s의 Host 간의 network 구성을 표현한 것입니다. 물리적인 Network 구성도 K8S Network 구성도 물리적인 network 구성도의 초록색 box 부분이 Host로 들어와서 구현된 것이 k8s의 network 구현입니다. 위 그림에서 Host는 Container로 대체가 되어서 구성이 되고 gateway는..

Cloud/k8s-CKA 2023.06.29

[CKA] 23. k8s cluster 관리

개요 k8s cluster 접근 방법을 알아 보겠습니다. kubeconfig 관리 명령어 kubeconfig 파일은 kubectl을 통하여 관리가 가능합니다. 다음은 kubeconfig관련하여 유용한 명령어입니다. 사용 중인 kubeconfig 파일 확인 kubectl config view 현재 context의 cluseter와 user 확인 kubectl config current-context 모든 context 목록 확인 kubectl config get-contexts 특정 context로 전환 kubectl config use-context [CONTEXT_NAME] 새로운 context추가 kubectl config set-context [CONTEXT_NAME] --cluster=[CLUST..

Cloud/k8s-CKA 2023.05.07

[CKA] 22. k8s cluster backup 방법

개요 k8s cluster의 설정을 backup 하는 방법을 알아보겠습니다 backup의 대상 1. Resource Configuration 2. ETCD Cluster 3. Persistent Volumes Resource Configuration backup 방법 1. Imperative (명령어 방식) 방식 일일이 수행한 명령어는 저장하는 방식 장점 없는 거 같음.. 단점 어떻게 생성했는지 까먹으면 골치가 아픕니다. 2. Declarative (선언적 방식) 방식 yaml file을 저장하는 방식 장점 github 같은 저장소에 보관해서 팀 내에서 공유하기 편합니다. 단점 Imperative로 만든 object는 관리가 안됩니다. 3. Resource configs backup 방식 kube-api..

Cloud/k8s-CKA 2023.05.07

[CKA] 21. k8s cluster upgrade

개요 k8s의 cluster의 버전을 upgrade 하는 방법을 알아보겠습니다. 유의 사항 1. 하나씩 올리면서 업데이트를 해야 합니다. 2. k8s와 kubelet과 kubectl은 수동으로 upgrade 해주어야 합니다. 3. upgrade작업 시 kubelet를 upgrade하기 전에 drain을 사용하여 모든 pod를 안전하게 다른 node에 옮겨 놓고 update후에 uncordon 해주어야 합니다. k8s의 버전 체계 k8s 모듈별 하위 호환성 정보 https://v1-26.docs.kubernetes.io/releases/version-skew-policy/ Version Skew Policy The maximum version skew supported between various Kube..

Cloud/k8s-CKA 2023.05.05

[CKA] 20. node operating system update

개요 worker node의 operating system을 update시 운영중인 service에 영향을 주지 않고 update하는 방법을 알아보겠습니다. Node가 갑자기 종료되었을 때 현상 k8s에서는 5분간 worker node가 살아나지 않으면 Node가 죽었다고 판단하여 해당 node에 할당되 pod를 종료 처리 합니다. 그리고 replicaset으로 생성된 pod는 다른 node에 다시 생성하고 replicaset으로 생성하지 않는 pod는 사라지게 됩니다. Node를 정상적으로 종료 하는 방법 drain 사용 #kubectl drain worker1 위 명령어는 worker1에 pod를 scheduling 할 수 없게 만듭니다. 그리고 할당된 pod를 정상 종료 시키고 pod를 다른 nod..

Cloud/k8s-CKA 2023.04.24