분류 전체보기 681

Host DNS 설정 변경 시, CoreDNS 파드 재시작 필요

GPU Operator로 Nvidia Driver 파드를 띄우는 과정에서 DNS 관련 resolving 에러가 발생하였다. W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/jammy/InRelease Temporary failure resolving 'archive.ubuntu.com'W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/jammy-updates/InRelease Temporary failure resolving 'archive.ubuntu.com'W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/jammy-security/I..

Ops/Kubernetes 2025.05.07

[이슈] 노드 재부팅 후 K8S 클러스터가 동작하지 않은 현상 ( swap off )

현상K8S 클러스터를 구축한 노드를 재부팅 하였더니, kubectl 명령이 동작하지 않은 현상이 발생 원인journalctl로 kubelet 로그를 확인한 결과, kubelet이 swap이 켜져 있어 동작하지 못한다는 로그를 뱉고 있었음. 해결클러스터 구축 당시, swap 기능을 off 했지만, /etc/fstab 에 swap 관련 줄을 주석처리 하지 않아, 재부팅 후 swap 기능이 다시 on되어 발생한 현상.

Ops/Kubernetes 2025.05.07

[이슈] BIRD is not ready: BGP not established 이슈

이슈K8S 클러스터의 노드 하나가 BGP 커넥션 형성 실패 ( BIRD is not ready: BGP not established ) 설명CNI로 Calico를 사용중이다. Calico는 클러스터의 각 노드에 가상라우터를 생성하고 BGP 방식으로 각 노드의 파드 서브넷을 광고하고 서로의 라우팅 테이블을 학습한다. 그러므로 BGP 커넥션이 형성이 중요한데 형성되지 못하는 이슈가 발생하였다. Calico Node 파드 로그 Warning Unhealthy 16m (x2 over 17m) kubelet Readiness probe failed: calico/node is not ready: BIRD is not ready: Error querying BIRD: unable to..

Ops/Kubernetes 2025.05.07

GO 설치하기 ( Linux )

1. go 패키지 가져오기wget https://golang.org/dl/go1.24.1.linux-amd64.tar.gz https://golang.org/dl/ 에서 원하는 go 버전을 선택하고 wget으로 가져온다.   2. 패키지 압축 풀기tar -xf go1.24.1.linux-amd64.tar.gz  3. 실행가능한 경로로 Go 패키지 이동시키기sudo mv go /usr/local/go  4. GO 바이너리 파일 환경변수에 추가하기 sudo echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc  .bashrc 는 터미널 세션이 시작 될 때 실행되는 쉘스크립트이다. alias와 같이 쉘을 사용하기 전 필요한 설정 적용을 위해 사용된다. PATH 환..

Dev/Go 2025.03.27

[Linux] CLI로 Disk의 파티션 및 파일시스템 생성하기

부팅디스크로 Linux OS를 설치하는 과정에서 파티션을 나누거나 파일시스템을 생성할 수 있으나,이미 설치된 환경에서 새로이 파티션과 파일시스템을 생성해야 하는 경우도 있다.  이런 경우,CLI로 Disk의 파티션과 파일시스템을 생성해주어야 한다.   Device 조회하기 Device : /dev/nvme0n1, Partition : /dev/nvme0n1p1Device : /dev/nvme1n1, Partition : /dev/nvme1n1p1, /dev/nvme1n1p2, /dev/nvme1n1p3, root@infra-test2:/# fdisk -l// loop device 생략 ...Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 se..

Ops/Linux 2025.03.13

[Linux] 좀비 프로세스란? ( Zombie Process, Defunct Process )

