묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
PV/PVC (local, hostPath) 강의에 대한 질문입니다.
안녕하세요 !강의 5분에 hostPath, local 사용 목적에 관한 질문이 있어 글을 남기게 되었습니다.사용 목적 2번에서 노드의 디스크 공간이 한정적이라 디스크 공간이 부족해져서 노드가 죽어버리면 그 노드 위에 다른 Pod들도 함께 죽는다고 말씀해주셨습니다. 여기서 생긴 의문은 hostPath로 node의 Volume을 사용하든 PVC/PV를 이용하여 Volume을 사용하든 특정 Pod에서 사용량이 많으면 어떤 경우든 죽어버릴 것 같다는 것입니다.아니면, hostPath는 용량을 설정하지 않는데 비해, PVC/PV에서는 용량을 설정해주는 옵션이 있어 해당하는 Pod만 죽고 다른 Pod에는 영향이 없는 걸까요?
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
grafana 대시보드 datasource관련
기존에 mymonitoring이라고 해서 cpu//memory 대시보드 만든건 쿼리에 메트릭조회가 잘 됩니다.거기에서 보면 DataSource 부분에 mixed가 선택되어있고 밑에 A, B 쿼리에서 ${datasource}가 선택되어있는데 ...저 mixed선택부분에 밑에 여러개 리스트가 보이던데 원래 mixed그대로 두는게 맞는지..저기에 보이는거랑 밑에 A,B에서 선택하는거랑 무슨차이가 있는지요? 왜 여쭤보냐면 nginx-controller 강사님 하신대로 대시보드 복사해서 왔는데 거기에는 A,B,C에는 Datasource 이미 prometheus가 선택되어있고 A,B,C에는 선택이아니라 그냥 이름만 표시되어있어서요..어떻게 하는게 맞는건지 헷갈립니다.${datasource} 그리고 그랸 Prometheus 이거 차이는뭔지 헷갈립니다.
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
Jenkins 파일 - 파라미터 사용법 차이
안녕하세요섹션 18 - 82번 강의 : 배포 파이프라인 구축 후 마주하게 되는 고민들(실습)수강 중 Jenkins 파일에 대한 질문이 있어 문의 드립니다. Jenkins 파일을 작성할 때, parameter로 PROFILE(배포환경선택)과 DOCKERHUB_USERNAME(도커허브유저명)을 설정하셨는데 하기 코드를 보시면 parameters { // 배포 환경 선택 choice(choices: ['dev', 'qa', 'prod'], name: 'PROFILE', description: '배포 환경 선택') // DockerHub 사용자명 입력 string(name: 'DOCKERHUB_USERNAME', defaultValue: '', description: 'DockerHub 사용자명을 입력하세요.') // GitHub 사용자명 입력 string(name: 'GITHUB_USERNAME', defaultValue: '', description: 'GitHub 사용자명을 입력하세요.') } stage('헬름 배포') { steps { // helm 명령 사용 - [1] 중요 데이터 암호화 관리 withCredentials([file(credentialsId: 'k8s_master_config', variable: 'KUBECONFIG')]) { sh "helm upgrade api-tester-${CLASS_NUM} ./${CLASS_NUM}/deploy/helm/api-tester -f ./${CLASS_NUM}/deploy/helm/api-tester/values-${params.PROFILE}.yaml" + " -n anotherclass-222-${params.PROFILE} --install --kubeconfig " + '${KUBECONFIG}' + // [5] Helm 부가기능 " --wait --timeout=10m" + // 최대 10분으로 설정 // [2] 잦은 배포 - versioning 무의미, 계획된 배포 - versioning 필수 " --set image.tag=${TAG}" + " --set image.repository=${DOCKERHUB_USERNAME}/api-tester" } } } PROFILE은 앞에 "params"가 붙어있고 (${params.PROFILE}),DOCKERHUB_USERNAME은 환경변수처럼 그냥 ${DOCKERHUB_USERNAME}로 사용하신 것을 볼 수 있습니다. 혹시 choice문을 사용하여 사용자가 선택하는 prarmeter의 경우 params를 붙인다던가 하는 규칙이 있는 걸까요? 위 두 개 사용 방법이 다른 것에 원인이 있는지 궁금합니다.
-
미해결비전공자도 이해할 수 있는 쿠버네티스 입문/실전
50강 빌드파일
지금까지는 눈으로 학습했는데, AWS ECR에 올리는 실습을 직접 하려다 보니 로컬에서 spring boot 빌드하는 환경 구성에 시간을 잡아먹고있습니다. 개발자가 아니라서 이런 개발환경은 너무 낯선데, 다른방법으로 빌드할수는 없을까요. VSCODE에서 SpringBoot Extention Pack으로 고군분투해봐도 시간만 소요될 뿐 진행되지 않아 문의드립니다.
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
scrap_config확인후에 잡등록 여부확인 내용은
job이름이 조회가 되면 Operator까지의 기능은 동작을 잘 한거다. 라호 하신 부분은 즉, operator가 여기에 secret을 보고 prometheus에 nginx 메트릭 가져올 serviceMoinitor를 선택한 설정을등록했다고 보면되는것이다라고 보면될까요?아니면 저 잡등록된 의미는 무엇일가요?
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
Prometheus CRD serviceSMonitorSelector매핑확인시
prometheus리소스 야믈내용을 아래에서 보면 이 값과 매칭되는 레이블에 이 내용이 있는 ServiceMonitor 를 찾는것이다.release: monitoring 이라고 prometheus리소스 야믈내용에 있는데요. values.yaml의 serviceMonitorSelector 설정을 통해 수정 가능하다고 하셨는데serviceMonitor를 monitoring이라고 선택하는부분을 변경할강사님이 만드신 values-custom.yaml에도 없고values-yaml에도 해당 항목이 없던데release: monitoring은 설정이 없을때 디폴트값인가요???만약 추가할려면 values.yaml에 어떻게 넣어야 하나요? 항목이 안보여서요..그나마 values.yaml안에 serviceMonitor항목 하위 항목들중에 jobLabel: jobLabel selector: {} # matchLabels: # k8s-app: kube-dns이부분이 보이긴 하던데..여기에 release: monitoing 이라고 넣어야 하는건가요?
-
미해결비전공자도 이해할 수 있는 쿠버네티스 입문/실전
빌드(jar 패키징) 오류 공유
아마 h2같은 in-memory DB를 사용하지 않고, 직접 mysql driver를 추가한 경우는 datasource객체를 만드려고 시도하면서 url, username, password같은 정보가 없다면 스프링 서버를 띄우기도 실패할 것입니다! 이렇게요.FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'.스프링 프로젝트를 생성하면 최초로 만들어지는// java @SpringBootTest public class XXTests { @Test void contextLoads() { } } // kotlin @SpringBootTest class XXTests { @Test fun contextLoads() { } }이 테스트코드도 실패할거에요그럴때는 해당 클래스 파일을 없애거나@SpringBootTest 어노테이션을 제거하거나맨 위에 @Disabled를 추가해줘서 테스트를 생략하게 하면 될 것 같습니다!보통 테스트코드에서도 스프링 컨테이너 뜰 때 드라이버가 있다면 DataSource 빈을 만드려고 시도하다가 기본 ENV가 없다면 실패할 것 같은데..재성님은 아마 테스트코드를 지우신게 아닐까 생각되네요!
-
해결됨비전공자도 이해할 수 있는 쿠버네티스 입문/실전
Secret 질문
재성님! 강의 잘 보고 있습니다!k8s에서 Secret 관련해서 예전에 본 걸 기억하기로는 value값은 base64로 인코딩된 값이어야 한다고 봤는데, 영상에서는 잘 동작하네요!?제가 잘못 알고 있는지, 아니면 다른 방식이 있는지 등 궁금합니다!
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
실무에서 젠킨스를 파드 형태가 아닌 서버에 직접 설치 해서 사용 하나요?
안녕하세요 선생님 스프린트 1,2 강의를 모두 듣고 젠킨스 운영 관련 궁금한 점이 생겼습니다. 학습에선 젠킨스를 vm 에 직접 설치하셨는데요. Grafana, Prometheus, Argo CD 등은 모두 파드로 컨테이너환경으로 설치 하셨습니다.젠킨스만 vm에 직접 설치한 이유가 있는건가요? 젠킨스도 pod 형태로 운영 하는 것에 어떤 제약이 있는 걸까요?실무에선 젠킨스를 보통 어떻게 운영 하는지 궁금 합니다. (현재 강의처럼 별도 서버에 직접 설치 운영 하는건지?)
-
해결됨쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
쿠버네티스 이해도에 대한 질문
안녕하세요! 현재 컴퓨터공학과 4학년에 재학 중인 대학생입니다.일프로님의 자세한 설명 덕분에, 현재 섹션 7까지 문제 없이 잘 따라가고 있습니다.감사합니다. 최근에 든 생각이 있습니다.일프로님이 강의에서 설계하신 인프라 구조나 Object들이 서로 어떻게 연결되고 어떤 역할을 하는 지는 강의를 들으면 이해가 됩니다. 물론, 복습도 꾸준히 하고 있습니다.하지만, 제가 그 구조를 어떠한 논리를 가지고 혼자서 설계를 하라면 못 할 것 같다는 것입니다. 아직 제가 강의 초반이라 그런 걸까요? 아니면, 제가 추가로 알아야 하거나 공부해야 될 지식이 있는 걸까요..?강의 자체는 이해가 되고 따라하며 잘 진행하고 있지만, 정확히 어떤 마음가짐(?)이나 방식으로 공부해야 할 지 잘 모르겠습니다.. ㅜㅜ 쿠버네티스는 이번이 처음이라 주저리 너무 길었네요.. 혹시나 답변 남겨주시면 참고하여 다시 공부해보겠습니다!감사합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
Argo Rollouts 에 대해 질문 드립니다.
강사님 Argo Rollouts 를 수업하실 때두개의 서비스 active 와 preview 를 기동시키셨는데 이게 실제 real system 에도 이렇게 운용되는 건지요?아니면 Active 만 운용하다가 blue/green 시점에 Appliacation 을 통해 preview를 배포하고 두개의 서비스를 등록하고 blue/green 배포를 실행하는 건지요? 아울러 일반적인 경우(롤링업데이트 포함)의 경우 deployment.yaml 을 사용하였고 이는 Helm과 연동됨을 확인하였습니다. 그렇다면 강사님께서 예로 드신 rollout.yaml 도 Helm과 연동시킬 수 있는 건지요? 예제에서는 Helm 이 전혀 보이질 않아서 여쭤 봅니다.
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
Argo 의 CRD 에 대해 질문 드리고 싶습니다.
Argo 의 경우 Application 이라는 새로운 CRD 를 이용하여 Deployment 등의 k8s 리소스를 관리하는 거 같습니다.CRD 의 경우 CRD 의 관리하에 생성된 리소스의 경우 CRD 가 삭제되면 같이 삭제되는 것으로 알고 있는데 Argo 의 Application 을 삭제하면 동일하게 동작하는게 아닌지요?좋은 강의 잘 듣고 있습니다. 어디서도 들을 수 없었던 강의 내용에 감사드립니다. 아울러 강사님의 강의자료를 바탕으로 저 만의 노트를 200페이지 정도 만들었습니다. 다 강사님 덕분입니다. Helm 도 다 들었고, sprinter 3, 4 도 구매했습니다. 빨리 5가 나왔으면 하고 기다리고 있습니다.
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
대시보드 cpu쿼리 관련
기존 대시보드에서 쿼리를 가져오는데cpu 패널 그리는데 쿼리가A Query :sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace="a-anotherclass-434",container!=""})by(pod, container)/sum(kube_pod_container_resource_requests{job="kube-state-metrics", namespace="a-anotherclass-434", resource="cpu"})by(pod, container) 이렇게 되어있던데...두번째 kube_pod_container_resource_requests 함수의 sum값으로 왜 갑자기 나누기를 했는지가 궁금합니다. 어떤 의도이신지요?그리고 앞 쿼리를 나누기 전에 대략 cpu값들이 20~30%라면 뒤에 request는 0.1%에 해당됩니다. 그러면 20/0.1로 나눠버리면 200이 나오는게 맞는데..강사님은...그렇게 안나오는게 좀 이해가 안가네요 ? 추가로 메모리할때는 requests는 메모리와 1:1 비율이니까 max값을 1로 했는데 request가 메모리와 1:1비율이라는게 무슨의미안가요?
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
대시보드에서 질문드립니다.
일단 따라하고 있는데 보이지 않던 value가 보입니다.총 쿼리가 A,B,C 세개인데..그리고 궁금한건...아니...직접 강사님은 node를 by옵션으로 추가하거나 이런건 어떻게 감감적으로 알수있는지 궁금하고 B같은경우에 Options값에는 legends에 그대로 안건들고 capacity라고 뒀는데 이유가있고 또 저건 뭔지도...궁금합니다.실제로 혼자 한다고 했을땐 legend값이나 by 부분 처가한거나..node를 추가한거나..이런걸 다 어떻게 알고 해야하나 갑갑하네요..감사합니다.
-
미해결실전! GitHub Actions으로 CI/CD 시작하기
강의자료 다운로드 문제
안녕하세요강의 자료 다운을 했는데 내부에 아무 파일도 없는 문제가 계속 발생하고 있습니다.확인 부탁드립니다.
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
metrics 함수 변경여부
그라파나 지표 생성시기존꺼에서 가져오고 이전 함수들은 최신함수로 변경하셨는데 지표값이 안나오면...그런 특정 메트릭이 변경됐고 어떤걸로 해야할지는 구글링으로 확인하면될가요?
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
serviceMonitor관련문의드려요
이 단원 들어오면서 어렵네요.operator가 prometheus crd를 보고 statefulset prometheus 를 만들어준다고했는데그럼 serviceMonitor crd를 보고는 operator가 무얼 만들어줍니까? serviceMonitor crd도 있고 prometheus설치하면서 service 리소스 타입도 있던데....이건 servicemonitor리소스와는 또 어떤관계인건지...?servicemonitor라는 crdservicemonitor kind타입의 리소스아래 service들......[root@k8s-master kube-prometheus-stack]# k get service -n monitoringNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEalertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 18hmonitoring-grafana ClusterIP 10.109.212.0 <none> 80/TCP 18hmonitoring-kube-prometheus-alertmanager ClusterIP 10.106.151.30 <none> 9093/TCP,8080/TCP 18hmonitoring-kube-prometheus-operator ClusterIP 10.105.53.49 <none> 443/TCP 18hmonitoring-kube-prometheus-prometheus ClusterIP 10.105.22.75 <none> 9090/TCP,8080/TCP 18hmonitoring-kube-state-metrics ClusterIP 10.99.143.250 <none> 8080/TCP 18hmonitoring-prometheus-node-exporter ClusterIP 10.101.93.137 <none> 9100/TCP 18hprometheus-operated ClusterIP None <none> 9090/TCP 18h그리고 아래 설명에서 말한 service들은 대체 어떤 service들인가요? 실제 서비스할 앱들이 있는 pod를 select하고있는 service 리소스들을 말하나요? 아니면 아래 service라고 칭한건....promethues 설치하면서 만들어진 serivceMonitor crd를 통해 만들어진 servermonitor 리소스가 있고 또 monitoring 네임스페이스에 있는 service 리소스들이 있는데 무얼 말하는지~~서비스서비스 계속 나오니 누구 어떤 서비스를 의미하는건지 구분이 통~ 안됩니다. ㅠㅠ 그리고serviceMonitor crd안에 잇는selector:matchLabels:app.kubernetes.io/instance: monitoringapp.kubernetes.io/name: prometheus-node-exporter이 설정을 그대로 monitoring-prometheus-node-exporter 라는 service 리소스에서 사용하는건가요? 여기 아래 서비스들. 앱이 들어있는 파드 select하는 서비스를 말하는지..kube-prometheus-stack 설치시 생성되는 service리소스를 말하는지...도통 ㅠㅠ- endpoints : 매칭될 타겟 Service의 Port 이름- jobLabel : 타겟 Service의 Label에 key가 jobLabel을 찾아 value 값을 매트릭의 job 라벨로 사용- selector : 매칭될 타겟 Service의 Label 정보
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
kube-prometheus-stack설치시 설명중에
values-custom.yaml내용중에 storageSpec: volumeClaimTemplate: spec: #storageClassName: "storageClassName" accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi selector: matchLabels: app.kubernetes.io/name: prometheus-volume근데 만약 파드를 늘리게 되면 이 스펙에 PVC가 또 만들어지는 거기 때문에 물론 PV를하나 더 수동으로 만들면 연결은 되겠지만 관리적으로 좋지가 않아서 테스트 환경에서 불가피할때만 이렇게 사용을 하시는 게 좋아요 라고 하신부분이 이전 설명에서 말한 prometheus 는 statefulset이라 데이타 공유를 하면 단일서버용으로 만들어진 시스템이라 데이터충돌이 난다고 말씀하셨던 그 부분을 말하는 내용입니까?
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
Prometheus PV관련문의
Pod를 두개로 늘리려면 PV만 수동으로 하나더 만들면되긴 하는데 그렇게 하면 두 Prometheus가 결국 한볼륨을 바라보게 된다. 그럼 문제가 된다.?prometheus는 단일 서버용으로 만들어진 시스템이다.이부분에서StatefulSet인 파드를 두개로 만들었으면 그리고 PV를 수동으로 하나더 만들엇으면 어차피 storageclass라서 동적으로 pvc도 하나더 만들어지고 각각의 파드가 pod -pvc -pv구조로 연결되는거 아닌가요? 왜 결국 한 한볼륨을 결국 바라보게된다는게 이해가 안갑니다. statefuleset pod마다 각각의 고유 pvc를 사용하는거 아닌가요?
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
쿠버네티스 업그레이드 관련 문
먼저 강의 질문 드리고 그 외 질문드려보겠습니다.강의에서 파드를 사전에 1,2개를 삭제해서 다른 worker노드로 보낸건 트래픽이 안끊게 하기위해 실습을 위해 보여주기위함인거죠? 만약 실운영에서 woker노드가 3개이상이면 그럴 필요없는지..실무에서 그렇게 원래하는건지 궁금합니다. 두번째는 실제 업그레이드 할때 강사님이 말씀해주신 부분외에...가령 리소스의 특정 annotation이나 버전값 등등 뭔가 버전업되면서 바뀌어야 하는정보들에 대한 실 가이드 문서를 별도로 보질 않아서 그런것들에 대해 파악하는법을 좀 알고싶습니다.쿠버 공식문서에 버전업 할때 필요한 모든 정보가 하나의 가이드에 다 들어있지 않을것 같긴한데요...가령 changelog라든가 이렇게 있던데..실제보면 양이 상당하고 모두 영어인데다가 ㅠㅠ그래서 실제 뭐뭐 바뀌는지...실무에서 정말 하나하나 다보고 파악하고 정리해야하나요?실무에서 놓치지 않고 업그레이드를 위해 빠지지 않고 다 업그레이드에 변경사항들 다 녹일려면 뭐뭐 봐야하는지...그리고 changelog보는법도 좀 알려주십시오.이것도 상당히 중요한부분같다는 생각이 들거등요이건 강의에 없는내용이고 평소궁금한부분이라 남겨봤습니다. 감사합니다.