묻고 답해요
148만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결대세는 쿠버네티스 [Helm편]
K8s 에서 Service, Pod, Container 의 Port 매핑 질문
안녕하세요 강사님. Helm 강의이긴 하지만 K8s 도 전문적으로 가르치시는 걸로 알고 있어서, K8s 질문을 조금 하게 되었습니다 (정말 주변에 물어볼 사람이 없어서..). Helm 질문이 아니라서 답변해주시기 어려우시다면 이해하겠습니다 ㅠ 기본기적인 질문인데, Service 가 Pod 내 Container 에게 어떻게 통신을 하는지 갑자기 이해가 조금 안됩니다. 다음과 같은 시나리오 두가지가 있다고 해보겠습니다. 1. Pod 내 단일 컨테이너,Service -> spec.ports.targetPort 에 1000 포트로 통신을 전달하도록 설정되어 있음"Service 는 selector 로 어떤 Pod 에게 보내야할지는 이미 알고 있고, Pod 내 targetPort 로 요청을 전달한다" 라고 이해하고 있습니다. Pod -> spec.containers.ports.containerPort 에 2000번 포트를 점유하도록 설정되어 있음>> 이런 시나리오인 경우에도, K8s 는 통신을 정상적으로 앱에 전달하는 것으로 이해하고 있습니다. containerPort 는 사실 큰 역할을 하지 않고, 실제 container 내부 Application 이 1000 포트에 런닝 중이면 된다고 생각했습니다. ( Spring 경우 application.properties 내의 server.port=1000)>> 결론부터 말씀드리면 이게 "왜 가능한지?" 가 궁금합니다. 2. Pod 내 멀티 컨테이너, Service -> 위와 동일Pod -> spec.containers 내부에 1000번 포트, 2000번 포트에 점유하는 두개의 컨테이너를 정의함 (각각 다른 앱)(물론 권장하는 상황은 아님)>> 이런 시나리오인 경우, 해당 Service 에 요청하면 containerPort:2000 인 컨테이너에게 요청을 전달하고, 해당 컨테이너에 점유중인 앱이 통신을 수신하는 것으로 이해했습니다. >> 그럼 지금 1번 시나리오랑 다른 점인데, 멀티 컨테이너와 단일 컨테이너를 사용하는 Pod 간에는 어떤 차이가 존재하는건지 알 수 있을까요?>> 그리고 이런 경우에는 1번 시나리오에서 제가 이해한 컨테이너 내부 App Port 는 어떻게 아는지? 가 궁금합니다 만약 service 내부 containerPort 가 Pod 내 컨테이너가 점유중인 port 가 아닌, container 내부의 App Port 라면, Service 는 "Selector 를 통해 어떤 Pod 로 보내야 하는지 알 뿐 아니라 어떤 Container 로 보내야 하는지도 알고있다" 가 되는데, 이건 아닌 것 같았습니다. 혹시 어렵지 않으시다면, 제가 기본기가 좀 모자라서, 도움 한번만 주시면 정말 감사할 것 같습니다.
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
apply 실행 후 pod상태가 ContainerCreating 에서 변경이 안됩니다.
질문 답변을 제공하지만, 강의 비용에는 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)[질문 하기]window환경에서 vagrant up은 정상적으로 실행되었고 tabby로 cp에 접속해서 실습을 진행하다가 보니 pod상태가 변경이 안되서 문의드립니다.apply 실행 후 pod상태가 ContainerCreating 에서 변경되지 않습니다.해결 방법이 있을까요? root@cp-k8s:~/_Lecture_k8s_learning.kit/ch3/3.6# k get po NAME READY STATUS RESTARTS AGEnginx 0/1 ContainerCreating 0 78sroot@cp-k8s:~/_Lecture_k8s_learning.kit/ch3/3.6# k describe podsName: nginxNamespace: defaultPriority: 0Service Account: defaultNode: w3-k8s/192.168.1.103Start Time: Fri, 10 Jan 2025 22:02:30 +0900Labels: run=nginxAnnotations:Status: PendingIP:IPs:Containers: nginx: Container ID: Image: nginx Image ID: Port: Host Port: State: Waiting Reason: ContainerCreating Ready: False Restart Count: 0 Environment: Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-44v7r (ro)Conditions: Type Status PodReadyToStartContainers False Initialized True Ready False ContainersReady False PodScheduled TrueVolumes: kube-api-access-44v7r: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: DownwardAPI: trueQoS Class: BestEffortNode-Selectors:Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300sEvents: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 2m10s default-scheduler Successfully assigned default/nginx to w3-k8s Warning FailedCreatePodSandBox 2m11s kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "b57c40549808d64a9c6fd2406bca31e347e84b2374864bcf2ad408be2d761174": plugin type="calico" failed (add): error getting ClusterInformation: connection is unauthorized: Unauthorized Normal SandboxChanged 5s (x11 over 2m10s) kubelet Pod sandbox changed, it will be killed and re-created.root@cp-k8s:~/_Lecture_k8s_learning.kit/ch3/3.6# k get poNAME READY STATUS RESTARTS AGEnginx 0/1 ContainerCreating 0 4m16sroot@cp-k8s:~/_Lecture_k8s_learning.kit/ch3/3.6# k describe podsName: nginxNamespace: defaultPriority: 0Service Account: defaultNode: w3-k8s/192.168.1.103Start Time: Fri, 10 Jan 2025 22:02:30 +0900Labels: run=nginxAnnotations:Status: PendingIP:IPs:Containers: nginx: Container ID: Image: nginx Image ID: Port: Host Port: State: Waiting Reason: ContainerCreating Ready: False Restart Count: 0 Environment: Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-44v7r (ro)Conditions: Type Status PodReadyToStartContainers False Initialized True Ready False ContainersReady False PodScheduled TrueVolumes: kube-api-access-44v7r: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: DownwardAPI: trueQoS Class: BestEffortNode-Selectors:Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300sEvents: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 4m18s default-scheduler Successfully assigned default/nginx to w3-k8s Warning FailedCreatePodSandBox 4m18s kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "b57c40549808d64a9c6fd2406bca31e347e84b2374864bcf2ad408be2d761174": plugin type="calico" failed (add): error getting ClusterInformation: connection is unauthorized: Unauthorized Normal SandboxChanged 1s (x21 over 4m17s) kubelet Pod sandbox changed, it will be killed and re-created.
-
미해결대세는 쿠버네티스 [초급~중급]
기초 Object - Volume 마지막 실습 pod-volume-5 파트생성 오류 문의
기초 Object - Volume 마지막 실습 예제를 따라하고 있는데.. 대시보드에서 파드 생성이 안됩니다. apiVersion: v1 kind: Pod metadata: name: pod-volume-5 spec: containers: - name: container image: tmkube/init volumeMounts: - name: pvc-pv mountPath: /mount3 volumes: - name: pvc-pv persistentVolumeClaim: claimName: pvc-010/3 nodes are available: 1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }, 2 node(s) had volume node affinity conflict. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling..상기와 같은 오류가 보이는데.. 오타가 있는 건지 시간만 의미없게 허비했네요. k84 v1.27 설치버전으로 (mac intel) 따라 하고 있습니다.ㅠㅠ 도움 부탁드립니다.
-
해결됨쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
2-1 배포를 통해 확인하는 파드 생성 질문
pod 생성 실습 질문입니다.처음에 nginx pod를 생성하고 나서 kubectl get pod로 파드를 확인하잖아요?아무리 기다려도 pod가 생성이 안된다고 뜹니다.
-
미해결대세는 쿠버네티스 [Helm편]
tomcat 배포시 pod pending 현상
안녕하세요 수업 잘 듣고 있습니다. helm install my-tomcat . -f values.yaml해당 명령어로 차트 실행까지는 정상적으로 되었고 에러 문구도 따로 뜨지 않았습니다. svc는 nodeport로도 잘 연결되어 있는데 pod가 pending이어서 describe를 해보니 PVC가 Unbound 상태여서 그런 것 같습니다. PVC 로그로는 PV가 존재하지 않다는데 다른 설정 파일을 apply 해주어야 하는 걸까요?
-
미해결대세는 쿠버네티스 [초급~중급]
pod 추가시 문제가 발생합니다
30분도 안돼서 강의 따라하는데 만나는 에러가 너무 많네요.. 앞에 있던 에러들은 어떻게든 해결했는데 pod를 yaml파일로 추가하는 과정에서 다음과 같은 에러가 발생합니다. Failed to pull image "kubetm/p8000": rpc error: code = Unknown desc = Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io on 10.0.2.3:53: read udp 10.0.2.15:34804->10.0.2.3:53: i/o timeout같은 질문이 게시판에 있는걸 봤는데 그저 기다리라고 하시는데.. 다른 방법 없나요?? 거의 1시간째 기다리고 있는데..
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
ImagePullBackOff 오류가 발생합니다
[질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 법을 읽어보셨나요? 예(https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.[질문 하기]안녕하세요.2.1.배포를 통해 확인하는 파드(Pod) 강의 4:44 의 내용을 실습중인데요[root@m-k8s ~]# kubectl get podNAME READY STATUS RESTARTS AGEnginx 0/1 ImagePullBackOff 0 3m27s라고 뜨네요. 어떤 부분을 확인하면 좋을까요?
-
미해결대세는 쿠버네티스 [초급~중급]
파드 포트 궁금한점 입니다.
파드안에서의 컨테이너는 port가 겹칠경우 에러가 난다 라는 것은 알겠습니다 파드 ip : port 로 구분하니까 파드1:80, 파드2:80 같이 파드 끼리의 컨테이너 port는 겹쳐도 문제 없는건가요? localhost:80 하면 누가 나오나요 파드1의 localhost:80과 파드2의 localhost:80은 다른건가요
-
미해결대세는 쿠버네티스 [초급~중급]
pod 생성시 cluster IP로 노출
- 교육과정을 죽 학습하다가 이전의 과정이 궁금해지는 점이 있어서 문의 올립니다. - Pod실습에서 pod 생상하고 나면 Cluster IP가 할당이 되었어요, containerPort를 사용했어요 - 이후 과정에서는 모두 Service controller를 사용해서 Service에 TargetPort를 사용해서 10.x.x.x대역 IP로 접근을 했구요 여기서 궁금한것이. Pod실습에서처럼, containerPort를 할당하면 모든 Pod들은 pod IP가 아닌 cluster IP 만 가지게 되는것인지요? pod내의 container는 localhost IP로만 통신을 하게 되는것인지요 ? container별로 다른 IP 는 할당되는것이 없는지 궁금합니다.
-
미해결대세는 쿠버네티스 [초급~중급]
pod가 직접 외부 접근할때 보여지는 IP
안녕하세요. pod의 네트워킹에 대해 질문 드립니다! pod가 service없이 떠있다고 가정할때, 당연히 외부에서는 pod접근이 불가능합니다. 저는 당연히 pod에서 외부접근도 불가능할꺼라고 생각했는데, pod내부에서 curl 날려보면 (etc. naver, google 등) index.html파일을 다운받으며, 접근이 가능한거로 보여졌습니다. 제가 말씀드린게 맞다면, 도착지에서는 어떤 IP로 인식을 하게 되나요? 또한 어떤 과정으로, 해당 request에 대해 어떤 식으로 response를 하게 되는지 궁금합니다!
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
pod metadata의 label
안녕하세요 좋은 강의 잘 듣고 있습니다. 현재 ch3을 진행중에 있습니다. 간단한 질문인데요 pod의 metadata에서 label로 run을 사용하는데요 이 label은 어디에서 사용되고있는건가요? 혹은 왜 들어가있는건가요? metadata 및 label의 사용법에 대해서 이해가 조금 안되는 것 같습니다. pod metadata label run 키워드로 구글링 해봤는데 정보를 찾기 어려워 문의 드립니다. 감사합니다.
-
미해결초보를 위한 쿠버네티스 안내서
LABELS 이 동일하면 같은 Pod 인것인가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 수강중에 궁금한 부분이 있어서 질문드립니다. 강의 6:00 쯤에 Label 에 다시 app=echo 를 추가하였더니, 원했던 상태인 1을 유지하기위해 pod 하나를 제거하는 부분을 확인했는데요, 제가 궁금한것은 label 이 같은 pod은, pod 내부의 컨테이너라던가 그런것들이 모두 동일하다는 것을 의미하는것인가요? 강의 내용에서는 물론 동일한 pod 의 label 변경을 통해 실습을 한것이였는데, 만약 서로 가지고 있는 정보가 다른 두개의 pod 이 있을경우 예를들어 1. pod , label app=echo, tier=app (기존 rs를 통해 생성된 pod) 2. pod , label tier=app (다른 pod) 이런 경우에서 2번 pod 에 app=echo 를 추가하였을때, 분명 1,2는 서로 다른 pod 일텐데,, replicas 가 1 이였으므로 하나를 제거 할 것으로 예상됩니다. 그럼 어떤기준으로 무엇을 제거하는거죠? spec 에 있던 containers 의 name 과 image 도 자동으로 확인하는것인가요? 전반적인 개념이 많이 부족하여 질문의 전달성이 떨어질까 걱정입니다.. 감사합니다
-
해결됨대세는 쿠버네티스 [초급~중급]
pod 생성과정에 대한 질문
안녕하세요. 강의 너무 잘 듣고있습니다. 강의내용 복습중 이해가 부족한 부분에 대해 질문 올립니다. pod생성 과정이 아래 처럼 생성이 된다는 걸로 이해를 했습니다. 1. client가 kubectl를 이용해 pod 생성 요청 2. api server가 request 받음 3. etcd에 pod 정보 저장 4. scheduler가 api server를 watch하고 있음으로 pod 생성 요청이 들어오면 api server가 watch하고 있는 scheduler에게 통지 5. schduler가 최적의 노드를 판별해 api server를 통해 etcd에 정보 업데이트 6. 각 노드의 kubelet이 api server를 watch하고 있음으로 pod의 노드정보 업데이트 되면 apiserver가 kubelet에게 통지 7. kubelet은 container runtime인 docker에게 컨테이너 생성 요청 .... 그런데 여기서 궁금한점은 pod lifecycle 강의에서 pod status에 대해서는 pod가 생성될때 Initialized 실행을 하고나서 PodScheduled 된다고 설명해주셨는데 해당 강좌에서는 PodScheduled 된 후에 container가 생성이 되는것 같아 질문 올립니다. 순서가 어떻게 되는지 설명 해주시면 감사하겠습니다!
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
pod 배포시 IP 할당은 어떻게 이루어지나요?
안녕하세요 pod 배포후에 kubectl get pod -o wide 명령어로 확인하면, 172.16.132.X 처럼 임의의 IP가 할당되는데, 이 IP는 dhcp처럼 정해진 풀에서 자동으로 할당되는건가요? 그리고 사용자가 수동으로 지정해서 배포할수도 있나요? 한가지더 질문이 있습니다. NodePort 서비스 할당후에 kubectl get service 명령어로 확인하면 nginx 파드에 CLUSTER-IP 가 아래처럼 할당되는데 이 IP는 Node와 Pod가 통신하기 위해 임의로 할당되는건가요? nginx NodePort 10.109.207.40 <none> 80:31935/TCP 20s 감사합니다.~
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
질문입니다.
안녕하세요 강의 잘 보고 있습니다 궁금한 점이 있어서 문의드립니다 현재 get pod -o wide를 해보면 w3 노드에 pod가 배포된 것으로 나오는데요 그러면 서비스 노출 후에 w3 노드의 ip로 접속해야 하지 않을까 하고 생각해보았습니다 하지만 w1, w2, w3 모든 internal ip가 다 먹는데 이유가 궁금합니다. 아니면 제가 생각하고 있는 짐작 자체가 틀린 것일까요?
-
미해결대세는 쿠버네티스 [초급~중급]
auto scaling
안녕하세요. auto scaler 강의 듣다 궁금한 점이 있어 질문드립니다. pod scaler의 경우 cpu 사용율 혹은 메모리 사용율에 따른 자동 증가가 가능한걸로 이해를 했는데 혹시 cluster scaler 는 이러한 설정이 가능한지 궁금합니다. 제가 알아보니 cluster scaler를 만들어 놓더라도 노드에 더이상 파드가 할당될수없을 때 증가.라는 것말고는 pod처럼 설정하는 방법을 찾아볼수가 없었어서 질문드립니다. 감사합니다.