묻고 답해요
148만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
Taints 와 Tolerations 관련 질문
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 ]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 ]3. 질문 잘하기 법을 읽어보셨나요? [예](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. (https://www.inflearn.com/questions/992407/comment/281901)6. ARM 계열의 m1 , m2 계열은 VirtualBox를 통한 구성이 원할하지 않고, 실습 환경의 다변화는 추후 대처하기 어려워서 현재 과정에서는 지원하지 않습니다. (https://www.inflearn.com/questions/915529)[질문 하기] Taints 와 Tolerations 관련하여Control plane 에 tolerations이 없는 상태로Nodename 을 controlplane으로 설정하니배포가 되는 것으로 보여지는데요.Nodename이 taints와 우선 순위가 어떻게 되는 걸까요?
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
클라이언트IP 확인 방법 문의
안녕하세요! 아래와 같은 환경에서 서비스 구성 중 ACL 설정을 어떻게 구현하면될지 몰라 문의드립니다. 환경- L4 : S-NAT- L2 : 원암 구성- L4 타고들어와 인그레스 컨트롤러를 통해 웹서비스 접속문의사항위와 같은 환경에서 ACL설정을 하려고 보니 클라이언트IP가 아닌 S-NAT로 인해 L4 IP가 찍히고 있습니다. 클라이언트IP를 찍히게 할 수 있는 방법이 있을지 문의드립니다.참고노드포트로 변경하자니 로드밸런싱 및 관리측면에서 어려움이 있을 것 같아 어떤 방법이 좋을지 모르겠습니다. S-NAT를 제외하자니 원암 구성이라 같은 대역 대 다른 서비스로 넘어갔을 때 문제가 생기기도 하구요!
-
해결됨데브옵스(DevOps)를 위한 쿠버네티스 마스터
kubeadm init 실패(+join할 때도 참고)
sudo kubeadm init명령어를 입력했는데 다음과 같은 에러가 발생합니다.ttasjwi20240228@master-1:~$ sudo kubeadm init [init] Using Kubernetes version: v1.29.2 [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR CRI]: container runtime is not running: output: time="2024-03-04T06:52:20Z" level=fatal msg="validate service connection: validate CRI v1 runtime API for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService" , error: exit status 1 [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher이런 문제가 발생하네요. 검색해보면 2020년 containerd github에 이런 증상에 관한 이슈가 올라와져있습니다.https://github.com/containerd/containerd/issues/4581이 이슈의 답변에는 이런 내용이 있습니다.containerd.io 패키지에 의해 설치된 config.toml 파일에는 disabled_plugins = ["cri"]라는 줄이 있는데, 이것이 문제를 일으킨 것으로 보입니다. 이 문제를 해결하려면 다음 명령을 실행하시면 됩니다.sudo rm /etc/containerd/config.toml sudo systemctl restart containerd sudo kubeadm init혹시 워커노드에서 join할 때도 동일한 문제 생기면sudo rm /etc/containerd/config.toml sudo systemctl restart containerd이 명령을 워커노드에 입력해봅시다
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
2024년 3월 4일 기준 설치
아래에 23년 당시 설치방법을 올리신 분의 것으로도 잘 안 되서... 그 사이에 또 바뀌었나 싶어서 노션 링크의 공식 문서를 보고 따라했습니다만 apt 명령으로 kubelet, kubeadm, kubectl이 설치가 안 되는 문제가 있습니다. 노션 링크의 공식문서는 한국어 문서였고, 최신화가 안 되어있던 것입니다. 영어 문서를 봐야합니다. 현재 공식문서에서는 이런 말이 나와있습니다. Note: The legacy package repositories (apt.kubernetes.io and yum.kubernetes.io) have been deprecated and frozen starting from September 13, 2023. Using the new package repositories hosted at pkgs.k8s.io is strongly recommended and required in order to install Kubernetes versions released after September 13, 2023. The deprecated legacy repositories, and their contents, might be removed at any time in the future and without a further notice period. The new package repositories provide downloads for Kubernetes versions starting with v1.24.0.apt.kubernetes.i and yum.kubernetes.io레거시 패키지 리포지토리 deprecatedapt.kubernetes.io and yum.kubernetes.io2023년 8월 13일 이후 릴리즈되는 새로운 쿠버네티스 버전을 설치하기 위해서는 새로운 패키지 리포지토리를 써라http://pkgs.k8s.io새로운 패키지 리포지토리는 1.24.0 ~ 이후의 버전을 지원 이런 내용이 한국어 문서에는 반영이 안 됐습니다. 해당 문서에서는 1.29.0을 설치하기 위해 다음을 하라고 합니다. apt 패키지 인덱스를 업데이트하고 Kubernetes apt 저장소를 사용하는 데 필요한 패키지를 설치하십시오: sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gpg Kubernetes 패키지 저장소의 공개 서명 키를 다운로드하십시오. 모든 저장소에 동일한 서명 키가 사용되므로 URL에서 버전을 무시할 수 있습니다:(우분투 20.04에서는 sudo mkdir -p -m 755 /etc/apt/keyrings 명령어를 입력해야합니다)# If the folder `/etc/apt/keyrings` does not exist, it should be created before the curl command, read the note below. # sudo mkdir -p -m 755 /etc/apt/keyrings curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg 적절한 Kubernetes apt 저장소를 추가하십시오. 이 저장소에는 Kubernetes 1.29에 대한 패키지만 있으므로, 다른 Kubernetes 마이너 버전을 사용하는 경우 URL에서 Kubernetes 마이너 버전을 원하는 버전에 맞게 변경해야 합니다(설치할 Kubernetes 버전의 문서를 읽고 있는지도 확인해야 합니다).# This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list apt 패키지 인덱스를 업데이트하고 kubelet, kubeadm 및 kubectl을 설치하고 버전을 고정하십시오:sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl 결론바로 위 내용을 그대로 적용하신다면 아래 내용을 복사 붙여넣기 하시면 돼요. cat <<EOF > kube_install.sh # /etc/apt/keyrings 폴더 생성 및 권한 부여 sudo mkdir -p -m 755 /etc/apt/keyrings # 1. apt 패키지 색인을 업데이트하고, 쿠버네티스 apt 리포지터리를 사용하는 데 필요한 패키지를 설치한다. sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gpg # 2. 구글 클라우드의 공개 사이닝 키를 다운로드 한다. sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg # 3. 쿠버네티스 apt 리포지터리를 추가한다. echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list # 4. apt 패키지 색인을 업데이트하고, kubelet, kubeadm, kubectl을 설치하고 해당 버전을 고정한다. sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl EOF sudo bash kube_install.sh kubeadm version실행 후 버전 확인을 해보시면 됩니다 지금 자료는 2024.03.04 기준 공식문서(영어<- 중요) 자료고내일 당장 바뀔 수도 있습니다. 제가 지금 올린 내용을 믿으시지 마시고 일단 먼저 공식문서 (영어 <- 중요)를 참고하세요!
-
해결됨개발자를 위한 쉬운 도커
컨테이너의 커널 공유에 대한 의문점
가상화 기술의 사용 이유 중 하나는 실행 환경을 분리하여 서비스의 안정성을 높이는 것으로 알고 있습니다. 하지만 컨테이너는 하나의 커널을 공유합니다. 이는 빠르고 가볍다 라는 장점을 가져다주지만 이렇게 되면 하나의 서비스에서 장애가 발생했을 때 다른 서비스에도 영향을 미칠 수 있는 것 아닌지 궁금합니다. 결국 가상화의 장점을 가지지 못한것 아닐까하는 의문점이 듭니다 !컨테이너가 하나의 커널을 공유한채 실행된다면 프로세스와 크게 다른 부분이 없다고 생각하는데 프로세스와 컨테이너가 어떤 차이를 가지고 있는지 궁금합니다.
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
강의중 소스 코드는 어디서 다운 받나요?
"Artillery 이용해서 부하 테스트 해보기" 강의에서 소스 다운 받을 수 있게 해주신다고 했는데 어디서 받을 수 있나요?
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
npm run dev 실행할 때 오류가 발생합니다.
섹션 5. 견고한 서버 구축하기 강의 이전까지는 문제가 없었는데 갑자기 npm run dev 명령어를 실행하니 아래와 같은 오류가 생기는데 왜 생기는 걸까요?
-
해결됨개발자를 위한 쉬운 도커
Windows 환경에서 섹션9 도커 컴포즈 - Leafy 도커 컴포즈 실행 오류 관련 문의
안녕하세요, 먼저 좋은 강의 만들어주셔서 감사합니다 ^^ 강의&실습을 진행하다가 Windows 10 Home 환경에서 실습 예제가 잘 실행되지 않는 문제가 있어서 문의드립니다. easydocker/leafy에서 07-compose 브랜치(docker-compose.yml 완성된 브랜치)로 체크아웃 후, docker compose up -d로 도커 컴포즈를 실행하면 front 쪽에서 아래와 같은 오류가 발생하고 컨테이너 실행이 되지 않습니다. exec /usr/local/bin/docker-entrypoint.sh: no such file or directory 혹시 해결방법이 있을지 문의드려요~ 윈도우 개행문자 처리 관련 문제일 것 같아서 git config --global core.autocrlf true 설정 후 다시 git clone을 받아도 안되고 구글링을 해봐도 딱히 해결방법이 안나오네요 ㅠㅠ 이미 완성된 07-compose 브랜치로 실행했을 때도 동작하지 않긴 하지만 혹시나 해서 docker-compose.yml & 프론트쪽 Dockerfile 부분 첨부드립니다. 감사합니다.
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
deploy.yml 실행이 안되네요.
test.yml 파일까지는 실행이 되는데deploy.yml 은 실행이 안되네요.Action 에서 test 만 실행되고 deploy 은 실행이 안되는데, 별도로 어디 설정을 해줘야 하나요?확인 부탁드릴게요...
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
loadbalancer 문의 드립니다.
로컬 우분투 환경에서는 외부 IP 가 PENDING 상태에서 변하지 않습니다.꼭 실습환경은 구글크라우드 환경에서 해야 하는지, 아니면로컬환경에서는 LoadBalancer를 사용하지 못하는건지,못하면 다른 방법은 없는 건지 궁금합니다.참고로 우분투에서 로드밸랜서를 만들지는 못하나요?
-
해결됨개발자를 위한 쉬운 도커
하나의 가상서버에 테스트 서버와 운영 서버를 관리하는 방법
보통 운영 서버와 테스트 서버를 관리할 때, 실무에서는 어떤 방식으로 관리하는지 궁금합니다! 저도 팀 프로젝트를 하면서 테스트 서버와 운영 서버를 분리시켜서 CI/CD를 구축하고 싶은데 어떤 방법이 맞는건지 잘 모르겠어서요! 두 개의 EC2를 사용하는건 너무 부담되는데 그럼 하나의 EC2에서 컨테이너 2개(테스트용, 배포용)를 각각 운영하는 방법이 맞는걸까요?
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
도커 컨테이너 run 명령어 실행할 때 질문 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 개발환경은 Windows10 입니다. 도커 데스크탑을 사용하고 있는데요, docker run --privileged -itd --name ansible-server -p 20022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/ansible:latest /usr/sbin/init강의노트에 적어주신 명령어를 보면 -v 옵션이 있습니다. 그런데 제 환경은 윈도우인데도 -v /sys/fs/cgroup:/sys/fs/cgroup 콜론을 기준으로 왼쪽이 호스트에 마운트될 경로로 알고 있는데 윈도우 경로로 바꾸면 에러가 나서 ssh 연결을 할 수가 없습니다. -v 옵션을 제거하고 해도 에러가 나구요. 반드시 저렇게 입력을 해야만 서버가 제대로 구동이 되는데 윈도우 환경인데도 되는 이유는 무엇이고 저렇게 경로를 작성하면 윈도우에서는 어디에 볼륨이 마운트 되는건가요? 강의에서는 -v 옵션에 대해서는 설명을 안하고 넘어가셔서 질문드립니다.
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
NodePord local 환경에서 안됨
안녕하세요우분투 22.04에서 cilium환경 설정이 안되어서 우분투 20.04로 다시 설치해서 사용하고 있습니다.저는 로컬환경에서 우분투 20.04 라이브서버 4대마스터 1대 워커 3대 노드포트 서비스 실습을 하면 방화벽 30001를 마스터에서 허용해도 curl ~~ 하면 curl: (7) Failed to connect to 175.207.200.124 port 30001: Connection refused로컬환경에서는 nodePort로 어떻게 하면 사용이 가능할까요?참고로 공유기 포트는 다 열어져 있습니다.➜ yaml kubectl get nodes -o wideNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIMEstarcoex-first Ready control-plane 6d18h v1.28.2 192.168.10.4 <none> Ubuntu 20.04.6 LTS 5.4.0-172-generic containerd://1.6.28starcoex-four Ready <none> 6d18h v1.28.2 192.168.10.102 <none> Ubuntu 20.04.6 LTS 5.4.0-172-generic containerd://1.6.28starcoex-second Ready <none> 6d18h v1.28.2 192.168.10.100 <none> Ubuntu 20.04.6 LTS 5.4.0-172-generic containerd://1.6.28starcoex-three Ready <none> 6d17h v1.28.2 192.168.10.101 <none> Ubuntu 20.04.6 LTS 5.4.0-172-generic containerd://1.6.28 ➜ yaml kubectl get svc -o wideNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTORhttp-go-svc NodePort 10.110.165.249 <none> 80:30001/TCP 15m app=http-gokubernetes ClusterIP 10.96.0.1 <none> 443/TCP 18h <none> 공유기 외부 ip175.207.200.124, 112.184.55.51, 112.184.55.52, 112.184.55.57
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
혹시 수업 자료가 제공되나요?
지금 강의 수강중인데 express 소스 코드는 확인했는데 그 외 수업자료는 제공이 안될까요? 공부한 내용을 화면 캡쳐해서 정리하고 있거든요.
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
Entity에 toJSON 코드 입력 후 404 에러
Entity.ts에 추가한 toJSON() { return instanceToPlain(this); }이 코드가 들어가면 404에러가 뜹니다. 저 코드를 빼면 돌아가긴 합니다만 이미지(아바타)가 안보이고요.. 그리고 이런 에러가 나서 구글링 한 후 config를 이렇게 바꿨는데, 이게 문제인가.. 싶기도 하고요.. 너무 궁금한데 제발 꼭 좀 아시는 분 답변 부탁드려요
-
미해결쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS
TestEntityApi중 createTestEntity에서 질문있습니다
testService.create(request.getName(), request.getAge());를testService.create(request.name, request.age)로 바꿔도 작동하는데 혹시 차이점이 있나요?
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
kubectl apply 와 create 차이점
안녕하세요.강의들 듣다 보면 지금까지는 pod를 생성할때 kubectl create ~~ 했는데지금은 kubectl apply ~~ 차이점이 있을까요?
-
미해결실습으로 배우는 선착순 이벤트 시스템
DB Lock 대신 Redis를 이용하는 이유
DB Lock을 이용하면 시간이 오래 걸린다는 성능 저하 문제가 발생하기 때문에 Redis를 써야 한다고 이해하였습니다. 하지만 강의 영상에서는 Redis가 싱글스레드를 이용한다고 하셨는데 그럼 똑같이 DB Lock과 마찬가지로 시간이 오래걸리는 것이 아닌가요..?
-
해결됨개발자를 위한 쉬운 도커
github actions 의 steps 중 platforms 제거
안녕하세요. GitHub Actions 관련 실습 중이었는데, 아래와 같은 에러가 발생했습니다. ERROR: failed to solve: node:14: no match for platform in manifest: not found154Error: buildx failed with: ERROR: failed to solve: node:14: no match for platform in manifest: not found 일단은 platforms 를 제거해서 해결했는데요.platforms 관련하여 검색해 알아보니 특정 OS 에 최적화하는 옵셔널한 값으로 넣으면 좋고 안넣어도 괜찮은 그냥 그런 것으로 소개되고 있더라고요 제 질문은 아래와 같은데요. platforms 를 지워서 GitHub Actions 가 성공했는데, 이렇게 실습해도 되나요?실무에서는 보통 platforms 를 작성하는게 관행인가요?
-
해결됨실전도커: 도커로 나만의 딥러닝 클라우드 컴퓨터 만들기
도커를 설명한기 위한 이미지에 관한 질문입니다
안녕하세요. 도커에 최근 관심을 가지고 거의 처음 접하는 수강생입니다. 방금 도커에 대한 오해와 정정 강의를 들었는데 강사님께서 들의셨던 강의의 강사님께서는 왜 os시스템이 없다고 하신 걸 까요? 그 강사님이 잘모르시는 부분이신걸까요? 그리고 왜 도커 홈페이지에서도 유저 스페이스를 빼고 이미지를 첨부/설명 하고 있을까요? 그냥 저희가 없다고 생각해야 이해하기 쉬워서 그런 것일까요? 아님 다른 이유가 있는건가요?