분류 전체보기 1172

date - 시스템 시간 확인

시스템 시간 확인은 date 명령어로 간단하게 확인할 수 있다. date 기본적으로 요일 월 일 시간 시간대 연도의 형식으로 결과를 출력한다. 보통 날짜의 경우에는 2021/07/15 또는 2021-07-15 등의 형식을 가장 많이 쓰는데, date format을 지정하면 출력 형식을 변경할 수 있다. 출력 형식 지정 YYYY/MM/DD date +%Y/%m/%d # 2021/07/15​ YYYY-MM-DD date +%Y-%m-%d date +%F # 2021-07-15 HH:MM:SS date +%H:%M:%S # (0 - 23시) date +%T # (0 - 23시) date +%I:%M:%S # (1 - 12시) # 12:33:42 HH:MM:SS AM/PM date +'%I:%M:%S %p' d..

Linux 2021.07.19

Taints & Tolerations

Taints Node에 Pod가 배치될 수 없도록 Node에 설정한다. Tolerations Pod에 설정하며, 일치하는 Taint가 있는 Node에 스케쥴링될 수 있도록 한다. Taints와 Tolerations은 함께 동작하면서 포드가 적절하지 않은 노드에 배치되지 않도록 한다. 포드가 특정 노드에 배치되도록 설정하는 것이 아니다. 설정 방법 Taint kubectl taint nodes # 예시 kubectl taint nodes node1 app=blue:NoSchedule taint-effect는 스케쥴링된 포드에 동일한 toleration이 없는 경우 포드 처리 방식이다. taint-effect에는 아래의 세 개 값을 설정할 수 있다. NoSchedule 포드를 노드에 배치하지 않음 Prefe..

grep - 디렉터리에서 키워드를 포함한 파일 찾기

grep은 문자열 검색 명령어로, 입력으로 받은 파일 내용에서 키워드가 포함된 행을 출력해준다. 친근하고 좋은 명령어지만 아무 옵션 없이, 파일도 하위 디렉터리도 많은데, 어떤 파일에서 해당 키워드가 있는지도 모르는 경우에는 상당히 난감해진다. 일일이 파일을 열어봐야 하기 때문이다. 이럴 때는 여러 파일을 입력하거나, 옵션을 지정하면 간단하게 문제를 해결할 수 있다. 1. 여러 파일 입력 grep '' … 입력한 두 파일 중에서 import라는 문자열이 포함된 파일은 send_attachment.py라는 파일이라는 것을 알 수 있다. 이 방법도 파일 이름을 직접 지정해야 하기 때문에 다소 불편하다. 이런 경우에는 *(와일드카드)를 활용하면 좋다. grep '' ** # 예시 grep 'example' *..

Linux 2021.07.17

Resource Requirement

Pod는 배치된 Node의 CPU, MEM, 디스크 등의 리소스를 소비하기 때문에, 쿠버네티스 스케쥴러는 Pod에서 요구하는 리소스 양과 Node에서 사용할 수 있는 리소스 양을 고려하여 Pod를 배치한다. Pod가 배치된 Node에 리소스가 충분하지 않으면 Pod는 Pending 상태에 머무르며, 이 부분은 describe 명령어 출력 결과의 event 란에서 확인할 수 있다. Resource Requirement 컨테이너가 필요로 하는 최소 CPU/MEM 등의 리소스 쿠버네티스 스케쥴러는 이 값을 바탕으로 Pod를 배치할 수 있을 만큼 리소스가 충분한 Node를 식별한다. Pod 배포 정의 파일에 아래와 같이 정의할 수 있다. apiVersion: v1 kind: Pod metadata: name: ..

Chrome 실행 시, Unable to open X display 에러

2021.07.14 - [CentOS] Chrome 및 Selenium 설치 위 글에서 CentOS에 크롬 설치 후 Selenium을 이용해서 브라우저 제어도 해봤지만, 아무래도 CLI로 브라우저를 직접 실행하는 방법은 뭔지 궁금할 것이다. 크롬 브라우저는 아래 명령어로 간단하게 실행시킬 수 있다. google-chrome google-chrome & # 백그라운드로 실행 그런데 아래와 같은 Unable to open X display 에러가 발생하는 경우도 있을 것이다. 왜냐하면 내가 그랬다. 찾아봤는데 잘 모르겠지만 그래픽 인터페이스를 사용하는 필요한 X window, Display Server가 없거나 실행 중이 아니라서 발생하는 에러인 것 같다. X window, Display Server가 뭔지..

