묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공자도 이해할 수 있는 쿠버네티스 입문/실전
섹션3 16번 강의에서 질문있습니다
ImagePullPolicy: IfNotPresent를 설정했지만 여전히 NAME READY STATUS RESTARTS AGEspring-pod 0/1 ErrImageNeverPull 0 59s라고 나옵니다.제가 찾아보니 docker 이미지는 데몬 에서 생성되었고, Kubernetes의 런타임이 자기 저장소에서 spring-server 이미지를 찾을수없다고 나오는데 이럴때 어떻게 해결해야하나요?
-
미해결대세는 쿠버네티스 (초급~중급편)
worker node1 접속 후 토큰 붙여놓기 후
master 에서 join.sh 내용출력이 안됩니다.worker node1 접속 후 토큰 붙여놓기 후 아래와 같이 출력됩니다. [root@k8s-worker1 ~]# kubeadm join 192.168.56.30:6443 --token fdfwp6.t3ccgvnu2mdzdilt --discovery-token-ca-cert-hash sha256:fc087710b4581cea2a70d62948902e219b9d60ef8767749dc8595118fb5bdf68[preflight] Running pre-flight checkserror execution phase preflight: couldn't validate the identity of the API Server: configmaps "cluster-info" is forbidden: User "system:anonymous" cannot get resource "configmaps" in API group "" in the namespace "kube-public"To see the stack trace of this error execute with --v=5 or higher
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
dockerfile build 질문
docker build -t my-jdk17-server .명령어 실행했는데 선생님처럼 my-jdk17-server 이미지만 생성되는게 아니라openjdk:17-jdk 이미지까지 자꾸 생성이 되는데 왜 그런지 이유가 궁금합니다!
-
미해결대세는 쿠버네티스 (초급~중급편)
csi-node-driver 클러스터 노드 재부팅후 CrashLoopBackOff
https://cafe.naver.com/kubeops/495에 있는 설치 메뉴얼로 설치를 하였습니다성공적으로 설치를 하였고 모든 파드가 running 상태인걸 확인 하였습니다 그후 클러스터,노드 종료후 재시작 하였을시 아래와 같이 csi-node 파드들이 정상적으로 실행이 되지 않습니다. 로그는 아래와 같이 나옵니다[root@k8s-master ~]# k logs csi-node-driver-tjw8x -n calico-system Defaulted container "calico-csi" out of: calico-csi, csi-node-driver-registrarexec /usr/local/bin/csi-driver: exec format error 클러스터랑 노드를 재시작시 터미널에서 종료한것이 아닌 비추얼박스 ui에서 종료를 하였는데 터미널에서 shutdown을 하여야 하는것인가요?
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
PostgreSql permission 에러
안녕하세요.실습을 진행하는 도중에 권한 문제와 관련된 에러를 만났습니다.docker logs 7be chmod: changing permissions of '/var/lib/postgresql/data': Operation not permitted The files belonging to this database system will be owned by user "postgres". This user must also own the server process.디렉토리에 대한 적절한 권한을 postgresql 컨테이너가 가지고 있지 못해서라고 하는데요. 이 때, Docker 볼륨을 사용해서 문제를 해결하는게 가장 적절할까요?docker volume create postgredata
-
해결됨인프런 클론코딩 Part 1: Next.js와 NestJS로 시작하는 실전 프로젝트
3000포트 겹치네요
혹시 헤메시는 분들을 위해next.js nest.js 모두 기본 포트를 3000번 사용합니다. 간단하게 수정하시려면 backend/main.ts파일에서 app.listen(port)를 변경 하셔서 사용하시면 됩니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
schema.gql 질문 드립니다.
entity 등으로 생성된 tpye 에서 강의에서 사용된 코드로 예시를 들면# product.entity.ts @JoinTable() @ManyToMany(() => ProductTag, (productTags) => productTags.products) @Field(() => [ProductTag], { nullable: true }) productTags: ProductTag[];위와같이 nullable 을 사용하여#schema.gql type Product { productId: String productName: String! description: String! productPrice: Int! isSoldout: Boolean! productSalesLocation: ProductSalesLocation productCategory: ProductCategory user: User productTags: [ProductTag!] }productTags: [ProductTag!] 와 같이 할 수 있었습니다.위에서 productTags: [ProductTag!]를 productTags: [ProductTag] 와같이 변경 해보려고합니다.방법이 있나요?@Field(() => [ProductTag, { nullable: true }], { nullable: true })에러는 발생하지 않지만 안됩니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
서버 재실행시 Many to Many
yarn start:dev 를 할 경우Many to Many 로 자동으로 생성되는 table이자꾸 문제를 일으키네요. 서버 재 실행시 기존에 만들어진 중간테이블 강의에서는 상품_상품태그 테이블이 되겠네요.해당 테이블을 삭제후 실행하지 않으면 에러발생시키네요.원인을 찾아보면 아래 코드의 주석된 custom join table 이 문제였는데요.기본 @JoinTable 사용시 문제는 사라집니다. // @JoinTable({ // name: 'PRODUCT_TO_PRODUCT_TAG', // 원하는 중간 테이블명 // joinColumn: { // name: 'PRODUCT_ID', // Product 엔티티 ID를 참조하는 컬럼명 // referencedColumnName: 'productId', // Product 엔티티의 실제 ID 컬럼명 (기본값은 PrimaryColumn 이름) // }, // inverseJoinColumn: { // name: 'PRODUCT_TAG_ID', // ProductTag 엔티티 ID를 참조하는 컬럼명 // referencedColumnName: 'productTagId', // ProductTag 엔티티의 실제 ID 컬럼명 // }, // }) @JoinTable() @ManyToMany(() => ProductTag, (productTags) => productTags.products) @Field(() => [ProductTag], { nullable: true }) productTags: ProductTag[]; 질문 1. 위의 문제를 해결할 수 있는 방법입니다.질문 2.DB 컬럼에는 UPPER_CASE (SCREAMING_SNAKE_CASE) 로 작성하지 않나요?그렇기 때문에 custom / 각 컬럼마다 @Column({ name: 'BOARD_TITLE', type: 'varchar', length: 50, nullable: false, }) @Field(() => String) boardTitle: string;위와 같이 컬럼명을 하나하나 지정해줬습니다.typeorm 또는 요즘 실무 컨벤션에서는 강의에서처럼 카멜표기법으로 사용하나요?Node 강의지만 Java기준 스프링 기본설정에서 카멜케이스조차도 스네이크로 자동 변환하는데 말이죠!msa 구조에서는 테이블은 공통된걸 사용할수도 있으니 궁금해서 질문 드립니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
도커 설치
안녕하세요. 작성해주신 게시글을 보고 도커를 세팅하고 있습니다.일단 도커 설치는 완료하였습니다.이후 wsl 커널 업데이트를 하라고 써있는데 저는 wsl 업데이트 안내창도 안나오고 powershell에서 docker pull nginx를 입력했을때 정상적으로 작동이 됩니다. 이러면 커널 업데이트를 안해줘도 되는건가요?
-
해결됨개발자를 위한 쉬운 도커
Remote JVM Debug Setting
실무에서 도커를 사용하고 있지만 intelliJ 에서 spring app을 실행하고 개발환경을 맞출 수 있다는 생각은 안해봤습니다. 좋은 내용 감사합니다.다만 remote JVM Debug 설정을 추가할 때 before launch 설정중 '+'에서 'Lanch Docker Before Debug' 옵션이 없는데 왜그런걸까요? 확인해주시면 감사하겠습니다. 좋은 하루 되세요
-
미해결비전공자도 이해할 수 있는 쿠버네티스 입문/실전
ECR에서 이미지를 받아오지 못하고있습니다
ECR에서 이미지를 못받아 오는거같습니다... 무슨 문제일까요..NAME READY STATUS RESTARTS AGE spring-deployment-6fdbd9cd87-j8ljj 0/1 ErrImagePull 0 6m1s spring-deployment-6fdbd9cd87-mchqp 0/1 ErrImagePull 0 6m1s spring-deployment-6fdbd9cd87-tp5x6 0/1 ErrImagePull 0 6m1sError from server (BadRequest): container "spring-container" in pod "spring-deployment-6fdbd9cd87-j8ljj" is waiting to start: trying and failing to pull imageEvents: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 4m7s default-scheduler Successfully assigned default/spring-deployment-6fdbd9cd87-j8ljj to ip Normal Pulling 70s (x5 over 4m6s) kubelet Pulling image "960452239058.dkr.ecr.ap-northeast-2.amazonaws.com/kube-ecr:1.0" Warning Failed 70s (x5 over 4m6s) kubelet Failed to pull image "960452239058.dkr.ecr.ap-northeast-2.amazonaws.com/kube-ecr:1.0": rpc error: code = NotFound desc = failed to pull and unpack image "960452239058.dkr.ecr.ap-northeast-2.amazonaws.com/kube-ecr:1.0": no match for platform in manifest: not found Warning Failed 70s (x5 over 4m6s) kubelet Error: ErrImagePull Normal BackOff 10s (x15 over 4m5s) kubelet Back-off pulling image "960452239058.dkr.ecr.ap-northeast-2.amazonaws.com/kube-ecr:1.0" Warning Failed 10s (x15 over 4m5s) kubelet Error: ImagePullBackOff 아키텍처 불일치 문제 같은데ARM64용 이미지 빌드 및 푸시를 해서 해결하려니Dockerfile이 없다고ERROR: failed to solve: failed to read dockerfile: open Dockerfile: no such file or directory꼬리에 꼬리를 무는게 뭔가 잘못된방향으로 가는거 같아서 도움이 필요합니다..
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
no basic auth credentials
ECR 생성도 되었고 권한 추가 했고 codeDeploy 성공 했는데 도커 로그인 안된 것 같습니다. 이럴때 어떤 것을 살펴보면 될ㄱ까요?
-
미해결도커 쓸 땐 필수! 도커 컴포즈
개인실습해설 프론트엔드, 백엔드 데이터베이스 방명록
지금 현재 버전의 도커에서는 enviroment도 허용하지 않고 volume이 매핑되지 않은 상태도 허용하지 않네요 업데이트 부탁드립니다.
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
CodeDeploy Amazon Ec2 인스턴스
ec2 러닝 중이고 탄력적 IP 까지 할당 받았는데, 키 , 값 선택이 안 뜰수가 있나요? 만약 안뜨면 그냥 직접 입력 하면 될까요??
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
로컬과 ec2에서 같이 실행이 안되나요?
기존 로컬에서 mysql+spring 프로젝트에 해당 강의 영상을 보며 적용하고 있었습니다. compose.yml 설정을 하고 application.yml 설정까지 하니 localhost -> my-db 로 바뀌어서 그런지,,로컬에서는 db 연결이 실패했다고 뜨는데요 (ec2 인스턴스에서는 실행 됩니다) 정상적인 것인지 궁금합니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
application.yml 변경 후 ecr push 시 변경내역 업데이트
스프링부트 기본 포트인 8080에서 80으로 변경하고 싶어. application.yml 설정에서 port:80 변경 후 다시 push 하였는데요. .gradlew clean buildaws 로그인docker compose up -d --builddocker push "url" 그런데 이렇게 이미 존재한 이미지라고 뜹니다. 0e05aa91b84c: Layer already exists 빌드 시 .yml이 변경되면 .jar 파일도 변경되어 이미지가 새로 push되어야 하지 않나요?이 부분 때문에 며칠 고민 하고 있어서 질문드립니다...
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
2021_DEV_HTML 파일을 어디에서 다운 받을 수 있을까요?해당 파일이 없어서 실습 진행이 안되고 있습니다.파일을 다운받을 수 있는 링크나 이메일로 보내주시면 감사하겠습니다.ghtjd3795@naver.com
-
미해결대세는 쿠버네티스 (초급~중급편)
Readiness probe warning
[👍좋은 질문을 했을 때 좋은 답변이 돌아 옵니다]1. 실습 중 본인의 환경이 가이드와 다른 부분이 있었다면 말씀해주세요.2. 해당 문제의 발생 빈도(재설치 여부)와 문제 해결을 위해 시도해본 케이스를 말씀해 주시면 원인 파악에 큰 도움이 됩니다.3. 에러 메시지만 봐서는 저도 모르는 경우가 많아요. 그전에 했던 작업이 포함된 캡쳐 화면도 부탁 드려요.4. 영상 내용에 대한 질문 시 해당 시간을 같이 올려 주시면 답변을 드리는 시간이 더 빨라집니다.5. 긴 로그는 제 메일로 보내주세요. (k8s.1pro@gmail.com) 안녕하세요.k8s pod에서 Readiness probe warning: Probe terminated redirects, Response body:xxxprobewarning이 나오는데 이런 경우는 어떤이유일까요??혹시 response code가 200번대 300번가 아닌경우만 실패로 본다고 알고있는데 300이면 실패는 아니지만 warning으로 나타날수있는걸까요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
Error: Process completed with exit code 126.
Run ./gradlew clean build2./gradlew clean build3 shell: /usr/bin/bash -e {0}4 env:5 JAVA_HOME: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.7-6/x646 JAVA_HOME_21_X64: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.7-6/x647/home/runner/work/_temp/24e2a6f8-136d-471b-b2ea-6203042af791.sh: line 1: ./gradlew: Permission deniedError: Process completed with exit code 126.찾아보니깐 실행 권한이 없어서 ./gradlew 스크립트를 실행하지 못했다는 뜻이라고 하는데즉, Gradle Wrapper 파일에 실행 권한이 없어서 생긴 문제가 맞을까요? - name: gradlew 실행 권한 부여 run: chmod +x ./gradlew이렇게 붙여줬더니 되긴 하더라고요. 맞는 방법이 몰라서 여쭤봅니다.
-
해결됨개발자를 위한 쉬운 도커
빌드 방식에 대해 질문 있습니다.
빌드 방식 설명에서도커 파일을 작성해서 이미지 빌드 명령을 실행하면도커가 임시 컨테이너를 실행하고 도커 파일에 정의된 작업을 수행 및 커밋하여 새로운 레이어를 생성하고 임시 컨테이너를 삭제한다.이렇게 그림으로 되어있는데,커밋을 했다는게 새로운 레이어가 포함된 이미지를 만들었다는 건가요?임시 컨테이너 생성, 커밋, 임시 컨테이너 삭제가 반복저 과정이 반복되는 거면 지시어 한 문장을 만날 때마다 수행 및 커밋하고 임시 컨테이너 삭제하고를 반복한다고 이해했는데,이러면 지시어가 많을 수록 임시 컨테이너 생성, 삭제가 많이 반복되는 건가요?