55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결대세는 쿠버네티스 [초급~중급]
Ingress를 통한 LoadBalancing과 Service를 통한 LoadBalancing의 차이에 대해 질문드립니다.
안녕하세요 태민님. 덕분에 요즘 손쉽게 쿠버네티스를 배워가고 있습니다. 이번 질문은 강의와는 다소 거리가 먼 내용도 있긴합니다...ㅎ 1. Ingress의 개념을 얘기할 때에는 Ingress라는 오브젝트와 IngressController라는 기능을 주로 다루는 것 같은데요. 제가 이해한 바는 아래와 같습니다. Ingress라는 "개념"은 클러스터로 들어오는 요청을 로드밸런싱한다는 개념이고, Ingress라는 "오브젝트" 자체는 어떤 방식으로 라우팅과 로드밸런싱을 할 지에 대한 설정. ingress controller 역할을 하는 "파드"는 그 설정을 바탕으로 로드밸런싱을 진행한다. 제가 이해한 위의 내용이 맞는것인지요..? 되게 사소한 내용같긴하지만, 강의 및 기타 다른 블로그들에서도 "Ingress가 요청을 분산시켜준다." 는 식으로 설명이 되어있는 부분이 있어서 저는 처음에 Ingress로 접속을 하는 건 줄 알고 시도를 했는데, Ingress Controller로 접속하고, Ingress Controller가 요청을 분산시켜주는 게 맞지 않을까 싶어서 여쭤봅니다. 2. 다음은 약간 네트워크 계층과 관련된 내용입니다. 서비스(특히 LoadBalancer)와 Ingress Controller가 어떻게 다른가인데요. 서비스는 L4 계층의 LB이고, Ingress Controller는 L7 계층의 LB이다. 라는 내용을 보았습니다.(https://stackoverflow.com/questions/50966300/whats-the-difference-between-exposing-nginx-as-load-balancer-vs-ingress-control) 네트워크 계층이 쿠버네티스의 주 내용이 아니라 빠져있는 게 당연하겠지만, 제가 네트워크쪽이 좀 약해서요..ㅜㅜ 좀 깁니다. 제가 이해한 내용에 따라 서비스와 인그레스, 네트워크 계층의 작동방식을 예시로 들어보겠습니다. 틀린 부분이 있다면 짚어주실 수 있을까요? --- 예시 Nginx IngressController Pod의 IP가 10.10.10.5, 10.10.10.6 Nginx IngressController Pods를 LoadBalancer type으로 노출시킨 service의 IP가 10.10.10.10 요청을 넘겨받을 Application Pod의 IP가 10.10.20.5,10.10.20.6 요청을 넘겨받을 Application Pods를 ClusterIP type으로 노출시킨 service의 IP가 10.10.20.10 이라고해보자. 정상적으로 client가 외부에서 직접 요청을 보내게되는 IP는 10.10.10.10이다. 그럼 이 LoadBalancer type 서비스는 URL이 어디든, Method가 뭐든 상관없는 L4 계층의 로드밸런싱을 이용해 Nginx IngressController Pod 중 하나로 요청을 넘겨준다. 요청을 넘겨받은 IngressController Pod는 URL과 Method, IP를 통한 L7 계층의 로드밸런싱을 이용해 적절한 app service로 요청을 넘겨준다. 요청을 넘겨받은 app service는 L4계층의 로드밸런싱을 이용해 적절한 app pod에 요청을 넘겨준다. 요청을 넘겨받은 app pod는 드디어 요청에 따른 작업을 수행하고 반응을 보낸다. --- 이번 내용은 상당히 길고, 간단히 답해주시기 힘들 수도 있는 점 죄송합니당. 강의 열심히 들을게요!
- 미해결대세는 쿠버네티스 [초급~중급]
ingress를 이용해서 클러스터를 외부로 노출시키고 싶을 떄
안녕하세요. 태민님 강의 잘 듣고있습니다. Ingress를 이용하던 중 궁금증이 생겨 글 남깁니다. Ingress Controller를 service로 expose함으로써 외부에서 접근할 수 있잖아요? 강의의 경우 NodePort를 이용했던 걸로 기억합니다. 근데 NodePort는 range가 아마 3만번대로 설정이 되어있는 걸로 알고 있는데, LoadBalancer로 노출시키는 방법 외에, 그냥 Node의 80번포트로 접속시키는 방법은 없을까요? 예를 들어 foo.com 에 어떤 노드 하나의 IP(예를 들어 123.123.123.123)만 설정함으로써 foo.com:80접속 =>123.123.123.123:80으로 번역됨=> ingress controller 서비스로 접속=> 다양한 노드의 pod로 요청 뿌려짐. 이러한 작업을 원하는데, LoadBalancer을 이용할 수 없고 NodePort를 이용하는 경우엔 foo.com:80접속 =>123.123.123.123:80으로 번역됨=>노드의 Nginx를 거쳐 80번에 대한 요청이 NodePort로 넘어감 => ingress controller 서비스로 접속=> 다양한 노드의 pod로 요청 뿌려짐. 이렇게 Ngnix나 Apache 등을 중간에 끼워넣어야하나 싶습니다. 질문이 좀 장황할 수 있는 점 죄송합니다. 애매한 부분은 다시 되물어주세요.ㅜㅜ
- 미해결대세는 쿠버네티스 [초급~중급]
쿠버네티스 대시보드에서 exec로 pod접속이 안됩니다..
(사진)
- 미해결대세는 쿠버네티스 [초급~중급]
같은 node 의 수를 유지한 채 replica를 scale out할 때의 장점이 무엇인가요?
꼭 수업의 어느 부분에 관련된 내용은 아니고, 항상 궁금했던 내용인데 이번에 강의를 듣게 되면서 질문해봅니다. 요점은 같은 node의 수를 유지한 채 replica를 scale out 할 때의 장점이 무엇인가입니다. 항상 orchestraion 기술을 배울 때 replica를 scale out하는 내용이 나오면서, 사용자가 많을 때는 Pod를 늘려주고, 적을 땐 줄여주고 이런 Auto Scaling 에 대한 내용이 등장하는데요, 제가 궁금한 것은 node 자체가 늘어나서 cluster의 리소스가 증가하지 않는한, replica를 늘린다고 해서 과연 성능이 좋아질까? 의문이 듭니다. 예를 들어서 원래 노드 3대, Pod 6개로 돌아가는 서비스가 있는데, 사용자가 증가한다고 해서 노드는 여전히 3대인데, Pod는 12개로 증가시킨다고 해서 얻어지는 장점이 있는지요?? 제가 아는 선에서는, 한 Pod가 unhealthy할 때 잃는 능력이 적어지기 때문에 좀 더 서비스가 안정성이 있다는 것인데요. (예를 들어 Pod가 2개인데 그 중 하나가 unhealthy면 순간적으로 서비스를 50퍼센트밖에 이용 못함.반면 Pod가 6개인데, 그 중 하나가 unhealthy더라도 순간적으로 5/6는 이용가능하다는 안정성) 혹은 WAS의 Connection수를 늘려줄 수 있다던가. 혹은 node의 리소스를 좀 더 착취시켜서 서버 자원을 빡세게 사용한다던가(다만 이경우는 노드가 죽을 확률도 높아지긴함) 정리하자면, 보통의 컨테이너 오케스트레이션 기술에서 scale out을 할 때에는 새로운 노드도 클러스터에 추가해준 뒤 replica 수를 늘리는지, 단순히 노드에서 replica만 늘리는 경우도 있는 지 궁금합니다. 그리고 앞서 말씀드렸듯이, 같은 노드 상황에서 replica만 늘리는 행위가 어떤 장점이 있는 지 궁금합니다! 감사합니다!!
- 미해결대세는 쿠버네티스 [초급~중급]
helm chart에 관련해서
helm chart에 대해서도 강의를 하실 계획이 있으신가요?? 강의를 들으며 구글링하다보면 helm chart라는 걸 써서 자원들을 묶어 하나의 패키지로 해준다는데.. 실무에서 필수라면 꼭 알고싶어요..ㅎㅎ
- 미해결대세는 쿠버네티스 [초급~중급]
블루그린 배포시엔 다플로이먼트를 이용하지 않는 이유
블루그린 배포시엔 디플로이먼트를 이용하지 않는 이유가 따로 있나요?
- 미해결대세는 쿠버네티스 [초급~중급]
ingress 실습 에러 발생
ingress 실습 2-4) ingress 부분의 마지막 curl명령에 에러가 있습니다. curl 192.168.0.30:30431/ curl 192.168.0.30:30431/order curl 192.168.0.30:30431/customernginx 서비스를 확인해 보니, 아래와 같다."spec": { "ports": [ { "name": "http", "protocol": "TCP", "port": 80, "targetPort": 80, "nodePort": 30168 }, { "name": "https", "protocol": "TCP", "port": 443, "targetPort": 443, "nodePort": 31423 } ],이 명령에 변화가 있는 것인가요? kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.27.1/deploy/static/provider/baremetal/service-nodeport.yaml알려주세요.
- 미해결대세는 쿠버네티스 [초급~중급]
ConfigMap 문의드립니다.
태민님 안녕하세요. 오늘 ConfigMap 강좌를 들었는데요. Pod 에 ConfigMap 을 전달하는 3가지 방식의 차이점을 말씀해주셨는데 VolumnMount 방식에서 궁금한 점이 하나 생겼습니다. 제가 아직 도커를 개념만 잡고 스터디는 하지 않은 상태에서 쿠버네티스 강좌를 듣다보니 제대로 된 질문이 아닐 수도 있으니 미리 양해바랍니다. 첫번째, 두번째 방식의 경우 ConfigMap 을 Pod 내의 컨테이너 안에 있는 환경변수 Env 설정과 바로 연동을 시킬 수 있는 반면에 마지막 VolumnMount 방식의 경우, 단순하게 생각하면 Mount 된 볼륨 내에 별도의 설정파일을 하나 생성해 주는 것일 뿐, 컨테이너 내의 Env 와 연동되지는 않는 듯 한데요. 그렇다면 이 방식의 경우, 컨테이너에서 Env 를 참조해도 값을 얻을 수 없게 될 듯 한데요.. 결국 VolumeMount 의 경우, 컨테이너 내의 Appl 에서 Config 를 Get 하는 방식 조차 달라져야 된다는 것을 의미하는 것인지요?
- 미해결대세는 쿠버네티스 [초급~중급]
대쉬보드 문의드립니다.
안녕하세요. 쿠버네티스를 배우고자 오늘 결제하고 수강 중에 있습니다. 현재 Case2 번으로 VirtualBox 에 설치를 모두 마쳤습니다. 그런데 설치를 마칠 때는 대쉬보드 접속에 문제가 없었는데 VM 종료 이후 다시 접속하여 시도를 해보니 아래 메시지가 계속 뜨네요. 혹시나 해서 6-1) 과 6-2) 를 다시 시도해 보아도 동일한 증상 입니다. 어떻게 하면 조치가 가능할 지 지원 좀 부탁드릴께요. { "kind": "Status", "apiVersion": "v1", "metadata": { }, "status": "Failure", "message": "no endpoints available for service \"https:kubernetes-dashboard:\"", "reason": "ServiceUnavailable", "code": 503 }
- 미해결대세는 쿠버네티스 [초급~중급]
dashboard 접속 시 SKIP 불가한 현상
안녕하세요. 최근에 강의 수강하면서 열공하고 있습니다. 강의 다 듣고 실습을 하고 있는 중에 대시보드 로그인 화면에서 SKIP이 되지 않아 어려움에 있습니다. 강의 자료실에 있는 내용으로 진행하고 있습니다. master 1대, 노드 2대로 구성했구요. 클러스터도 잘 구성되어 있고, cailco, coredns 등도 정상적으로 Running 상태입니다. 도움 부탁드립니다. 감사합니다.
- 해결됨대세는 쿠버네티스 [초급~중급]
ingress 를 찾는 원리?
안녕하세요! 강의 잘 보구 있습니닷 궁금한 것이... nginx 네임스페이스 안의 pod는 어떻게 default 네임스페이스 안에 들어있는 ingress를 찾을 수 있나요? 네임스페이스와 상관 없이 클러스터 안의 모든 ingress를 nginx가 찾아내는 것인가요?
- 미해결대세는 쿠버네티스 [초급~중급]
강의 교안관련 문의입니다
안녕하세요, 강의 pdf를 다운받으려고 하는데 다음과 같이 나와서 문의드립니다. 감사합니다!
- 해결됨대세는 쿠버네티스 [초급~중급]
복제한 node 에서 curl 사용시 host 인터넷이 끊기는 문제
안녕하세요! 제 환경은 다음과 같은데요... hostos: 윈도우 10 pro virtualbox: 6.10.14 k8s-master: centos7, (virtualbox 에 표시되는 mac 주소: 080027C1CBF2) 설치 동영상의 case2 를 따라하는 중입니다. master 를 복제해 node1 으로 이름 붙인 후 (virtualbox 에 표시되는 mac 주소: 080027E373E5) vi /etc/sysconfig/network-scripts/ifcfg-enp0s3를 사용해서 ip 수정(192.168.219.31)systemctl restart networkhostnamectl set-hostname k8s-node1실행 한 후, curl www.google.com 을 사용해서 인터넷 연결을 확인하는 순간!윈도우10 의 인터넷 연결이 끊어져 버립니다....!'문제해결'을 사용하면 The default gateway is not available 이라는 메세지가 나옵니다. 윈도우 10의 인터넷 연결은 복구됩니다.그러나 다시 node1 에서 curl 을 쓰면 또 인터넷이 끊겨버립니다.마스터에서는 이런 일이 전혀 발생하지 않는데요... node1 에서 인터넷이 끊기는 경우를 살펴보면- 부팅할때- curl 을 사용해서 인터넷에 접속하려고 시도할떄윈도우10의 인터넷이 끊겨버리더라구요.윈도우10 에서 ipconfig /all 을 사용해서 gateway 를 살펴봐도 ip 가 바뀌어 있다거나 하진 않았습니다. (192.168.219.1)도대체 원인이 무엇일까요? 선생님...혹시 짚이는 부분이 있을까요?
- 미해결대세는 쿠버네티스 [초급~중급]
kubectl 대시보드 설치시 에러 관련 문의 드립니다.
쿠버네티스 워크숍 보며 실습을 하는데 위와 같이 대시보드 설치하여 접속시 에러가 나옵니다. 어떻게 해결해야 할까요? <설치> kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml <실행> kubectl proxy --port=8080 --address='0.0.0.0' --disable-filter=true & <브라우저 뒤에 아래 붙여서 접속> /api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ 여기까지 했을 때 위의 스샷처럼 나옵니다... 버젼은 1.10.1 로 나옵니다. 위 설치시의 apply 대신 delete 를 주어 삭제 후, 공식 홈페이지의 2.0 beta 버전을 설치 후, kubectl proxy & 로 실행 후, 공식 홈페이지에서 말하는 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ 접속을 하려고 시도해 보았으나, 제대로 접속이 되지 않아 문의를 남깁니다. 도와주세요 선생님...
- 미해결대세는 쿠버네티스 [초급~중급]
on premise 환경에서 DNS 접근 문의 드립니다
kubernetes on premise 환경에서 도메인을 통해 접근하는 연결은 모두 master를 통해서만 접근이 가능한건가요? 바로 node를 통해 접근하도록 설정도 가능한지 궁금합니다.
- 미해결대세는 쿠버네티스 [초급~중급]
인증 skip관련
안녕하세요. aws에서 환경구성해서 쿠버네티스 구성했습니다. 저는 ubuntu16.04로 마스터1 노드3개로 구성했습니다. 해당 올려주신 dashboard.yaml파일 cmd입력하고 진행했는데 계속 인증을 해달라고 뜨는데 어떻게 해야할까요?
- 미해결대세는 쿠버네티스 [초급~중급]
안녕하세요. 혹시 강의교안도 공유가능할까요?
필기하면서 듣고싶은데 아무래도 강의속에 있는 ppt화면위에 하는게 좋을것같아서요 ㅎㅎ 혹시 ppt공유된곳이 있을까요?
- 해결됨대세는 쿠버네티스 [초급~중급]
CentOs 설치시 화면 프리징 문제 해결법!
Virtual Box 설치 -> 카카오 미러에서 CentOS-7-x86_64-Minimal-1908.iso 다운로드 -> 영상대로 세팅 후 실행 -> 언어 설정 ... 까지는 잘 되었는데, '설치 대상'을 고르는 화면에서 화면이 멈춰버리는 버그가 있었습니다! 마우스 커서는 움직이는데, 클릭도 안되고 키보드도 안 먹고... 거의 2~3시간은 날린것 같아효... 포기하고 Ubuntu 를 설치하려고 비비는 와중에... 우연히 비디오 메모리가 16MB 밖에 되지 않는다는 걸 발견했습니다! 설정에서 128MB 로 바꾸니 속도도 엄청 빨라지고 버그도 사라졌어요! 다른 분들께 도움이 될까 하여 남겨놓습니다~
- 미해결대세는 쿠버네티스 [초급~중급]
로컬에서 kubectl 연결하기 오류
강좌 kubeadm 셋팅 2번째 버전으로 Hyper-v 로 3대의 가상화 컴퓨터를 만들어 클러스터 환경을 구축 하였습니다. 그리고 로컬 PC(Host PC) 에서 kubectl 명령을 실행 하기 위해 kubectl 을 설치 하였습니다. Host PC에서 Master IP로 Dash 까지는 접속 되어 집니다. 그리고 kubectl 를 이용해 배포나 커맨드를 실행하기 위해 로컬의 .kube 디릭토리의 config 파일의 설정을 master의 config를 확인 하여 동일하게 변경 하였습니다. 그런데 접속시 인증 문제로 아래와 같은 오류가 발생 합니다. error tls: failed to find any PEM data in certificate input google 을 해보니 인증키 문제로 보이나 자세한 해결 방은을 찾진 못하여 도움을 요청 하고자 합니다. 실무에서도 kubectl 커맨드는 빌드 서버나 외부 환경에서 실행 하거나 api 를 이용하여 툴을 만들어야 할 것으로 보여지는데... 혹시 어떻게 이 문제를 해결 할 수 있을지 가이드를 주실수 있을까요?
- 미해결대세는 쿠버네티스 [초급~중급]
안녕하세요 로드밸런서에 대해 궁금한게 있어서 질문드립니다.
안녕하세요 일단 로드밸런서라는게 기본적으로 트래픽 분산이라는 개념을 가지고 있는것으로 알고있습니다. 그래서 특정 ip로 많은 트래픽이 접근했을 때 예를들면 192.168.0.10 ~ 192.168.0.200 까지의 범위로 설정해두면 알아서 배분되서 접근되게 말이죠 근데 쿠버네티스에서의 서비스의 로드밸런서의 의미는 단순히 external IP를 제공되는 용도로밖에 생각되지 않는데 이게 맞는지에 대해 여쭤보고싶습니다. 현재 온프렘 환경에서 metallb를 사용하여 실험해보고있는데 구성환경은 이렇습니다. 공유기가 있고 해당 공유기에 대한 외부IP는 (125.x.x.x) 입니다. 내부에서 동적으로 할당 가능한 IP는 (192.168.0.10 ~ 192.168.0.200) 까지구요 쿠버네티스 마스터 노드는 내부 IP 192.168.0.98 입니다. 이 마스터 노드에서 metallb를 통해 로드밸런서로 할당 가능한 IP의 범위를 (192.168.0.10 ~ 192.168.0.20) 으로 지정해 놨구요 예제를 위해 만들어놓은 nginx를 로드 밸런스 service로 묶어 배포를 했더니 external IP 192.168.0.10를 할당받았습니다. 그리고 공유기에서 포트포워딩을 통해 192.168.0.10 에 대한 포트 포워딩을 해줬고 외부에서 125.x.x.x 로 접근하면 nginx가 정확하게 띄워집니다. 근데 이제 의문사항은 1. 로드밸런서의 IP범위를 10~20으로 지정해놨는데 이 서비스 IP가 사용자 몰림에 따라 유동적으로 바뀌는 것인지 2. 만약 IP가 바뀌는 것이라면 바뀌는 IP에 대한 외부 포트포워딩을 일일이 다 해줘야하는 것인지 가 궁금합니다. 감사합니다.