좀비 프로세스는 프로세스 테이블에 종료상태(Exit Status)로 남아있는 자식 프로세스(Child Process)를 의미한다. 자식 프로세스는 부모 프로세스에 의해 정리되어야 한다.  부모 프로세스는 Wait 시스템 함수를 호출하여 자식 프로세스가 종료를 체크하다가,자식프로세스가 종료되면 프로세스테이블에서 자식 프로세스를 수거(repeaed)한다. 그러므로모든 프로세스는 부모 프로세스가 프로세스테이블에서 수거하기 전까지는, 종료되면 좀비 프로세스로 남아있는다. ( 수거 작업이 빠르게 진행되어 좀비프로세스 누적이 눈에 보이지 않는 것 뿐... )  좀비 프로세스 찾는 방법#ps 명령어ps -ef | grep defunct | grep -v grepps aux | egrep "Z|defunct"#top ..

Ops/Linux 2025.03.11

[DevLink] kind 환경 구축하기 ( 2025.02.19(수) )

로컬 환경에서 K8S를 구축하기 쉽지 않어, 개발환경은 Spring Eureka를 사용하여 개발을 하였다. 그러다보니 개발용 설정이 추가로 필요한 이슈가 있었다. 해당 이슈를 해결하기 위해, kind를 도입하여 로컬환경에서 돌아가는 K8S를 구축하려고 한다.  MacOS 기준  kind install ( 그 외 OS 링크 참고 : https://kind.sigs.k8s.io/docs/user/quick-start/  )# For M1 / ARM Macs[ $(uname -m) = arm64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.27.0/kind-darwin-arm64chmod +x ./kindmv ./kind /some-dir-in-your-PATH..

프로젝트 2025.02.19

[PS] 프로그래머스 광물캐기 ( Greedy ) with JAVA

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ◎ 문제풀이 어려운 알고리즘이 필요한 문제는 아니었지만 적절한 풀이 발상이 쉽지 않은 문제였다. 곡갱이는 종류에 상관없이 광물을 5개까지만 캘 수 있고 한번 캐기 시작하면 교체할 수 없다. 곡갱이의 종류에 따라 피로도가 달라지므로 최소 피로도를 구하려면, 가장 성능 좋은 곡갱이(다이아)로 가장 피로도가 높은 광물집합( 광물 5개 이하로 구성된 )을 캐야 한다. 1) 곡갱이를 다이아-철-흙 순으로 곡갱이 큐에 넣는다. ( 성능순 ) 2) 나열된 광물을 앞에서부터 5개씩 끊어 광물집합 객체를 생성하고 우선순위 큐..

문제풀이 2024.04.12

[PS] 프로그래머스 - 삼총사 ( 백트래킹 ) with JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/131705 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ◎ 문제풀이 N명의 학생 중에 3명의 조합을 찾는 문제이다. 조합의 모든 경우의 수를 완전탐색하는 알고리즘에는 백트래킹(BackTracking)이 있다. DFS와는 다르다. DFS는 모든 '노드'를 방문하는 완전탐색 시, 사용되는 알고리즘이다. 백트래킹은 모든 '조합'을 완전 탐색하는 경우 사용되는 알고리즘이다. 그럼 백트래킹을 사용하여 N명의 학생 중 3명의 조함(삼총사)를 찾는 코드를 구현해..

문제풀이 2024.04.12

[프로젝트] 로그인 및 회원가입 기능 구현 Day1

◎ 일시 : 2024.04.09(화) ◎ 내용 : 1) 스프링 시큐리티를 활용한 로그인 JWT 인증방식 아키텍처 구현 spring security 5.7 버전 이전에는 WebSecurityConfigurerAdapter를 설정클래스인 WebSecurity를 상속하고 configure 메소드를 재정의 하는 방식으로 필터체인을 설정했다. spring security 5.7 버전 이후부터는 FilterChain을 Bean으로 생성하는 방식을 권장하고 있다고 한다. 개인적으로 설정클래스는 @Bean 어노테이션으로 Bean객체를 생성하는 책임이 있는데, WebSecurityConfigurerAdapter를 상속하고 메소드를 재정의하는 책임까지 혼재되어 있었다고 생각하고 있었다. 이제는 WebSecurity 설정클..

프로젝트 2024.04.09