묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결개발자를 위한 쉬운 도커
linux용 하위 window 기능 설정
wsl 패키지를 실행시키면 이런 오류가 뜹니다..이렇게 linux용 windows 하위시스템 부분이 체크되어 있는데도요ㅠ하위시스템 설치 완료되어 있다는데 왜 안되는 걸까요?
-
해결됨데브옵스(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 기준 공식문서(영어<- 중요) 자료고내일 당장 바뀔 수도 있습니다. 제가 지금 올린 내용을 믿으시지 마시고 일단 먼저 공식문서 (영어 <- 중요)를 참고하세요!
-
해결됨개발자를 위한 쉬운 도커
하나의 가상서버에 테스트 서버와 운영 서버를 관리하는 방법
보통 운영 서버와 테스트 서버를 관리할 때, 실무에서는 어떤 방식으로 관리하는지 궁금합니다! 저도 팀 프로젝트를 하면서 테스트 서버와 운영 서버를 분리시켜서 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 옵션에 대해서는 설명을 안하고 넘어가셔서 질문드립니다.
-
해결됨개발자를 위한 쉬운 도커
USER 명령어 질문
도커파일에서 USER 명령어가 RUN과 CMD 사이에 와야하는 이유가 무엇인가요? 그리고 USER 명령어가 사용되는 이유에 대해 잘 이해가 가질 않아서 그런데 리눅스의 어떤 개념을 공부해야 하나요?
-
해결됨개발자를 위한 쉬운 도커
CMD 부분에 질문이 있습니다.
CMD ["nginx" "-g" "daemon off;"] 이 부분이 잘 이해가 안가서 찾아보니foreground로 실행되게 변경하는것, 초기 프로세스가 종료되지 않고 컨테이너가 계속 실행된다.로 나와있던데이게 잘 와닿지가 않습니다.. 우선 저 명령어는 생성한 nginx 컨테이너에서 실행되는거라고 이해했는데foreground로 실행된다는게 정확히 어떤 뜻인가요?컨테이너도 도커가 켜져있고 안건드리면 계속 돌아가지 않나요?
-
해결됨실습으로 배우는 선착순 이벤트 시스템
kafka를 왜 사용하는지가 잘 이해가 안가서 질문 남깁니다!
안녕하세요! 강의 잘 듣고 있습니다. 감사합니다. https://www.inflearn.com/course/lecture?courseSlug=%EC%84%A0%EC%B0%A9%EC%88%9C-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%8B%A4%EC%8A%B5&unitId=156125&category=questionDetail&tab=community&q=1029856해당 질문과 답변을 보고 추가 질문 드리려고 합니다. 제가 kafka나 redis, 분산서버 등에 대해 이해도가 낮은 점 양해 부탁드립니다! 1.Kafka 미사용시 주문생성/회원가입요청의 타임아웃 및 10분뒤 실행에 대한 해결책으로 Kafka 를 선택한 이유는 배압조절(back pressure) 때문입니다.이렇게 말씀을 해주셨는데요,답변에서 말씀하신 예시에서 처럼 10000개 요청이 있고,카프카를 사용한다면,요청 100개가 쌓일때마다 db에 insert를 하고, 다시 요청 100개가 쌓일때까지 기다렸다가 insert 하기를 반복한다는 것으로 이해하면 될까요?2. 그게 맞다면, 강의에서 구현한 apply 메서드에서 100개의 요청이 왔는지 확인하지 않고, kafka를 사용해서 다른곳에 전달하여 처리하는 이유는 무엇인가요?예시로 apply 메서드 안에서 redis의 incr 값을 체크하면 요청이 몇개가 쌓였는지 알 수 있을테고, 데이터를 임시저장하다가 100개마다 처리할 수 있을거란 생각이 들었습니다. kafka로 다른 모듈로 전달하는 것과의 차이점이 무엇인가 궁금합니다.3.실제로 consumer에서 100개의 작업이 완료되었는지는 일반적으로 어떻게 확인하는 걸까요? db에 저장하기 전에 100개의 데이터는 어디에 임시저장을 하나요?
-
해결됨개발자를 위한 쉬운 도커
빌드과정에서 USER 부분이 궁금합니다.
강의중해당부분에서 명령을 실행할 사용자를 변경한다고 하셨는데 그러면 궁금한게 해당 사용자에대한 생성과 권한 부여같은것들은 어디에서 진행이 되는것일까요??
-
미해결실전도커: 도커로 나만의 딥러닝 클라우드 컴퓨터 만들기
애져서비스에서 Quota늘리기
안녕하세요. 강의를 따라 애져에 계정을 만들고 GPU 가상 머신을 만들려고 했습니다. 그런데 Quota가 모자르다고 나오면서 진행이 안되고 있습니다. 강의를 보면 Quota를 늘리는 것에 대한 내용이 간단하게 나오는데요, 이부분에 대해 좀 더 설명해 주실 수 있으신가요? 참고로 저는 East US 2 Region을 사용하고 있고 현재 3개의 vCPU를 사용할 수 있다고 나옵니다.
-
미해결대세는 쿠버네티스 (초급~중급편)
kubernetes dashboard v2.7.0 인증서 등록에서 문제
dash board 접근 시,https://192.168.64.30:6443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login{ "kind": "Status", "apiVersion": "v1", "metadata": { }, "status": "Failure", "message": "services \"https:kubernetes-dashboard:\" is forbidden: User \"system:anonymous\" cannot get resource \"services/proxy\" in API group \"\" in the namespace \"kubernetes-dashboard\"", "reason": "Forbidden", "details": { "name": "https:kubernetes-dashboard:", "kind": "services" }, "code": 403 }해당 오류가 발생합니다 권한 문제 같은데.... 인증서도 정상적으로 신뢰함으로 동작하고 있습니다!
-
해결됨개발자를 위한 쉬운 도커
docker run -d -p 8080:3000 관해서 질문 있습니다.
docker run -d -p 8080:3000 --name defaultColorApp devwikirepo/envnodecolorapp제가 이해하고 있는 부분해당 도커 실행 명령어 중 docker run -d -p 8080:3000 명령어는 호스트의 8080 포트를 컨테이너의 3000 포트에 매핑하여 실행한다. 제가 시도한 부분 docker run -d -p 8080:3000 docker run -d -p 8080:3001 로 내부 컨테이터 포트를(3000 -> 3001) 바꾸게 되면 동작하지 않습니다. 제 생각에는 해당 이미지에 할당된 포트번호 있다고 예상했고 docker image inspect devwikirepo/envnodecolorapp 을 실행 후 해당 이미지 Json에 포트번호가 있는것을 확인했습니다. "ExposedPorts": { "3000/tcp": {} }, 제가 궁금한 부분1. "ExposedPorts" 의 "3000/tcp": 내부 컨테이너 포트번호는 별도로 세팅할 수 없나요? 2. 제가 시도하여 찾은 "ExposedPorts"의 "3000/tcp": {} 이 docker run -d -p 8080:3000명령어의 :3000 과 같나요? 3. 8080:3001 로 내부 컨테이너 포트번호를 변경 시 컨테이너 실행은 정상적으로 되지만 왜 Nginx에 접속할 수 없는 걸까요?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
Deploy를 계속 실패합니다.
github에 코드를 푸시하고 action을 확인했을 때 나머지는 정상적으로 수행되는데 Deploy to EB에서 에러가 발생합니다.
-
해결됨개발자를 위한 쉬운 도커
컨테이너 런타임에 관한 질문이 있습니다.
컨테이너 런타임은 컨테이너를 생성 혹은 제거할때에만 관여하는건가요??
-
미해결개발자를 위한 쉬운 도커
맥에서는 도커를 어떻게 사용하는건가요?
맥에서 iterm에 접속하고 docker -version을 치면 docker server의 os가 linux로 나와있어서 그때부터 의문점이 생겨 질문드립니다. 도커가 리눅스 커널(Namespace, Cgroups)를 활용하여 컨테이너를 만들고 관리하는 것 같습니다. 그런데 맥에서는 어떻게 이게 가능한건지 궁금합니다. 제 예상으로는 도커 데스크탑이 어떤 기술에 의해 리눅스명령을 도커에 실행하면 도커가 명령을 받고 필요한 시스템 콜을 요청할때 도커 데스크탑이 맥 os가 알아들을 수 있게 변환작업을 하는 것같은데 맞는 걸까요?
-
미해결그림으로 배우는 쿠버네티스(v1.35)
vagrant up 시 에러
질문 답변을 제공하지만, 강의 비용에는 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)[질문 하기]vagrant 설치해도 HashiCorp 폴더가 생기지 않아 임의로 c드라이브에 HashiCorp 폴더 생성하여 깃 클론해온 자료 압축 풀고 vagrant up 시 에러 발생합니다. 에러 문구는 댓글에 복붙해놓겠습니다.
-
해결됨작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
502 Bad Gateway
2024/01/15 15:08:24 [error] 22#22: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.64.1, server: , request: "GET / HTTP/1.1", upstream: "http://172.18.0.2:8000/", host: "192.168.64.7" 위와 같은 오류가 발생하는데 문제가 무엇인지 모르겠습니다.
-
해결됨작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
mariadb 접근권한 오류
File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 193, in initsuper().__init__(*args, **kwargs2)django.db.utils.OperationalError: (1044, "Access denied for user 'django'@'%' to database 'django'") mariadb 컨테이너를 실행 후,django 컨테이너를 실행 시 위와 같은 오류가 발생합니다.찾아보니 django 에 대한 권한이 없어서 그렇다고 하는데,해결방법이 있을까요?
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
마지막 배포시에 도커 관련 문제
마지막 배포시에 Run echo "***" | docker login -u "***" --password-stdin2 echo "***" | docker login -u "***" --password-stdin3 shell: /usr/bin/bash -e {0}4Error response from daemon: Get "https://registry-1.docker.io/v2/": unauthorized: incorrect username or password5Error: Process completed with exit code 1.에러가 지속적으로 발생합니다. 도커 로그인에 사용되는 유저네임과 비밀번호를 그대로 입력하였음에도 계속해서 발생하는 문제입니다.
-
해결됨개발자를 위한 쉬운 도커
이미지안에는 OS 에 관련 궁금한 사항
현재 강좌까지 들은 상황에서 궁금한 점이 있어 글을 쓰게 되었습니다.이미지 안에 OS 도 포함된 것으로 보이는데 그렇다면 이미지를 만드는 주체자는 각 OS 별로 별도로 파일들을 만들어줘야 하나요? 그렇다면 너무 많은 이미지를 생성해야하는 것 아닌가 하는 의문이 듭니다. -- 강의 설명이 아주 친절해서 좋은 것 같아요. :)