전원 절약 모드로 전환될 때 블루투스가 자동으로 비활성화 될 수 있다. 블루투스 서비스의 상태를 확인하고, 재실행하거나 모듈을 재로드하여 재활성화하는 방법을 정리한다.블루투스 드라이버 문제1. 블루투스 어댑터 인식 여부 확인sudo lsusb | grep -i bluetoothhciconfig -a2. 어댑터가 확인되지 않는 경우 필요한 패키지 설치sudo apt updatesudo apt install bluetooth bluez bluez-tools 블루투스 서비스 상태 점검1. 블루투스 서비스 상태 점검sudo systemctl status bluetooth2. 서비스 중지 시 재시작sudo systemctl restart bluetooth 권한 문제 발생 시 bluetooth 그룹에 사용자 추가s..
Infrastructure & Systems
가상머신이나 Docker 데몬 서비스가 재부팅되는 경우 별도의 설정이 없으면 Docker를 통해 실행되고 있던 Container들은 재실행되지 않는다. 리눅스의 systemd 서비스 파일을 등록해 컨테이너를 자동으로 재실행할 수 있는 방법을 정리한다.서비스 파일 등록# cd /etc/systemd/system/docker-nexus.service[Unit]Wants=docker.serviceAfter=docker.service [Service]RemainAfterExit=yesExecStart=/usr/bin/docker start nexusExecStop=/usr/bin/docker stop nexus [Install]WantedBy=multi-user.target자동 재실행 설정아래 설정 후 가상 머..
iptables 설정 전체를 초기화 한 다음 재설정하는 방법iptables 테이블, 체인 초기화sudo iptables -t nat -Fsudo iptables -t mangle -Fsudo iptables -Fsudo iptables -Xsudo iptables -t nat -Xsudo iptables -t mangle -X-F : 활성화된 모든 규칙을 삭제하는 옵션이다.-X : 모든 사용자 정의 체인을 삭제하는 옵션이다.-t : 테이블 지정에 사용하는 옵션이다. (Filter, Nat, Mangle 테이블 중 선택)iptables 인바운드, 아웃바운드 트래픽 오픈sudo iptables -P INPUT ACCEPTsudo iptables -P OUTPUT ACCEPT초기화 상태 확인sudo iptab..
자주 사용하는 kubectl 명령어들을 짧게 줄여주는 alias 목록기본 단축키# /etc/profilealias k='kubectl'alias kg='kubectl get'alias kgp='kubectl get pods'alias kgs='kubectl get svc'alias kgd='kubectl get deploy'alias kgn='kubectl get nodes'alias kga='kubectl get all'alias kd='kubectl describe'alias kdp='kubectl describe pod'alias kds='kubectl describe svc'alias ke='kubectl edit'alias krm='kubectl delete'alias ka='kubectl ap..

Container Image Registry 개요Image Registry는 컨테이너 이미지를 저장하는 공간이다. 모두에게 공개된 공간에 구성된 퍼블릭 이미지 저장소가 있고, 특정 사용자에게만 공개하는 프라이빗 이미지 저장소로 구분된다. 기업이 애플리케이션 개발 과정에 사용할 이미지 저장소는 보통 프라이빗 이미지 저장소를 사용한다. Docker Hub, AWS Elastic Container Registry, Google Container Registry와 같은 퍼블릭하게 사용하는 이미지 저장소에서도 프라이빗 이미지 저장소를 지원한다. 구축형 이미지 저장소가능하다면 클라우드 사업자가 제공해주는 퍼블릭/프라이빗 컨테이너 이미지 저장소를 사용하는 것이 가장 좋다. 이미지 저장소를 직접 구축하게 되면 호스트..

Dockerfile 정의도커 컨테이너 이미지를 빌드하기 위한 Instruction(명령, 지시어)의 집합이다. 도커 이미지를 빌드하는 경우 Instruction의 역순으로 계층화 된다. Dockerfile Instruction 종류InstructionSampleDescriptionFROMFROM node:22 AS init_stage• 베이스 이미지 지정WORKDIRWORKDIR /usr/src/app• 컨테이너 내부에서 명령어를 실행할 디렉터리 지정COPYCOPY ./ /appCOPY --from=init_stage /app /app• 호스트의 현재 로컬 디렉터리의 파일을 컨테이너 내부로 복사• + • 멀티 스테이지 빌드할 때 다른 빌드 레이어에 파일을 복사할 때 사용ADDADD ./app.tar.x..
사설 레지스트리(docker, harbor, ECR 등)를 이용할 때 인증 정보(자격증명)를 같이 전달해야 하는 경우 쿠버네티스에서 제공하는 Secret 리소스를 이용할 수 있다. 사설 레지스트리의 인증정보를 포함하고 있는 Secret 리소스를 생성한 다음 Pod 혹은 Deployment와 같은 리소스가 사설 레지스트리에서 컨테이너 이미지를 가져올 때 생성한 Secret 리소스를 사용하도록 설정해야 한다. 사설 레지스트리 인증을 위한 Secret 생성Secret을 생성하는 방식은 kubectl 명령에 옵션으로 인증정보를 포함한 도커의 config.json 파일을 적용하거나 직접 커맨드에 인증 정보를 할당할 수 있고, 또는 YAML 파일에 인증정보를 입력해서 생성하는 방법이 있다. 1. kubectl 명령..
kubespray는 k8s 클러스터를 중앙에서 ansible을 이용해서 진행할 수 있도록 지원하는 오픈 소스 도구다. 코드를 이용해서 전체 클러스터를 컨트롤할 수 있기 때문에 규모가 큰 환경에서 사용하기 적합하다. 설정에 따라서 운영에 필요한 애드온을 자동으로 설치할 수 있고, 폐쇠망 환경에서도 설치가 가능하도록 지원한다.VM 서버 구성Master Node: 3대Worker Node: 2대OS : Ubuntu 24.04 LTSStorage: 50GB 대표 Master 노드 설정hosts 파일 설정# vim /etc/hostsmaster1 10.0.0.168master2 10.0.0.207master3 10.0.0.53worker1 10.0.0.149worker2 10.0.0.245pem key 파일 설..
상태 유지가 필요한 데이터베이스, 분산 시스템과 같은 Application을 관리하는데 사용되는 오브젝트다. 고유한 네트워크 식별자를 제공하고, 스토리지의 데이터를 영구적으로 사용 가능하도록 기능을 지원한다.StatefulSet 기본 개요고유한 네트워크 식별자가 필요하거나 스토리지를 지속적으로 적용해서 사용하고자 할 때 적합하다. 파드에는 고유한 id 값이 할당되기 때문에 파드가 재실행되더라도 동일한 PV 마운트가 가능하다.Deployment에서 PVC를 사용하면 동일한 PV가 마운트 되고, StatefulSet은 파드별로 PVC 생성 후 볼륨이 할당된다.Deployment는 파드를 최적의 워커 노드에 배치하려는 특성이 있지만 StatefulSet은 최대한 동일 노드에 배치한다. StatefulSet 주..
k8s cluster 전체 노드에 특정 Pod를 실행시키고자 할 때 사용한다. 로그 수집, 모니터링과 같이 항상 실행해 두어야 하는 Pod를 생성할 때 사용한다.Sample YAMLapiVersion: apps/v1kind: DaemonSetmetadata: name: fluentd-elasticsearch namespace: kube-system labels: k8s-app: fluentd-loggingspec: selector: matchLabels: name: fluentd-elasticsearch updateStrategy: type: RollingUpdate # roller update, on delte 중 선택 template: metadata: ..