묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
short 옵션 안되네요?
[jenkins@cicd-server api-tester]$ kubectl version --shorterror: unknown flag: --shortSee 'kubectl version --help' for usage.short옵션이 안먹힙니다. ㅠㅠ
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
helm압축푼후 권한
curl -O https://inf.run/NjQJ4tar -zxvf helm-v3.13.2-linux-amd64.tar.gzmv linux-amd64/helm /usr/bin/helm 압축푼후 파일 소유권한으보면-rwxr-xr-x. 1 1001 docker 51220480 Nov 8 2023 helm네요..이걸 /usr/bin으로 옮겨놔도..권한땜에 안되는데요..root root 여야하나요?jenkins jenkins여야하나요?
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
구버전 명령어
최신 도커 버전부터(2~3년전?)는명령어가 달라진걸로 아는데구/신 버전 명령어를 혼합해서 사용해도 괜찮을까요?조금 헷갈리는 부분도 있네요
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
nginx를 모든 컨테이너에 설치를 해줘야하나요??
아직 강의를 다 듣진않았지만...nginx에서 각 컨테이너로 프록시를 해주려면어떻게 해야하나요?혹시 강의내에 내용이 있을까요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
maxSurge 와 maxUnavailable 과 관련한 질문입니다.
현재의 서비스 되고 있는 POD 의 갯수와 지정된 %를 곱했을 때 이것이 정수로 나누어 떨어지지 않을 경우 maxUnavailable 은 소수내림을 하고 maxSurge 는 소수올림을 하는 것으로 이해했는데이제 맞는 건지요? 좋은 강의 감사합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
secret type_docker-registry
"이름 때문에 기대가 너무 컸던 Secret" 강의 내용에 대한 질문 입니다. secret type 중 docker-registry 를 소개해주셨는데 공식 문서에서 해당 타입을 사용하는 예로 써 kubectl 명령어를 이용한 생성에 대한 언급만 있습니다. docker-registry 유형은 yaml 로 생성하여 사용 가능한것인지가 궁금합니다 ..! cafe:https://inf.run/X6Tbp
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
docker hub에서 이미지못가져와요 ㅠㅠ
강의대로 그대로 하고 마지막까지 왔는데2121-deploy 하니까 파드 ImagePullBackOff 상태가 되네요...혹시 dockerhub사이트에서 accessToken 발생하고 secret생성하고 sa등록해주는 그런 절차같은게 필요하나요?
-
미해결비전공자도 이해할 수 있는 쿠버네티스 입문/실전
실무 개발 환경
안녕하세요. 재밌고 좋은 강의를 해주셔서 감사합니다. 아직 70%정도 보고 있지만 궁금하게 있습니다.현재 백엔드 개발자로 근무하고 있는데 저희 환경은 aws의 ec2에 직접 올려백엔드 서버(spring-boot)를 운영하고 있습니다. 점차 쿠버네티스 환경으로 변경하려고인프라담당자들과 백엔드 개발자들이 스터디 및 환경 구축하고 있는데요. 만약 실무에서쿠버네티스 환경으로 바뀐다면 개발자들의 로컬 개발 환경은 어떻게 하시는지 궁금합니다.대부분 자바, 스프링 환경이면 인텔리제이등으로 개발 후 테스트를 해볼텐데 컨테이너에서 다른 개발자들과 다 같은 환경에서 테스트를 해보고 빌드해보고 해야 하지 않는가 싶어서요. 실무에선어떤식으로 개발자들이 개발하는지 개발, 테스트 , 운영 배포 까지 플로우가 어떻게 되는지 궁금합니다.
-
미해결비전공자도 이해할 수 있는 쿠버네티스 입문/실전
교육자료 혹시 공유가 가능하실까요
안녕하세요. 교육 잘 받았습니다. 제가 받았던 교육자료 문서로 받아 볼 수 있을까요? 아니면 온라인으로 찾아볼 수 있는지 확인 부탁드립니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
AWS 배포 시 docker-compose.yml 관리 방법 질문입니다.
현재 강의에서는 aws 인스턴스 에서 직접 compose.yml을 작성하는데 제가 현재 spring boot 프로젝트 루트 경로에 compose.yml을 구현해뒀어도 프로젝트 빌드시에는 yml이 포함되지 않아서 강의와 같이 인스턴스가 직접 생성해줘야하는 지 궁금합니다. 그리고 나중에 ci/cd를 하게 되면 github Actions같은 CI/CD 도구를 이용해야 yml파일이나 .env이런 파일을 직접 인스턴스에 구현하지 않아도 되는 것이 맞는 지 궁금합니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
sudo가 안먹혀요
3강 진행 중에 sudo lsof -i:3306 명령어를 사용했는데 ""Sudo가 이 컴퓨터에서 사용하지 않도록 설정되어 있습니다. 사용하도록 설정하려면 으로 이동하세요. Developer Settings page 설정 앱의"" 이렇게 나와서 시작을 못하고 있습니다. 그리고 다른 질문인데 현재 프로젝트를 하고 있는데 db를 mysql을 사용하고 있는 상황이라 만약 실습을 위해서 포트를 끄면 프로젝트할때 영향이 가는지도 궁금합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
maxUnavailable, maxSurge 25% 이해좀 부탁드려요
강의중 파드가 5개인데..처음에 2개가 생성되는건 maxSurge 25% 5개 파드의 25% 여서 2개인건가요?그런다음에 왜 maxUnavailable 25%에 대해서는 2개 삭제가 아닌 1개만 삭제되는지도 이해가 안되구요 같은 25%인데요...그럼 그상태에서는 4개만 서비스가 되는건가요? 아니면 추가로 생성된 2개도 서비스가 같이 되고있는건가요?그럼 총 6개가 서비스되고 있는상태에서 또 몇개가 생성되고 몇개가 죽나요?이게 일단 기동시간이 같다는 전제하에 블루그린방식과 같다는게 좀 이해가 안갑니다.새로 올라온 서버는 서비스가 안되는건가요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
configmap, secret실시간 반영
secret은 수정하고 파일 열어보면 반영되어잇던데...5초간격으로 조회하는 로직이 있다고 하셨는데 이로직은 원래 파드에 있는 기능인가요? 별도로 만드신건가요? 아니면 파일로 시크릿을 만들었을때 5초간격으로 조회하는게 기본 메카니즘인가요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
Probe에 대한 이해
중요하다고 생각해서 여러번 보는데도 api입장에서는 이해가 잘 안되네요..제가 생각한 결론은 liveniessProbe는 pod재기동을 위한 api 상태체크같고 readinessProbe는 service에 pod를 연결시킬거냐 말거냐를 결정하는거 같은데...이걸 호출하는 api 를 봤을땐 liveness와 readiness의 api를 실무에서 어떻게 각각 구별해서 만들수가 있을까 싶은거에요...또한 app초기화 user초기화로 구분했던것도 실은 서버가 올라옴과 동시에 거의 강사님이 말씀하신 app초기화와 user초기화는 거의 순식간에 끝나는거 아닌지요? 막말로 톰캣서버올라오는 순간 모든 api들은 정상호출되는거 아닌지요..그리고 그렇게 user초기화를 위한 과정이 서버 기동시 그렇게 오래 올라올까 싶기도 하고..만약 실제로 그렇다면 굳이 startupProbe가 왜 필요할까 싶기도 해요...어차피 startupProbe가 성공하던 말던 중요한건 readiness에서 서비스연결할지 여부를 결정할거고 liveness에서 재기동까지 결정할텐데..굳이 startupProbe까지 넣을필요있는지.....설명은 이해가 되지만 실제로 의미가 있을까 하는 생각뿐이에요..
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
그라파나에서 볼려는데
주신 app 설치후부터 그라파다 대시보드에서 메트릭정보 보는게 너무 늦고 그러다보니 fetch에러납니다. cpu, memory 노드 상태를 보면최대 70~80%까지는 가도..ㅇ그이상은 안가는데 너무 버벅대고...그라파나 매트릭정보를 볼수가 없는데요....?app 설치 후부터 그라파나가 맛이가네요 ㅠㅠ컨테이너도 떨어지구요 ㅠㅠ 0/1 로 바뀌고 나서는 컨테이너는 안올라오네요상태를 볼수잇는게 있을가요? 노드 리소스사용량은 full은아닌데
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
대시보드 loki 연결
그라파나 접속은 성공했습니다.대시보드에서 데이타소스 생성시http://loki-stack.loki-stack:3100하면 에러가납니다.그런데 어떻게 저 dns로 찾을수있게 되는지 궁금합니다.그라파나 파드안의 resolv.conf도 dns정보가 없어요grafana-6d965864db-w6d76:/usr/share/grafana$ cat /etc/resolv.confsearch monitoring.svc.cluster.local svc.cluster.local cluster.localnameserver 10.96.0.10options ndots:5logger=tsdb.loki endpoint=checkHealth pluginId=loki dsName=loki dsUID=cegalnku8hgxsd uname=admin fromAlert=false t=2025-03-19T09:00:57.17355809Z level=error msg="Error received from Loki" error="Get \"http://loki-stack.loki-stack:3100/loki/api/v1/query?direction=backward&query=vector%281%29%2Bvector%281%29&time=4000000000\": dial tcp: lookup loki-stack.loki-stack on 10.96.0.10:53: no such host" status=error duration=305.216958ms stage=databaseRequest start=1970-01-01T00:00:01Z end=1970-01-01T00:00:04Z step=1s query=vector(1)+vector(1) queryType=instant direction=backward maxLines=0 supportingQueryType=none lokiHost=loki-stack.loki-stack:3100 lokiPath=/loki/api/v1/querylogger=tsdb.loki endpoint=checkHealth t=2025-03-19T09:00:57.17573486Z level=error msg="Loki health check failed" error="error from loki: Get \"http://loki-stack.loki-stack:3100/loki/api/v1/query?direction=backward&query=vector%281%29%2Bvector%281%29&time=4000000000\": dial tcp: lookup loki-stack.loki-stack on 10.96.0.10:53: no such host" 게다가 loki-stack service 의 ip를 이용해서http://10.~:3100으로 하면 다음 에러가 보이구요왜 syntax error가 나오는지...404 not found라서 그럴까요? 혹시 loki git yaml에서 특별히 수정하신부분이 있을까요? on=12.351705ms queriesLength=1 stage=prepareRequest runInParallel=falselogger=tsdb.loki endpoint=checkHealth pluginId=loki dsName=loki dsUID=cegalnku8hgxsd uname=admin fromAlert=false t=2025-03-19T09:10:30.171955345Z level=error msg="Error received from Loki" duration=169.402576ms stage=databaseRequest statusCode=400 contentLength=65 start=1970-01-01T00:00:01Z end=1970-01-01T00:00:04Z step=1s query=vector(1)+vector(1) queryType=instant direction=backward maxLines=0 supportingQueryType=none lokiHost=10.110.135.91:3100 lokiPath=/loki/api/v1/query status=error error="parse error at line 1, col 1: syntax error: unexpected IDENTIFIER" statusSource=downstreamlogger=tsdb.loki endpoint=checkHealth t=2025-03-19T09:10:30.172189572Z level=error msg="Loki health check failed" error="error from loki: parse error at line 1, col 1: syntax error: unexpected IDENTIFIER"마지막으로 그라파나 서버 들어가서 curl날린결과입니다.
-
해결됨개발자를 위한 쉬운 도커
강의 이미지 사용
안녕하세요. 강의 잘 듣고 있습니다. 다름이 아니라 저는 공부할때 공부한 내용을 정리하고 벨로그에 포스팅하는데요. pdf 이미지 (에를 들어 컨테이너의 라이프 사이클) 를 캡처 해서 같이 올려도 괜찮을 까요?
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
그라파나 접속이 안되네요 ㅠㅠ
아무리 grafana접속해봐도 안뜨네요 ㅠㅠgrafana삭제하고 재성성해봐도 똑같아요.아래는 pod로그입니다. info 레벨만 제외하고 로그 추출해봤어요 로컬로 실행해도 아래처럼 나와요강의대로 하다보면 kubernetes-dashboard는 30000 노드포트가 열려있고,grafana는 30001 저는 30010으로 했는데 여튼, 로컬에서 telnet 으로 해보면 30000포트는 열리는데 30010 은 안열립니다. 겉에서 봤을때는 서비스가 떠있지만 제대로 외부에서 날려보면 응답이 없는상태입니다. 그런데 마스터서버 들어가서 curl날려보면 302가 나옵니다. 검색해보고 찾다찾다 안되서 다시 글남겨봅니다 ㅠㅠ
-
미해결쿠버네티스 어나더 클래스-Sprint3 (#실무핵심 #Docker #Nginx #Minio #Longhorn)
preStop sleep 5초의 기준이 궁금합니다.
안녕하세요 일프로님. 수업을 듣다 궁금한 점이 생겨 질문드립니다.1.preStop sleep time을 5초로 잡은 기준이 무엇인지 궁금합니다. 구체적으로는 1)경험적으로 얻은 것인지 여부2)하드웨어나 클라우드 서비스의 경우 EKS 같은 매니지드 서비스 마다 적절한 sleep time이 크게 달라질 수도 있을지 궁금합니다.2. 기존 서비스의 sleep time을 40초에서 5초로 단축해도 괜찮을지제가 인수인계 받은 사이드 프로젝트가 있는데 AWS EKS에 Spring 서버가 구현되어 있습니다. 현재 sleep time이 40초로 되어있는데 단축해도 큰 문제는 없을까요? *장애가 나도 괜찮은 서비스라 학습 목적으로 편하게 테스트 할 예정입니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
볼륨을 쓰는 이유
4분쯤에 "볼륨을 제대로 잘 쓰려면 호스트의 디렉토리 경로를 빈 디렉토리로 만들던, 아니면 존재하지 않는 디렉토리로 만들어 놔야 이 컨테이너에 저장돼 있던 파일들을 이리로 붙여넣기를 해버립니다.이렇게. 호스트에 파일이 이미 있으면 이렇게 컨테이너 기존에 있던 폴더 다 지워버리고 복사가 됩니다."라고 하셨습니다.근데 볼륨을 쓰는 이유가 호스트에 파일을 저장하여 mysql 컨테이너를 변경해도 저장된 값을 쓰게 하려는 것인데 호스트에 있는 파일을 매번 지워야한다면 볼륨을 쓰는 이유가 없는 거 아닌가요?