꾸준히 강의시청하고 있습니다만 책 진도상으로 보니 아직 28%정도밖에 안되네요.. 이게 15번째 강의이니 전체강의 완성하시면 50강정도 되려나요ㅎㅎ 이쯤에서 도커강의는 병행하는게 나을까요? 아니면 쿠버네티스를 마치고 시작하는게 좋을까요 강사님? (참고로 따베쿠보면서 음성없이 나오는 환경구성 동영상 시청하며 virtualbox와 우분투등은 설치완료했습니다.)
안녕하세요 9:00 쯤에 나오는 설명에서 Resource Requests : 파드를 실행하기 위한 최소 리소스 양을 요청 Resource Limits : 파드가 사용할 수 있는 최대 리소스 양을 제한 이라고 설명해 주셨는데 동일한 페이지에서 제공해주신 공식 document 에 설명에는 "To specify a CPU request for a container" 라고 나와있습니다. 혹시 단순 설명을 쉽게 하시기 위해 컨테이너가 아닌 파드라고 설명주신걸까요? Resource Requests : 파드를 실행하기 위한 컨테이너별 최소 리소스 양을 요청 Resource Limits : 파드가 사용할 수 있는 컨테이너별 최대 리소스 양을 제한 제가 이해하기로는 이 설명이 조금더 정확한것 같아서요
질문드립니다. 예를 들어 request를 2기가로 컨테이너를 생성하게 되면, node 서버에 2기가에 해당하는 영역만큼 컨테이너에 할당되는 형식으로 동작하나요? 그럼 예를 들어 한 node 서버가 8기가라고 치면, 2기가를 request하는 컨테이너는 최대 4개(기본적으로 돌아가는 게 있으니까 2~3개?) 정도 만들어질 수 있다고 보면 되나요?
@@ttabae-learn 선생님처럼 환경세팅 하려고 설정을 해보았는데 VirtualBox에 마스터1개 노드2개 만들어서 원격 디스플레이에서 다중 접속 허용 하였고, 포트포워딩으로 마스터 101, 각 노드 102, 103 주었습니다. (포트 포워딩에서 호스트IP를 무엇을 주어야하는지 잘모르겠어서 로컬 IPv4도 넣어보고 VirtualBox ip 192.168.56.1도 넣어봤습니다.) 이렇게 설정하고 xshell에서 세션 만들기해서 접속하는데 왜 접속이 안되는지 잘모르겠습니다 ㅜㅜㅜ
안녕하세요 이성미 강사님 너무 잘 보고 있습니다 귀에 쏙쏙 들어와서 드라마처럼 정주행 중입니다. 이 챕터에서 궁금한 것이 하나 있어서 질문드립니다. 각 worker node 들의 cpu 스펙이 다른 경우에는 어느 worker에 배치되냐에 따라 성능이 달라지게 될텐데 스케줄러는 이를 어떻게 판단하나요? 예를들어 node A는 raspberry pi이고 node B는 인텔 i9였다면 cpu: 200m 이라는 값이 일정한 성능을 보장하지 않을 것 같아서요.
이성미 강사입니다. 워커노드 성능이 다른것이 있겠죠? 어떤노드는 GPU가 있고, 어떤것은 없고.. 어떤 노드는 CPU 가 크고 어떤 노드는 메모리가 크고 등등.. 그래서 노드에 레이블링을 해서 특정 애플리케이션이 그 노드에서 실행될수 있도록 배치합니다. 테인트(Taints)와 톨러레이션(Tolerations), NodeSelector 등이 이러한 기능을 하는 쿠버네티스 서비스입니다. 이런 기능없이 진행하면 스케줄러는 애플리케이션이 요구하는 리소스가 있는 노드를 필터링하고, 우선순위 항목을 하나씩 적용해서 scoring한 후 node를 선택하게 되는거죠. 자세한 사항은 아래 링크 보시면 됩니다. kubernetes.io/ko/docs/concepts/scheduling-eviction/kube-scheduler/
정말 재미있게 배우고 있어요. 감사합니다. 최근에 올려주신 내용 모두 따라 해봤는데, docker version 업데이트가 너무 빠르다보니 쿠버네티스가 못 따라가는 듯합니다. 도커 설치하실때, 올려두신 명령어로만 입력하면 최신버전이 설치되는데, 실치되는 최신버전은 쿠버네티스에서 지원을 안하네요. apt-get install docker-ce=5:19.03.12~3-0~ubuntu-focal docker-ce-cli=5:19.03.12~3-0~ubuntu-focal containerd.io
설치시 warning이 뜨긴해서 설치가 실패하지는 않은것이 일반적인데, 저도 오늘 업데이트된 버전을 설치해보지 않아서.. ^^ 올려주신 실습 예제에서 version을 정해주시는것 아주 좋습니다. ^^ 꼭 도커가 아니어도 container runtime이 설치되어 있으면 되는데, 조만간에 contained로 기반으로 설치하는 것도 하나 올릴까 합니다. 아침에 일어나면 오늘은 꼭 하나 더 찍어야지 해놓고.. 하루가 쑥.. 가버리네요. 왜이리 빠른지.. ^^
강사님, 2core cpu를 가진 가상머신에 pod 생성시 cpu: 2로 설정 후 create를 하면 Pending상태로 머물게 되는 걸 확인했습니다. 그 후에 cpu: 1로 바꾸어 Running을 시키고 싶어 kubectl edit 명령어를 통해 수정을 하려 했더니 에러가 발생하며 수정이 되지 않았습니다. 에러 내용은 다음과 같습니다. error: pods "nginx-pod-env" is invalid A copy of your changes has been stored to "/tmp/kubectl-edit-373625844.yaml" error: Edit cancelled, no valid changes were saved. 그렇다면 Pod에 Resource를 할당하여 생성하는 경우 cpu 크기 설정은 edit 명령어로 수정할 수 없는 건가요? 혹시 다른 방법이 있다면 알려주시면 감사드리겠습니다!
이성미입니다. Pod 리소스는 운영중에 수정이 안되고, 별도로 실행해야합니다. 그러니 이전 pod는 삭제하고 다시 실행해야하는것이지요. 이것을 운영중에 바꾸고 싶다면 Vertical Pod Autoscaler를 적용할수 있습니다. 참고: docs.aws.amazon.com/ko_kr/eks/latest/userguide/vertical-pod-autoscaler.html
이번 강의는 limits (파드의 최대 리소스) 와 request (app 입장에서의 실행시 최소 리소스를 가진 Pod 찾기) 가 유용하네요.. 그렇다면 Mongo DB 가 최소 2 core, 4gb 를 request 한다면 각 파드의 limits 를 3 core, 5gb 를 설정하면, 각 파드는 두개의 mongo db containers 를 가지지 못한다고 생각되는데, 아니겠네요. Mond DB 가 1 core, 1gb를 사용하게 되면 또 하나의 request가 같은 pod에 운용될 수 있겠네요..
제가 질문을 잘 이해한것인지 모르겠네요. ㅠㅠ limits는 최대 허용 리소스이고, request는 어느 노드에 스케쥴링해줄지 결정하는 포인트입니다. request 하는 리소스만큼의 여유가 있는 워커노드로 배치되는 것이지요. (app입장에서의 실행시 최소 리소스를 가진 워커노드찾기) 인것입니다. mongoDB 두개 컨테이너를 하나의 Pod에 넣을수 없습니다. 동일 포트 사용하니.. 다른 예를 통해 질문해주시면 제가 더 쉽게 설명해줄수 있을것 같습니다. ^^
와 리소스 단위 표현에 대해서 정말 모르고 있었는데 이거 보고 제대로 알게 됐네요. ki, mi, 200m 무심코 지나갔던 단위들이었는데...
3:35 에서 DDOS공격보다는 DOS공격이 맞는것 같습니다. ^^
항상 감사합니다 꾸벅
계속 저도 꾸벅입니다. ^^ 홧팅하십시요.
꾸준히 강의시청하고 있습니다만 책 진도상으로 보니 아직 28%정도밖에 안되네요.. 이게 15번째 강의이니 전체강의 완성하시면 50강정도 되려나요ㅎㅎ 이쯤에서 도커강의는 병행하는게 나을까요? 아니면 쿠버네티스를 마치고 시작하는게 좋을까요 강사님? (참고로 따베쿠보면서 음성없이 나오는 환경구성 동영상 시청하며 virtualbox와 우분투등은 설치완료했습니다.)
[이성미 강사] 아마도 50강 넘을 것 같아요. 지금쯤 도커 가세요.. 같이 하시면 더 좋아요. 시간이 되시면.. ^^ 저 지금 AWS랑 테라폼 공부중이에요. 것도 나중에 올릴께요.
3독 할게요!! 리눅스나 AWS 강의들도 기대하겠습니다 감사드려요!
정주행중입니다 ㅜㅜ 정말 멋진 강의입니다..
[이성미 강사] 오~ 고맙습니다.~^^ 도움되었으면 좋겠습니다. ^^
12:41 1MB 가 1024kb 랑 다른건지 .. 쿠버네티스에서는 그렇게 인식한다는걸까요????
1MB = 1000KB
1MiB = 1024KiB
안녕하세요
9:00 쯤에 나오는 설명에서
Resource Requests : 파드를 실행하기 위한 최소 리소스 양을 요청
Resource Limits : 파드가 사용할 수 있는 최대 리소스 양을 제한
이라고 설명해 주셨는데
동일한 페이지에서 제공해주신 공식 document 에 설명에는 "To specify a CPU request for a container" 라고 나와있습니다.
혹시 단순 설명을 쉽게 하시기 위해 컨테이너가 아닌 파드라고 설명주신걸까요?
Resource Requests : 파드를 실행하기 위한 컨테이너별 최소 리소스 양을 요청
Resource Limits : 파드가 사용할 수 있는 컨테이너별 최대 리소스 양을 제한
제가 이해하기로는 이 설명이 조금더 정확한것 같아서요
맞습니다. 단순하게 의미 전달하기 위해 Pod라 표현했네요. 제가 꼼꼼하게 전달하지 못했는데.. 이렇게 댓글로 정리해주셔서 너무 고맙습니다.
강사님 너무너무 잘 듣고 있습니다! 의문점이 하나 생겼습니다! 저 cpu에는 멀티코어도 포함이 되어 있나요? 예를 들어서 8코어 16 스레드 라 하면 저 cpu의 총 수는 8개 인가요 아니면 24개 인가요?
[이성미 강사] ^^ 멀티 스레드가 구성되는것은 이미 운영체제가 별도로 CPU로 구별합니다. CPU는 칩 수가 아닌 코어수 입니다.
강의 너무 좋아요!
[이성미 강사님]
고맙습니다. 글 보고 힘 납니다.
질문드립니다. 예를 들어 request를 2기가로 컨테이너를 생성하게 되면, node 서버에 2기가에 해당하는 영역만큼 컨테이너에 할당되는 형식으로 동작하나요? 그럼 예를 들어 한 node 서버가 8기가라고 치면, 2기가를 request하는 컨테이너는 최대 4개(기본적으로 돌아가는 게 있으니까 2~3개?) 정도 만들어질 수 있다고 보면 되나요?
[이성미 강사] 컨테이너에 request - memory 2Gi 를 설정했을때 예약받는것이 아니라 2Gi 지원이 가는한 노드로 스케줄링 받는 것입니다. 스케줄링만 하는거지 보장은 아닙니다.
@@ttabae-learn 답변 감사합니다 ~ !! 영상 잘 보고 있습니다
넵! ^^
선생님 미니큐브로 강의 따라하고있는데
미니큐브는 1노드가 다인가요??
선생님처럼 마스터노드 워커노드 생성하고싶은데 안되고
카타코다같은거 써야할까요?
[이성미 강사] 네. 미니큐브가 좀 한계가 있죠. 서버 구성이 어렵다면 저는 개인적으로 카나코다 추천입니다. 그래도 두개의 노드는 존재하니까요. ^^
@@ttabae-learn 선생님처럼 환경세팅 하려고 설정을 해보았는데
VirtualBox에 마스터1개 노드2개 만들어서 원격 디스플레이에서 다중 접속 허용 하였고, 포트포워딩으로 마스터 101, 각 노드 102, 103 주었습니다.
(포트 포워딩에서 호스트IP를 무엇을 주어야하는지 잘모르겠어서 로컬 IPv4도 넣어보고 VirtualBox ip 192.168.56.1도 넣어봤습니다.)
이렇게 설정하고 xshell에서 세션 만들기해서 접속하는데 왜 접속이 안되는지 잘모르겠습니다 ㅜㅜㅜ
헐 어쩌다보니 연결 되었습니다..감사합니다... 22포트랑 openssh-server을 깔아주니 되는것 같아습니다.
질문이 있습니다.
maser에서 node2로 pod가 생성되었는데
master에서는 kubectl describe pod nginx-pod 명령어로 컨테이너의 상태확인이 가능한데
node2 에서는 docker 명령어로 docker ps -a 로 확인을 해봐도 node2에 생성된 컨테이너의 상태를 확인이 안되는데
node2 에서 컨테이너 상태확인 하는 방법이 뭔지 궁금합니다.
root@master:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-pod 1/1 Running 1 (86m ago) 37h 10.47.0.1 node2
root@master:~# kubectl describe pod nginx-pod
Name: nginx-pod
Namespace: default
Priority: 0
Node: node2/192.168.26.128
Start Time: Mon, 25 Jul 2022 19:45:25 +0900
Labels:
Annotations:
Status: Running
IP: 10.47.0.1
IPs:
IP: 10.47.0.1
Containers:
nginx-container:
Container ID: containerd://ff853840668f6902dc50f5aa3e91fb1dacabcf44dcc4244d4829e52faca925d3
Image: nginx:1.14
Image ID: docker.io/library/nginx@sha256:f7988fb6c
root@node2:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@node2:~#
node2의 root 유저에게 .kube/config 파일이 있어야 kubectl 명령을 사용할수 있습니다. kubectl 명령은 쿠버네티스 인증서가 있어야합니다. 그 인증서가 ~/.kube/config 파일입니다.
node2# mkdir ~/.kube
node2# scp master:/etc/kubernetes/admin.conf .kube/config
이후 실행하시면 될것입니다.
안녕하세요 이성미 강사님 너무 잘 보고 있습니다 귀에 쏙쏙 들어와서 드라마처럼 정주행 중입니다. 이 챕터에서 궁금한 것이 하나 있어서 질문드립니다. 각 worker node 들의 cpu 스펙이 다른 경우에는 어느 worker에 배치되냐에 따라 성능이 달라지게 될텐데 스케줄러는 이를 어떻게 판단하나요? 예를들어 node A는 raspberry pi이고 node B는 인텔 i9였다면 cpu: 200m 이라는 값이 일정한 성능을 보장하지 않을 것 같아서요.
이성미 강사입니다. 워커노드 성능이 다른것이 있겠죠? 어떤노드는 GPU가 있고, 어떤것은 없고.. 어떤 노드는 CPU 가 크고 어떤 노드는 메모리가 크고 등등.. 그래서 노드에 레이블링을 해서 특정 애플리케이션이 그 노드에서 실행될수 있도록 배치합니다. 테인트(Taints)와 톨러레이션(Tolerations), NodeSelector 등이 이러한 기능을 하는 쿠버네티스 서비스입니다.
이런 기능없이 진행하면 스케줄러는 애플리케이션이 요구하는 리소스가 있는 노드를 필터링하고, 우선순위 항목을 하나씩 적용해서 scoring한 후 node를 선택하게 되는거죠.
자세한 사항은 아래 링크 보시면 됩니다.
kubernetes.io/ko/docs/concepts/scheduling-eviction/kube-scheduler/
@@ttabae-learn 아 이해했습니다. 친절한 설명 감사드립니다!!!!
@@ttabae-learn 아 강사님 9-2 강의에도 자세히 설명해주셨군요! 다 보고 질문할걸 그랬네요 죄송합니다.
정말 재미있게 배우고 있어요. 감사합니다.
최근에 올려주신 내용 모두 따라 해봤는데, docker version 업데이트가 너무 빠르다보니 쿠버네티스가 못 따라가는 듯합니다.
도커 설치하실때, 올려두신 명령어로만 입력하면 최신버전이 설치되는데, 실치되는 최신버전은 쿠버네티스에서 지원을 안하네요.
apt-get install docker-ce=5:19.03.12~3-0~ubuntu-focal docker-ce-cli=5:19.03.12~3-0~ubuntu-focal containerd.io
질문 있습니다. 혹시 파드를 외부에 연결하는 service에 대해서 자세히 설명해주시는 세션이 앞으로 있을까요?
네 6장의 컨트롤러 이후 7장에서 Service를 다룹니다.
설치시 warning이 뜨긴해서 설치가 실패하지는 않은것이 일반적인데, 저도 오늘 업데이트된 버전을 설치해보지 않아서.. ^^ 올려주신 실습 예제에서 version을 정해주시는것 아주 좋습니다. ^^
꼭 도커가 아니어도 container runtime이 설치되어 있으면 되는데, 조만간에 contained로 기반으로 설치하는 것도 하나 올릴까 합니다. 아침에 일어나면 오늘은 꼭 하나 더 찍어야지 해놓고.. 하루가 쑥.. 가버리네요. 왜이리 빠른지.. ^^
@@ttabae-learn 답변감사합니다. 내용이 상당히 방대하네요. 많이 배우겠습니다~ 눈길 조심하세요~
221005 수강 완료!
감사합니다😊
강사님, 2core cpu를 가진 가상머신에 pod 생성시 cpu: 2로 설정 후 create를 하면 Pending상태로 머물게 되는 걸 확인했습니다. 그 후에 cpu: 1로 바꾸어 Running을 시키고 싶어 kubectl edit 명령어를 통해 수정을 하려 했더니 에러가 발생하며 수정이 되지 않았습니다. 에러 내용은 다음과 같습니다.
error: pods "nginx-pod-env" is invalid
A copy of your changes has been stored to "/tmp/kubectl-edit-373625844.yaml"
error: Edit cancelled, no valid changes were saved.
그렇다면 Pod에 Resource를 할당하여 생성하는 경우 cpu 크기 설정은 edit 명령어로 수정할 수 없는 건가요? 혹시 다른 방법이 있다면 알려주시면 감사드리겠습니다!
이성미입니다. Pod 리소스는 운영중에 수정이 안되고, 별도로 실행해야합니다. 그러니 이전 pod는 삭제하고 다시 실행해야하는것이지요. 이것을 운영중에 바꾸고 싶다면 Vertical Pod Autoscaler를 적용할수 있습니다.
참고: docs.aws.amazon.com/ko_kr/eks/latest/userguide/vertical-pod-autoscaler.html
@@ttabae-learn 그렇군요! 감사합니다^_^
worker node 운영/관리를 위해서 몇개의 core 와 memory가 필요할까요? 예를 들어 worker node 에 10 cores 와 16 gb 메모리가 있다면 실제 app에는 Limits을 어떻게 설정해야 할까요?
K8S에서는 2core이상, 2GiB 이상의 메모리를 요구합니다.
제가 노트북에 가상머신 만들어 설치해보니,
master는 2core, 2GB이상이 있어야하고,
worker node는 1core, 1GB여도 설치는 가능합니다.
@@seongmilee9095 아, 구체적으로 답을 주셔서 감사합니다..
감사합니다..
저 또한 고맙습니다. 끝까지 화이팅하셔서 꼭 도움되는 영상이길 바랍니다.
이번 강의는 limits (파드의 최대 리소스) 와 request (app 입장에서의 실행시 최소 리소스를 가진 Pod 찾기) 가 유용하네요.. 그렇다면 Mongo DB 가 최소 2 core, 4gb 를 request 한다면 각 파드의 limits 를 3 core, 5gb 를 설정하면, 각 파드는 두개의 mongo db containers 를 가지지 못한다고 생각되는데, 아니겠네요. Mond DB 가 1 core, 1gb를 사용하게 되면 또 하나의 request가 같은 pod에 운용될 수 있겠네요..
제가 질문을 잘 이해한것인지 모르겠네요. ㅠㅠ
limits는 최대 허용 리소스이고, request는 어느 노드에 스케쥴링해줄지 결정하는 포인트입니다. request 하는 리소스만큼의 여유가 있는 워커노드로 배치되는 것이지요. (app입장에서의 실행시 최소 리소스를 가진 워커노드찾기) 인것입니다. mongoDB 두개 컨테이너를 하나의 Pod에 넣을수 없습니다. 동일 포트 사용하니.. 다른 예를 통해 질문해주시면 제가 더 쉽게 설명해줄수 있을것 같습니다. ^^