본문 바로가기
반응형

개발/Docker&kubernetes16

[Rancher Desktop] Port Forwarding 설정 - 쿠버네티스(k8s) pod, service 실행하고 접속하기 Docker Desktop이 유료화 되면서 로컬에서 Rancher Desktop을 사용하고 있다. Rancher Desktop의 Port Forwarding 설정을 통해 쿠버네티스(k8s) 환경에서 가장 기본적인 pod, service를 실행하고 접속해본다. 일단 테스트는 nginx로 진행을 할 예정이고 k8s 클러스터에 아래와 같이 실행을 한다.# pod 실행$ kubectl run test-nginx --image nginx --port=80# service 실행$ kubectl expose pod test-nginx서비스가 ClusterIP로 생성이 되었다. 일반적인 k8s 환경에서는 NodePort나 로드밸런스 타입으로 선언해야 외부에서 접속 가능하지만 Rancher Desktop에서는 PortF.. 2024. 5. 23.
bad CPU type in executable: kubectl - Mac Rancher Desktop Mac Apple Silicon 칩을 사용하는 환경에 Rancher Desktop을 설치하고 kubectl 명령을 테스트 하는 중에 에러가 발생했다 bad CPU type in executable: kubectl 역시 짐작한데로 Intel 칩이 아닌 Apple Silicon에 따른 환경 문제였다. 해결은 다음과 같이 해결했다 먼저 Rancher에서 kubectl 명령어가 어디에서 실행되는지 확인한다. 명령어 위치는 /Users/[사용자]/.rd/bin/ 디렉토리에 명령어가 있었다. which kubectl 해당 명령어를 삭제한다. rm -f /Users/[사용자]/.rd/bin/ 다음에 접속하여 kubectl을 다운로드 받는다. 당연히 Apple Silicon을 선택한다. https://kubernete.. 2024. 3. 26.
Docker로 MariaDB 설치하기 개발 테스트 및 스터디 하다보면 DB 구성이 번거로울때가 많은데 docker로 MariaDB를 간단하게 구성해보는 방법을 알아본다 Docker MariaDB 설치 docker로 mariaDB를 설치한다. 설치 시 컨테이너명과 ROOT비밀번호를 설정해 준다. # docker run -p 3306:3306 --name [컨테이너 명] -e MARIADB_ROOT_PASSWORD=[ROOT비밀번호] -d mariadb docker run -p 3306:3306 --name mariadb -e MARIADB_ROOT_PASSWORD=123456 -d mariadb 필자는 로컬에 이미지가 없어서 이미지 다운로드부터 시작을 했다. docker ps 명령어로 컨테이너가 실행된 것을 확인할 수 있다. Docker Ma.. 2024. 3. 18.
docker permission denied 해결 서버에 Docker를 설치하고 Docker 명령어 확인을 위해 docker ps나 docker images 등을 실행하면 아래와 같이 docker permission denied 에러가 뜬다. 이에 대한 원인과 해결하기 위한 방법을 알아본다. 원인 docker 명령어를 사용하는 docker 데몬은 Unix 소켓을 통해서 실행이 된다. 에러 내용에서 확인할 수 있듯이 /var/run/docker.sock 파일은 root 사용자 권한으로 설정이 되어 있다. 따라서 이를 일반 사용자가 접근 할 수 있도록 하기 위해서는 docker 그룹을 만들고 여기에 일반 사용자를 추가해서 해결한다. 해결 docker 그룹에 사용자를 추가한다. # docker 그룹에 사용자 추가 sudo usermod -aG docker $.. 2024. 2. 12.
MongoDB docker 설치 테스트나 학습 용도로 로컬에 MongoDB를 설치해서 사용하는 경우가 종종있는데 로컬에 직접 인스톨하는 방법보다는 Docker를 활용하면 관리하기가 편리하고 간단하다. MongoDB Docker 실행 다른거 다 생략하고 아래와 같이 docker run 명령어만 실행하면 Docker로 mongodb가 실행이 된다. 로컬에 mongodb이미지가 없으면 이미지 pull 부터 실행된다. docker run -d --name mongodb \ -v ~/data:/data/db \ -p 27017:27017 \ mongo 각 옵션에 대한 설명은 아래와 같다. - -d: 백그라운드 실행 - -v: 볼륨 마운트, 로컬 파일 경로를 컨테이너 내부의 파일경로로 마운트, - -p: 로컬 포트 포워딩 - 도커 이미지: 위와 .. 2023. 9. 16.
Docker ENV vs RUN Export Docker에서 기본적으로 환경변수를 사용하는 경우 ENV를 사용하게 된다. 하지만 RUN 키워드로 Shell Command도 사용이 가능한데 환경변수 설정을 위해 RUN export를 사용하면 어떻게 될까. 결론부터 얘기하자면 RUN export는 동작하지 않는다. 그 이유는 RUN export 같은 경우 동일한 Image Layer에서만 사용이 가능하기 때문이다. 간단하게 아래의 예시를 살펴보자 FROM centos:6 ENV FOO=foofoo RUN export BAR=barbar RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ" 마지막 echo에서 각각 설정한 환경변수들을 참조하고 있는데 실행 결과는 다음과 같다. foofoo bazbaz FOO: ENV 키워드.. 2023. 7. 22.
Docker 리소스 일괄 삭제(docker system prune)-미사용 Docker 리소스 모두 삭제 Docker를 사용하다보면 한번씩 사용되고 미사용되는 여러 Container, Image, Network, Volume 등 리소스들이 계속 쌓이게 되고, 이는 호스트 환경의 성능에 안좋은 영향을 미치게 된다. 개별적인 리소스들을 정리하는 방법들이 있지만 docker system prune 명령을 사용하여 일괄적으로 삭제가 가능하다. 먼저 개별적인 리소스 삭제 명령을 정리해보자 docker container prune 미사용 컨테이너 일괄 삭제 docker image prune 미사용 이미지 일괄 삭제 docker volume prune 미사용 볼륨 일괄 삭제 docker network prune 미사용 네트워크 일괄 삭제 docker system prune 명령은 위의 명령들을 모두 실행한다고 볼 수 있.. 2023. 5. 29.
helm upgrade configmap, secret 변경 시 pod 자동 재시작 쿠버네티스에서 Helm을 사용하여 배포를 관리할 경우 configmap이나 secret을 변경하고 helm upgrade 했을 때 기본적으로 관련 pod들은 재시작하지 않는다. 그래서 실제적으로 configmap, secret의 변경 내용이 pod에 반영이 안된다. 예를 들면 아래와 같은 케이스이다. # configmap, secret 변경 vi app-configmap.yaml # helm upgrade로 반영 helm upgrade app -f values.yaml . # pod 재시작 여부 확인 => (재시작 안됨 = 변경 내용 어플리케이션에 반영 안됨) kubectl get po configmap, secret 변경 시 pod 자동 재시작을 위해서 deployment나 pod yaml에 아래 설정.. 2023. 3. 20.
반응형