일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 부스트코스
- ios
- centOS
- 컨테이너
- k8s
- os
- linux
- boj
- kubernetes
- docker
- 도커
- devops
- Swift
- 인프라
- 도커 명령어
- 네트워크
- NGINX
- 리눅스
- 도커 컨테이너
- C++
- centOS7
- 도커 이미지
- AWS
- 쿠버네티스
- 클라우드
- 데브옵스
- swift 클로저
- Python
- 운영체제
- 프로세스
- Today
- Total
목록분류 전체보기 (153)
귀염둥이의 메모
서비스(Service) 서비스는 여러 개의 파드에 접근할 수 있는 IP 하나를 제공한다. 파드가 클러스터 안 어디에 있든 고정 주소를 이용해 접근이 가능하다. L4 영역에서 통신할 때 사용 파드에 접근할 수 있는 경로 제공 고정된 포인트 / 외부 접근 가능한 포인트를 제공 서비스에는 크게 4가지 종류가 있다 ClusterIP : 기본 서비스 타입이며 클러스터 내부에서만 사용할 수 있다. 클러스터 내부 노드나 파드에서는 클러스터 IP를 이용해서 서비스에 연결된 파드에 접근한다. 클러스터 외부에서는 이용 불가❌ NodePort : 서비스 하나에 모든 노드의 지정된 포트를 할당한다. node1:8080, node2:8080처럼 노드에 상관없이 서비스에 지정된 포트 번호만 사용하여 파드에 접근할 수 있다. 노드..
Master Node = Control-Plane 클러스터를 관리하는 역할을 한다 etcd, kube-apiserver, kube-scheduler, kube-controller-manager, kubelet, kube-proxy, docker 등이 실행된다 고가용성을 위해서 3대 이상으로 운영하기도 한다 Worker Node = Node 실제 컨테이너를 실행시키는 작업을 한다 kubelet, kube-proxy, docker 등이 실행된다 Master Node와 Worker Node의 통신 쿠버네티스의 모든 통신의 중심에는 apiserver가 있다. apiserver를 통해서 다른 프로세스들이 서로 필요한 정보를 주고받는다. etcd에 대한 접근은 apiserver만 가능하다. 마스터 서버를 보면 ku..
n = 10 _list = [[0] * n for _ in range(n)] print(_list[0] is _list[1]) >>> False _list2 = [[0] * n] * n print(_list2[0] is _list2[1]) >>> True [[0] * n] * n 방식으로 초기화하면 [0] * n 은 모두 같은 객체로 인식하기 때문에 주의해야 한다
kube-proxy 서비스를 만들었을 때 ClusterIP나 NodePort로 접근할 수 있게 만들어 실제 조작을 하는 컴포넌트 클러스터의 노드마다 실행되면서 클러스터 내부 IP로 연결하려는 요청을 적절한 파드로 전달 userspace, iptables, IPVS 모드가 있다 userspace 모드 클라이언트에서 서비스의 ClusterIP를 통해 요청을 하면 iptables를 거쳐 kube-proxy가 요청을 받는다 그리고 서비스의 ClusterIP는 연결되어야 하는 적절한 파드로 연결해준다 요청을 파드로 연결하는 방식은 라운드 로빈(Round Robin)을 사용한다 파드 하나로의 연결 요청이 실패하면 자동으로 다른 파드에 연결을 재시도한다 iptables 모드 userspace와 다르게 kube-pro..
사이드카 패턴(Sidecar) 원래 사용하려던 기본 컨테이너의 기능을 확장하거나 강화하는 용도의 컨테이너를 추가하는 것 기본 컨테이너는 원래 목적에만 충실하도록 구성 나머지 공통 부가 기능들은 사이드카 컨테이너를 추가해서 사용 공통 역할을 하는 컨테이너의 재사용성을 높일 수 있음 앰배서더 패턴(Ambassador) 파드 안에서 프록시 역할을 하는 컨테이너를 추가하는 패턴 파드 안에서 외부 서버에 접근할 때 내부 프록시에 접근하도록 설정 실제로 외부와 연결은 프록시가 알아서 처리함 어댑터 패턴(Apdater) 파드 외부로 노출되는 정보를 표준화하는 어댑터 컨테이너를 사용 주로 어댑터 컨테이너로 파드의 모니터링 지표를 표준화한 형식으로 노출시키고, 외부의 모니터링 시스템에서 해당 데이터를 주기적으로 가져가서..
프로브(Probe) 프로브는 컨테이너에서 kubelet에 의해 주기적으로 수행되는 진단이다. 진단을 수행하기 위해서, kubelet은 컨테이너에 의해서 구현된 핸들러를 호출한다. ExecAction : 컨테이너 안에 지정된 명령을 실행하고 종료 코드가 0일 때 Success라고 진단 TCPSocketAction : 컨테이너 안에 지정된 IP와 포트로 TCP 상태를 확인하고 포트가 열려있으면 Success라고 진단 HTTPGetAction : 컨테이너 안에 지정된 IP, 포트, 경로로 HTTP GET 요청하고 응답 코드가 200 ~ 400 이면 Success라고 진단 진단 결과 Success : 진단에 성공 Failure : 진단에 실패 Unknown : 진단 자체가 실패해서 컨테이너 상태를 알 수 없음 ..
Kubespray Kubeadm 과 Ansible을 이용한 쿠버네티스 클러스터 배포 도구 별도의 로드 밸런서를 사용하지 않고 노드 각각의 nginx가 리버스 프록시로 실행됨 nginx-proxy가 전체 마스터 노드를 바라보는 구조 control-plane에서 설정 및 설치 # 약어 등록하기 sudo vim /etc/hosts ssh-keygen ssh-copy-id control-plane ssh-copy-id node1 ssh-copy-id node2 # vagrant 유저는 sudo 권한이 있음 sudo apt update # 현재 가지고있는 패키지들의 새로운 버전 리스트 구성 sudo apt upgrade -y # 이 명령어를 해야지 실제로 최신버전으로 업데이트 됨 sudo apt install p..
MSA란? Microservice는 SOA(Service Oriented Architecture)의 경량화 버전 하나의 Monolithic Application을 핵심 기능으로 세분화한 것 하나의 큰 어플리케이션을 여러개의 작은 단위로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처 Monolithic의 단점 하나의 기능을 추가하거나 수정하면 전체 시스템을 재배포 해야함 서비스가 커질수록 빌드, 테스트, 배포 시간이 기하급수적으로 늘어나고, 시스템 구조의 파악이 어려움 서비스를 부분적으로 Scale-out하기 힘들다 한 부분의 기능에 장애가 발생하면 전체 시스템이 마비됨 MSA의 장점 서비스들이 상호 독립적이여서 유지보수 및 배포가 간편함 서비스에 장애가 발생하면 각 서비스마다 독립적으로 발생하는 것이기 ..
Vagrant란? 단인 워크 플로우로 가상 시스템 환경을 구축하고 관리하기 위한 프로비저닝 도구 프로비저닝 기능을 통하여 요구 사항에 맞는 가상 시스템 환경을 자동으로 구축 가능 시스템은 VirtualBox, VMware 등의 프로바이더 위에 프로비저닝 IaC 도구를 사용하여 가상 시스템에 소프트웨어를 자동으로 설치, 구성 가능 Vagrantfile에 작성된 내용을 바탕으로 가상 시스템이 자동으로 구축된다 명령어로 VM 상태 확인, 중지, 삭제, 생성 등이 가능하다 Vagrant 설치 & Virtualbox 설치 https://www.vagrantup.com/downloads Downloads | Vagrant by HashiCorp Vagrant enables users to create and con..
Blocking 자신의 작업을 진행하다 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것 직접 제어할 수 없는 대상의 작업이 끝날 때까지 제어권을 넘겨주지 않는 것 ex) 호출하는 함수가 IO 요청을 했을 때 IO 처리가 완료될 때까지 아무 일도 하지 못한고 기다리는 것 Non-Blocking 다른 주체의 작업에 관련 없이 자신의 작업을 하는 것 직접 제어할 수 없는 대상의 작업 처리 여부와 상관이 없음 ex) 호출하는 함수가 IO 요청을 한 후 IO 처리 완료 여부와 상관없이 바로 자신의 작업을 하는 것 Blocking vs Non-Blocking 다른 주체가 작업할 때 자신의 제어권이 있는지 없는지로 볼 수 있음 제어의 관점에서 바라보는 것 Synchronou..