Linux 2021.07.15

[CentOS] Chrome 및 Selenium 설치

Selenium 웹 브라우저의 자동화를 가능하게 하는 도구와 라이브러리를 제공하는 프로젝트 Java, Python, C#, Ruby, JavaScript, Kotlin 등의 언어를 지원한다. 리눅스 OS에서 웹 크롤링 환경을 구성하기 위해 웹 브라우저인 크롬과 크롬 드라이버, 그리고 Selenium을 설치하려고 한다. 사용할 OS는 AWS Linux2(CentOS7)이고, Python3이 이미 설치되어 있으므로 Python으로 테스트까지 해보려고 한다. 설치 과정에서는 Sudo 권한이 필요하다. 1. 크롬 설치 공식 Google 저장소를 추가하는 대신 rpm 파일을 다운로드하여서 설치할 것이다. 어차피 설치 과정에서 저장소가 추가되기 때문이다. 아래와 같이 wget 명령으로 최신 크롬 패키지를 다운로드하..

Linux 2021.07.14

Service Account

Service Account는 인증, 권한, 역할 기반 접근 제어 등과 같은 쿠버네티스의 보안 관련 개념과 관련된 개념이다. 사용자 계정; User Account 사람이 사용하는 계정이다. 관리 작업을 수행하기 위해 쿠버네티스 클러스터에 접근하는 관리자, 애플리케이션 배포를 위한 클러스터에 접근하는 개발자 등이 사용한다. 서비스 계정; Service Account 기계가 사용하는 계정으로 애플리케이션이 쿠버네티스 클러스터와 상호작용하는 데 사용한다. Service Account Token 서비스 계정 생성 시 자동으로 생성되며 외부 애플리케이션이 Kubernetes API에 인증할 때 사용한다. 생성된 토큰은 secret 개체로 저장된다. 서비스 계정 생성 -> 서비스 계정 토큰 생성 -> secret ..

Security Context

도커 컨테이너에 프로세스 실행 user와 capabilities를 설정할 수 있던 것과 같이 쿠버네티스에서도 동일한 부분을 설정할 수 있다. 쿠버네티스 컨테이너는 Pod에 캡슐화되어 있으므로 컨테이너 레벨, 또는 Pod 레벨에서 설정을 구성할 수 있다. Pod 레벨 Pod 내 모든 컨테이너에 설정을 적용한다. yaml 파일에서 securityContext 옵션을 사용하여 프로세스 실행 user를 지정할 수 있다. apiVersion: v1 kind: Pod metadata: name: web-pod spec: securityContext: runAsUser: 1000 containers: - name: ubuntu image: ubuntu command: ["sleep", "3600"] Container..

[Docker] 컨테이너에 권한 부여

Docker는 컨테이너 내 root 사용자의 기능을 제한하는 기능을 제공한다. 컨테이너 내부의 프로세스가 호스트의 root 사용자가 할 수 있는 작업을 수행하면 시스템에 영향을 미칠 수 있기 때문이다. 따라서 Docker는 Linux의 Capabilities를 이용하여 리눅스의 호스트의 root 사용자와 컨테이너 내 root 사용자에게 권한 차이를 둔다. Capabilities Super User의 권한을 능력으로서 독립적으로 허용하거나 허용하지 않도록 설정하기 위한 단위 Super User의 권한을 조각으로 나눈 것 종류 CAP_SYS_ADMIN : sysadmin 작업 수행 CAP_SYS_TIME : 시스템 시간 변경 CAP_CHOWN : 파일의 uid/gid 변경 등등……. 프로세스는 root 권한..

Docker 2021.07.11

[Docker] 컨테이너 내 프로세스를 일반 사용자로 실행

일반적으로 Docker는 컨테이너 내에서 root로 프로세스를 실행한다. 컨테이너 내에서 일반 사용자로 프로세스를 실행하려면 --user 옵션으로 uid를 지정하거나 Dockerfile에 정의하면 된다. --user 옵션 docker run -it --user ubuntu bash username이 없는 이유는 컨테이너 내에 uid 1000으로 지정된 사용자가 없기 때문이다. Dockerfile 없는 사용자를 지정하지 않도록 Dockerfile 정의에 사용자를 먼저 생성한 뒤, 로그인 사용자를 지정해본다. FROM ubuntu RUN useradd docker_user -u 1000 -m -s /bin/bash USER 1000 위 Dockerfile로 빌드한 이미지를 이용하여 --user 옵션 없이 컨..

Docker 2021.07.10