PaaS 221

(Kubernetes) Controlplane HA 구성

개요 Kubernetes HA(고가용성)는 아래 두 가지를 충족해야 한다. 1. KubeAPI가 계속 살아 있을 것 2. 신뢰할 수 있는 Etcd가 존재할 것 1번은 DNS와 로드벨런싱이면 kubeadm 단계에서 달성 가능하나, 2번은 Controlplane의 갯수가 중요한 부분이다. 혹은 Etcd를 꾸준히 백업을 받는 방법이 있다. HA를 위한 Controlplane 노드 갯수의 중요성 Kubernetes는 친절하게도 최소한의 안정성을 충족할 경우에만 정상적으로 작동하게끔 설계되어 있다. Controlplain을 이중화 해서 쓰던 도중 한대가 장애가 나면 그 클러스터는 일반적인 방법으로는 가동이 안된다. (복구 프로세스로 넘어가야 됨) 왜 그럴까? 그 이유는 Quorum이라는 알고리즘이 작동하기 때문인..

PaaS/Kubernetes 2021.08.27

(개념) ISTIO 란?

출처 : 조대협 (http://bcho.tistory.com) 님의 블로그 ISTIO Envoy를 이용해서 서비스 매쉬를 구현하기 위해서는 Envoy로 구성된 데이타 플레인을 컨트롤할 솔루션이 필요하다. Envoy를 데이타 플레인으로 사용하고 이를 컨트롤 해주는 오픈 소스 솔루션이 Istio 이다. (http://istio.io) 아키텍쳐 먼저 Istio의 구조를 보자 데이타 플레인 데이타 플레인은 envoy를 서비스 옆에 붙여서 사이드카 형식으로 배포를 해서, 서비스로 들어오고 나가는 트래픽을 envoy를 통해서 통제하게 된다. envoy는 서비스에서 서비스로 호출할때 상대편 서비스의 IP 주소를 알아야 하는데, 이를 서비스 디스커버리 (Service discovery : 참고 http://bcho.t..

PaaS/Kubernetes 2021.08.24

(Kubernetes) AWS Linux에 MasterNode 설치하기(Linux배포판 동일)

CentOS와 Debian과는 약간의 상의한 점이 있어 별로도 올린다. ■ 사전 OS 작업 SELINUX 끄기 $ setenforce 0 swap 비활성화 $ swapoff -a ■ 사전 방화벽 작업 넷필터 모듈 호출여부 확인 $ lsmod | grep br_netfilter 만약 로딩이 안되어 있으면 $ sudo modprobe br_netfilter Linux의 Iptable이 브릿지 트래픽을 보아야함 ------------------------------------------------------- $ cat

PaaS/Kubernetes 2021.08.18

(Oracle DB) Oracle2Oralce 다른 스키마로 이관하는 과정

1. 이관대상 스키마의 데이터파일 사용량 확인(DATA, INDEX) SELECT b.file_name "FILE_NAME", b.tablespace_name "TABLESPACE_NAME", b.bytes / 1024 / 1024 "TOTAL SIZE(MB)", ((b.bytes - sum(nvl(a.bytes,0)))) / 1024 / 1024 "USED(MB)", (sum(nvl(a.bytes,0))) / 1024 "FREE SIZE(KB)", (sum(nvl(a.bytes,0)) / (b.bytes)) * 100 "FREE %", round((b.bytes / 1024 / 1024) - ((((b.bytes - sum(nvl(a.bytes,0)))) / 1024 / 1024) + 150)) For..

PaaS/Data 2021.07.26

(Oralce DB) Oralce 서버 구축

1) 사전준비사항 - OS의 swap파티션 충분히 설정할것 - oracle파티션 생성 ※ /oracle 소프트웨어 홈의 경우 권한을 775로 줄것 - 환경변수 세팅 : vi 커맨드를 통해 내용을 확인하고 맞추어 수정한다. #vi /etc/security/limits.conf oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 #vi /etc/sysctl.conf fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_ran..

PaaS/Data 2021.07.26

(Jenkins, Dockerhub, Github, Kubernetes) Github에서 소스를 가져와 Kubernetes에 Jenkins 통해서 배포하기

우선 대단원의 막을 내고자 최종적으로 정리한다. Jenkins를 통해서 Kubernetes에 배포하는 파이프라인을 전체적으로 설명하고자 한다. 전제조건으로 건강한 Kubernetes Cluster(Worker노드 1개 이상) 이 있어야 하고, Jenkins-leader가 Kubernetes안에 pod로 올라가 있어야 한다. (만약 Kubernetes 외부에 있으면 Kubernetes 연결작업이 좀더 복잡해진다고 생각하면 된다) 파이프라인은 이렇게 움직인다. 1) Github에서 Iac (Infra As Coding) 형식의 파일을 Jenkins로 pull 받기 2) Jenkins에서 pull받은 DockerFile을 참고해서 Kubernetes Cluster로 docker build/push 등등 doc..

PaaS/CI CD 2021.07.22

(Jenkins, Kubernetes) Jenkins와 Kubernetes 연동하기

현재 Kubernetes Cluster에 Jenkins를 pod로 올린상태이다. Kubernetes Cluster가 아닌 다른 호스트에서 올려본적이 있으나, 추후에 CI/CD하는데 있어서 괜히 머리 아플터이니, 그냥 Kubernetes Cluster에 올리기 바란다. Jenkins를 올리는 방법은 이전 글을 참고바랍니다. 1. 우선 Jenkins plugin 을 설치한다. 시스템설정 > 플러그인 관리 설치할 플러그인 대상 kubernetes Pipeline Utility Steps Docker Pipeline GitLab GitLabHook 2. 설치 후 재시작이 완료되면 Jenkins관리 -> 시스템 설정으로 간다. #of executor는 2->0으로 변경한다(동시에 배포 가능한 스레드 수인데 0으로..

PaaS/CI CD 2021.07.21