클라우드
[Kubernetes] Cilium
Cilium 이란?cilium의 기반에는 ebpf라는 리눅스 커널 기술이 사용된다. ebpf는 보안/가시성/네트워킹 제어 로직을 커널에 동적으로 삽입할 수 있는 Linux 커널 기술이다.또한 cilium은 kube-proxy를 완전히 대체할 수 있다. cilium은 iptables을 이용한 쿠버네티스 트래픽 라우팅의 단점을 보완하여 네트워크 성능을 높히고자 하는 목적을 갖고있다.iptables를 기반으로 IP/PORT 기반의 전통적인 포워딩 기술은 오랫동안 널리 사용되었고 퍼블릿/프라이빗 클라우드 제품군들 모두 iptables 기반의 Security Group등을 기본으로 제공하고 있고 쿠버네티스마저도 CNI 핵심으로 iptables를 활용하고 있다.하지만 동적으로 변화하고 복잡한 마이크로서비스를 사용..
[kubernetes] Service (Headless Service, ExternalName), Endpoint
Headless ServiceHeadless 서비스는 서비스를 이용한 로드밸런싱 기능이 지원되지 않는다. 서비스를 거치지 않고 파드에 직접 접근한다.서비스 생성 시 .spec.clusterIP 필드 값을 None으로 설정하면 클러스터 IP가 없는 서비스를 만들 수 있다.❯ cat headless-svc.yamlapiVersion: v1kind: Servicemetadata: name: my-headless-service namespace: service-testspec: clusterIP: None selector: app: my-app ports: - port: 80 targetPort: 80❯ kubectl get svcNAME TYPE ..
[Kubernetes] ArgoCD
개념Argo CD 란?Manifest(yaml) 파일의 변경 사항을 감시하며, 현재 배포된 환경의 상태와 Manifest(yaml) 파일에 정의된 상태를 동일하게 유지하는 역할을 수행한다.한마디로 Argo CD는 쿠버네티스를 위한 CD 툴이라고 할 수 있다.GitOps는 DevOps의 실천 방법 중 하나로 애플리케이션의 배포와 운영에 관련된 모든 요소들을 Git에서 관리한다는 뜻이다.컴포넌트❯ kubectl get deployNAME READY UP-TO-DATE AVAILABLE AGEargocd-applicationset-controller 1/1 1 1 65sargocd-dex-serve..
[쿠버네티스] 클러스터 구축
설치 아키텍처master 1대worker 1대haproxy 1대multi master 구축에 대한 방향성을 위해 haproxy에 master를 연결하여 구성하였으나, 간단한 테스트를 위해 1개의 master를 두고 haproxy와 연결하였다.사전 작업hostname 설정- 노드별로 고유한 hostname을 가지고 있어야 한다방화벽 해제 or 방화벽 규칙 구성- https://v1-27.docs.kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/- 노드끼리 많은 통신을 통해 쿠버네티스가 정상 동작하기 때문에 적절하게 방화벽을 구성하거나 방화벽을 해제해야 정상적으로 클러스터 구축이 가능하다NTP 서버 동기화- 쿠버네티스..
[kubernetes] kubernetes의 update 종류와 동작 방법 (apply, edit, patch, replace)
0. 선언형(Declarative) 접근법 vs 명령형(Imperative) 접근법 0.1. 선언형 접근법 선언형 접근법은, 원하는 상태 그 자체를 선언하는 방식이다. 쿠버네티스에서는 YAML 파일을 통해 원하는 구성 요소의 원하는 상태를 기술한 뒤, kubectl apply -f 형태의 명령어로 이를 적용하는 방식이 해당된다. 이렇게 선언된 상태를 실제로 적용하기 위해 필요한 작업은 쿠버네티스 시스템이 알아서 판단하고 수행한다. 이 접근법은 결국 "요구되는 환경이 무엇인가(what)"에 초점을 둔다. apiVersion: v1 kind: Pod metadata: name: nginx labels: app: nginx spec: containers: - name: nginx-container image:..
[kubernetes] pod lifecycle
(공식문서) https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/ Pod Lifecycle This page describes the lifecycle of a Pod. Pods follow a defined lifecycle, starting in the Pending phase, moving through Running if at least one of its primary containers starts OK, and then through either the Succeeded or Failed phases depending on whet kubernetes.io (한국어 버전) https://kubernetes.io/ko/docs/c..
[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 모드로 넘어가려..
[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..