분류 전체보기(118)
-
[kubernetes] kubectl Connection Refused 이슈 해결
1. 문제 설명 kubectl 커맨드가 정상적으로 실행되다가 어느 순간 다시 아래와 같이 connection이 refused 되는 문제가 발생했다. 약 3~5분 간격으로 API 서버가 죽고, controller-namager나 scheduler도 죽었다 살아나기를 반복한다. root@master:~# kubectl get nodes the connection to the server :6443 was refused - did you specify the right host or port 모든 kubectl 커맨드는 API 서버로 가기 때문에 API 서버에 문제가 있을 거라 생각했다. kubectl 커맨드가 정상적으로 실행되지 않았기 때문에 API 서버를 포함한 쿠버네티스 컴포넌트들이 잘 실행 중인지 확인..
2022.08.26 -
[k8s] k8s설치를 위한 VM 구축하기 (feat. Virtual Box)
구성도 이번 포스팅에서 구축할 master, worker 노드의 구성도이다. 하나의 master 노드와 두 개의 worker 노드를 구축하고 OS 설치, 네트워크 구성, 도커 설치 등을 진행한다. 이번 포스팅에서 다룰 내용은 다음과 같다. - VM 기반으로 Master, Worker 노드를 구축 - 노드 간 네트워킹 설정 (NAT) - 호스트에서 SSH 접속 설정 - 각 노드에 docker를 설치 쿠버네티스 설치 과정은 다른 포스팅에서 다룬다. 0. 사전준비 1) Ubuntu iso 이미지 파일 다운로드 - 22.04에 containerd를 설치할 경우 일종의 버그가 있어 20.04를 추천한다. - 설치 편리를 위해 server 대신 desktop iso를 사용했다. 2) Virtual Box 설치 1...
2022.08.22 -
[k8s] VM에 쿠버네티스 클러스터 구축하기
쿠버네티스 클러스터 구성 도구 1. kubeadm - 쿠버네티스에서 '공식으로 제공'하는 클러스터 생성, 관리 도구 - single master, multi master를 구축하는데 모두 적합 2. kubespray - 쿠버네티스 클러스터를 배포하는 오픈소스 - 다양한 형식으로 쿠버네티스 구성 가능(멀티 마스터 구성에 적합) - 온프레미스에서 상용 서비스 클러스터 운영시 유용 - 다양한 CNI 제공 cf. CNI (Container Network Interface) - 컨테이너(Pod) 간에 네트워킹을 지원해 주는 '소프트웨어' - VxLAN, Pod Network 이라고도 부름 - 쿠버네티스를 사용하기 위해서는 반드시 필요함 - 다양한 플러그인이 존재함(플라넬, 칼리코, 위브넷 등) 구성할 요소 1. ..
2022.08.22 -
[docker] 컨테이너 자원할당 및 부하테스트, 모니터링
리눅스의 '부하 테스트' 프로그램 - Stress stress 커맨드를 통해 프로세스의 부하 테스트를 진행할 수 있다. [사용 예시] stress --cpu 2 : 2개의 코어를 100프로로 사용하도록 하는 부하 테스트를 진행함 stress --vm 2 --vm-bytes : 메모리에 일정 크기에 대한 부하를 주고 테스트 부하 테스트를 컨테이너에서 실행해본다. Dockerfile 작성 FROM debian RUN apt-get update; apt-get install stress -y CMD ["/bin/bash", "-c", "stress -c 3"] cf. -c 옵션은 --cpu와 같음 Dockerfile이 위치한 디렉토리로 이동해서 "docker build -t stress ." 커맨드를 수행하여..
2022.08.16 -
[Go] Golang 이란
Go의 철학 1. 큰 프로젝트에서도 사용될 수 있는 안정성 2. 빠른 속도 3. 요즘 인기 있는 Python, Javascript과 같은 가독성 4. 네트워크, 멀티프로세싱에 최적화 cf. 2012년 3월에 Go 1.0 공개했으며 현재(2022년 8월) 최신 버전은 1.19이다. Golang은 C계열 언어로 분류되며 객체지향 언어는 아니지만 객체지향스럽게 프로그래밍 가능하다고 한다.(상속을 지원하지 않지만 객체지향처럼 코딩 가능) Go는 UNIX, C언어, B언어, UTF8, JVM과 같은 프로젝트에 참여한, 꽤 영향력이 큰 개발자들이 만든 언어이다. Golang의 장단점 1. 장점 1. 빠른 속도 Go는 컴파일 기반 언어여서 실행 자체 시점만 비교했을 때, 인터프리터 기반인 언어보다 빠르다. 컴파일 언..
2022.08.15 -
다양한 리눅스 배포판 기반의 컨테이너를 올릴 수 있는 이유
도커를 기반으로 배포를 하다가 컨테이너로 들어가서(docker exec) 작업이 잘 수행되었는지 확인할 경우가 있었다. 들어가서 ps 명령어를 사용하기 위해 apt 커맨드로 procps 패키지를 설치했는데, apt가 지원이 되지 않았다. yum으로 변경하니 패키지가 설치되었다. 호스트 OS는 우분투를 사용하고 있었는데 컨테이너 OS는 centos였던 것이다. 컨테이너의 개념이 호스트 OS를 공유하는 것으로 알고 있었는데 이렇게 리눅스 배포판이 바뀔 수 있던 이유가 궁금해서 찾아보았다. 1. 리눅스 구조 리눅스는 kernel space와 user space로 나뉜다. 1) user space application들이 실행되는 공간으로 이 application이 실행되는데 필요한 library나 환경을 제공..
2022.08.14 -
[LFCS] Redirection, Pipe, File Descriptor
Linux Redirection 일반적으로 커맨드로 실행되는 프로세스는 표준 입력 스트림(standard input stream), 표준 출력 스트림(standard output stream)과 오류 출력 스트림(standard error stream)을 가지고 있다. 총 하나의 입력 스트림과 두 개의 출력 스트림을 가지고 있는 것이다 기본적으로 이 모든 스트림은 일반적인 문자열로 콘솔에 출력하게 되어 있다. 리다이렉션은 스트림의 흐름을 바꿔준다. 실행된 프로세스(커맨드)의 스트림을 콘솔이 아닌 '파일'로 사용하고 싶다면 리다이렉션을 사용하면 된다. 이때 사용되는 기호가 , >> 이다. 파일 디스크립터(file descriptor) 파일은 읽거나 쓰기 전에 반드시 열어야(open) 한다. 커널은 '파일 ..
2022.08.01 -
[LFCS] User 및 Group 관리(2): Password Administration
Password 관련 설정 파일 1. /etc/passwd - 계정의 정보를 담는 파일로 7개의 필드를 가지며 두 번째 필드에 encryped password가 있다. - 해당 파일의 필드에 대한 자세한 설명은 링크를 참고하자. - encryped password가 x로 되어 있으면 실제 encryped password는 /etc/shadow에 저장되어 있다는 의미이다. 2. /etc/shadow - 암호화된 password 정보와 password aging에 대한 상세정보가 담긴 파일이다. - 총 8개의 필드를 포함한다. [필드 설명] field1) login name field2) encryped password field3) date of last password change field4) mini..
2022.07.25 -
[LFCS] User 및 Group 관리(1)
User/Group Administration User와 Group에 관련된 Database File들 1. '계정' 관련 파일 1) /etc/passwd 파일 - 시스템의 모든 계정에 대한 정보를 담고 있는 설정 파일 - 총 7가지의 필드로 구분된다. 플디 구분자는 콜론( : )이다. 예시) 위에서 passwd 파일을 보이는 것과 같이 : 을 기준으로 7가지 필드가 존재한다. user이름은 중복될 수 없다. 7가지 필드 설명 field1) login name field2) encryped password (보통 x라고 되어있고 /etc/shadow 파일에 보면 암호화된 형식으로 볼 수 있다) field3) User Id (root는 0번, 1~999까지는 시스템 계정이 사용하는 유저, 1000~6000..
2022.07.25 -
[LFCS] Linux Archiving and Compression 기초
사전적 의미 - Archiving: 파일로 보관, 보존, 백업 (Archive: 보관소) - Compression: 압축 리눅스에서 Archiving이란 '원본의 속성을 그대로 보존하면서' 여러 개의 파일(디렉토리)를 묶어서 보존(백업)하는 것을 의미한다. Compression은 큰 사이즈의 파일을 작은 사이즈로 압축하는 것을 의미한다. 왜 하는가? - 여러 개의 파일들을 묶은 뒤(Archiving) 하나로 압축하여 다른 곳으로 전송하거나 보관하기 위함이다. - 보통 하나의 디렉토리와 그 하위 디렉토리를 함께 묶을 때 사용한다. 또는 묶어 보존할 때 사용한다. Archiving, Compression 종류 [Archiving util] - tar, cpio [Compression util] - gzip,..
2022.07.24