Introduction
CNCF Ambassador | Cloud Native Engineer
Documents:
Channels:
• Linkedin
• Github
• Youtube
시스템/네트워크 IT 벤더의 경험 이후, 메가존 GCP 클라우드 팀에서 쿠버네티스와 연관된 모든 프로젝트에 대한 Tech Advisor 및 Container Architecture Design을 제공하고 있습니다. 그 외에 페이스북 ‘IT 인프라 엔지니어 그룹’의 운영진을 맡고 있으며, 오픈 소스 컨트리뷰터로도 활동하고 있습니다.
그 외에 가지고 있는 지식을 공유하는 것을 좋아하여, 인프런/유데미에서 앤서블 및 쿠버네티스에 관한 강의를 기재하고 있으며, 또한 아는 지식을 문서로 남겨야 한다고 생각하기에 책( 『시스템/네트워크 관리자를 위한 파이썬 실무 프로그래밍』, 『우아하게 앤서블』), 『컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커』(길벗) 이 있고, IT 잡지에 기고문을 쓰는 활동도 함께하고 있습니다. 그리고 CNCF의 앰버서더 와 Kubestronaut 로서 쿠버네티스 및 그에 연관된 다양한 프로젝트 생태계가 더 활발하게 퍼질 수 있도록 기여하고 있습니다.
Courses
Reviews
- Easy to Get Started with Kubernetes (v1.30) - {{ x86-64, arm64 }}
- Learning Grafana through Practice - {{ x86-64, arm64 }}
- Learn Kubernetes with Pictures (v1.30) - {{ x86-64, arm64 }}
- Learn Kubernetes with Pictures (v1.30) - {{ x86-64, arm64 }}
- Easy to Get Started with Kubernetes (v1.30) - {{ x86-64, arm64 }}
Posts
Q&A
livenessProbe에 대한 설명이 조금 부족한거 같네요
이와 관련하여 다른 부분은 기본 값이 꽤 괜찮긴 하나...Startup의 경우 failurethreshold 를 조정하는 것도 괜찮을 수 있겠다는 생각이 들긴 합니다. (잘 모르는 경우, 급한 경우) 다만...최적화의 입장에서는 그냥 looping의 느낌으로 failurethreshold 를 하는게 아니라 검증하고 테스트해서 기다리는 시간에 대해서 hooking을 덜하도록 설계하는게 더 낫겠다고 생각합니다. 함께 참고를 부탁드립니다.
- 0
- 3
- 54
Q&A
livenessProbe에 대한 설명이 조금 부족한거 같네요
안녕하세요좋은 질문 및 의견에 우선 감사드립니다.우선 기본값(default)에 관해서 꼭 알아야 하는 것이 아니면 가능한 설명하지 않은 것이 맞습니다.위에 기입해 주신 것처럼 모든 옵션을 다루기에는 시간 상 어렵다는 부분 외(1)에이외에도 다른 여러 옵션이 있지만 모든 옵션을 다루기에는 시간상 어려울 거라는 점은 이해합니다. 다만, 실습 환경에서 단순히 시간 차이로 테스트하는데 이러한 부분이 언급되지 않으면 이해하기 어려울 것 같습니다. 오히려 많은 정보(2)가 주입되면 처음 배우는 입장에서 더 혼란스러울 수 있다고 생각합니다.이건 개개인의 차이가 있어서 정확하게 현재 완전히 개인화된 강의가 아니기 때문에 더욱 설명하기 어려운 부분이 있습니다.또한 기본 값(default / 자동 생성되는 부분)에 관련해서는 위의 말씀드린 것처럼 가급적 설명하지 않았는데... 그 이유는 이미 쿠버네티스에서 베스트 프렉티스 성격으로 지정해 놓은 값(3)이기 때문입니다.(사실 보통 hello packet도 3번하는게 관례적이긴 합니다.)이와 관련하여 관심이 있으시다면 보강인 "B.008.기본(default) 설정의 중요성" 을 보시는 것도 좋으실 것 같습니다.https://www.inflearn.com/courses/lecture?courseId=327444&unitId=248095&subtitleLanguage=ko 마지막으로 이건 교수법에 종류이긴 하지만이건 왜 이러지 왜 이렇게 동작하지 의문(4)을 가지고 찾고 이해하시면 아마 금방 안 잊어버리실 겁니다.모든 옵션과 모든 내용을 다 설명하는 것도 좋지만 의문을 가지고 찾아보는게 사실 가장 효과적으로 (그래서 실습을 항상 넣습니다. / 테스트 해봐야 되니까요 / 검증하는 것도 좋아하고요) 배울 수 있는 방법입니다. 다소 구태의연하고 오히려 일부 반감을 가져올 수 있는 부분인 것을 알고 있긴 하지만....저는 개인적으로 분명히 많은 것을 느끼고 많은 것을 배우시면 좋겠다는 개인적인 생각을 가지고 있습니다.이에 설명이 부족하다고 느끼시는 부분은 죄송하게 생각하며, 노트에 해당 내용을 오해하지 않을 수 있는 수준으로 적어두도록 하겠습니다. 특별한 이유와 관련하여 (1)~(4)개의 부분을 기반으로 설명하지 않았다고 보시면 될 것 같습니다.+로 아마 어휘의 차이 같긴 한데..."몇 번의 실패를 수신해야 실패로 간주하는지 설정하는 옵션입니다 (기본값: 3)" 라기 보다.. 계속 단순히 시도하게 되면 해결되지 않고 오히려 사이드이펙트가 날 수 있으니 그에 맞는 조치를 하기 위해 존재하는 옵션입니다.이미 영상에서도 설명하긴 했지만...각 Probe에 따라 Threshold 값을 넘어서면 다르게 동작합니다.failureThreshold: The number of times that the probe is allowed to fail. The default is 3. After the specified attempts:for a liveness probe, the container is restartedfor a readiness probe, the pod is marked Unreadyfor a startup probe, the container is killed and is subject to the pod’s restartPolicy
- 0
- 3
- 54
Q&A
Mac m3, vmware fusion k8s, prometheus 설치 문제
안녕하세요위의 내용만으로 왜 1개의 calico-node에 문제가 발생하는지 100% 정확하게 알기는 어려운 부분이 있지만 CNI가 정상적으로 동작하지 않는 환경에서는 #2,#3 모두 발생할 수 있습니다. (시간을 맞추는 것도 결국 네트워크로 하는거라서요)혹시 괜찮으시다면 k rollout restart -n kube-system ds calico-node 를 실행한 후에5-10분 후에 위의 문제들이 해결되는지 여전한지 확인 부탁드려도 될까요?
- 0
- 1
- 18
Q&A
controlplane_node.sh 실행 오류 문의
안녕하세요vagrant up으로 생성된 cp-k8s에 이 부분이 가상머신의 처음 시작에만 적용되도록 설정되어 있기 때문에 가상머신(VM)을 껐다가 켜서 1.5부터 다시 하시면 실습이 1.5 진행이 되지 않습니다.참고 링크:https://github.com/sysnet4admin/_Lecture_k8s_learning.kit/blob/main/ch1/1.5/k8s_env_build.sh#L31-L32다시 vagrant up부터 다시 하시거나...위의 소스 부분# packets traversing the bridge are processed by iptables for filtering echo 1 > /proc/sys/net/ipv4/ip_forward을 실행하고 ./controlplane_node.sh 를 실행하시면 정상적으로 동작할 것 같습니다.해보시고 혹시 안되시면 말씀 부탁드려도 될까요?
- 0
- 2
- 54
Q&A
"VMware Fusion"을 설치 및 기타 문의
안녕하세요 1.강의 영상과 소스 주소가 약간 다른 이유초기에 github 주소는 썼던 것에 대해서 좀 더 명확하기 위해서 조금 변경했습니다. 네이밍 규칙 같은 것을 추후에 통일했다고 보시면 될 것 같아요. 영상은..아무래도 찍고 나면 수정이 거의 불가능해서요 (다시 촬영하기 전까지요...)그래서 영상과 차이...불가피...ㅠ ㅠ 하게 있다고 보시면 될 것 같습니다. 2.VMware Fusion 설치 관련강의를 들으시는 분들이 모두 동일한 경험을 (가능한;;;) 하게 하기 위해서 명령어로 설치했었습니다. 그래야 틀리거나 달라지는 부분을 줄일 수 있어서요.그리고 VMware Fusion은 순수하게 하이퍼바이저로만 사용해서 캡처해 주신 부분에서 해야 할 부분은 없습니다. 그게 생기기 시작하면 개개인의 선호와 방법에 따라 여러가지로 안된다는 부분이 생길 수도 있어서요. 그래서 배포는 Vagrant를 사용해서 진행합니다. 참고로 캡처해 주신 부분은 VM(가상머신)을 배포하기 위해서 필요한 부분이고 그걸 Vagrant를 통해서 자동화했다고 보시면 될 것 같습니다. 3. Vagrant 호환 부분 호환성 관련해서는 brew로 버전을 고정해 두었고, 그 외에 다른 버전에 대해서는 모두 테스트할 수가 없어서요. 모두 지우고 제공해 드린 명령들을 그대로 따라서 다시 해보고 말씀해 주실 수 있을까요? M1은 안 해보긴 했는데..문제 없이 되어야 해서요. 4&5. 설치 관련제공해드린 내용에 ChatGPT에서 가이드한 내용도 이미 포함되어 있었습니다.제공해드린 .cmd를 보고 (그 전에 다 설치된 내용을 지우시고요...) 다시 해보시면 될 것 같습니다. 영상에서도 플러그인 관련 얘기와 유틸리티 얘기도 했었습니다... ㅠ ㅠ https://github.com/sysnet4admin/_Lecture_k8s_starter.kit/blob/main/ch2/2.4/.cmd
- 0
- 1
- 49
Q&A
[해결] ch2/2.2 가 없어 수업 진행이 불가능합니다.
안녕하세요 2.2는 실습이 없는 부분인데..어떤 이유로 2.2를 찾으시는지 알 수 있을까요?아래의 캡처를 보시면 2.2는 설명 부분으로 구성되어 있고 2.3부터 실습이 있습니다. (섹션 숫자는 인프런이 넣는거라 저희가 어떻게 할 수 있는건 아니라서 ㅠ ㅠ )(사진) 답변 주시면 그에 맞게 다시 답변 드리겠습니다.
- 0
- 4
- 72
Q&A
예제폴더의 경로와 영상의 경로가 너무나도 다릅니다
안녕하세요 아마 예상하기로는 ch가 하나씩 밀린 것을 의미하실꺼 같은데요...이건 죄송하게도 처음에 촬영할 때보다 좀 더 나은 형태로 (정확히는 버전 업데이트를 맞추기 위해서) 바꾸는 과정에서 어쩔 수 없는 변경이었습니다... 그럼에도 불구하고 이에 대해서는 사과 말씀드립니다. 제목만 가지고 유추하는거라 위와 같이 답변드릴 수 밖에 없는 점을 양해 부탁드리며구체적으로 불편한 부분을 적어주시면 변경 가능한 부분인지 확인 가능하고 그게 번거로우시다면 환불을 하시는게 hyungsub hwang 이 더 만족스럽지 않으실까 싶습니다. 편하신 방법으로 선택 부탁드립니다.
- 0
- 2
- 64
Q&A
ova이미지로 환경구축시 에러가 납니다.
일부에서 잘 되는 것을 확인했습니다.안되는 곳은 제가 가지고 있는 것 중에 가장 낮은 성능인 2010년 후반에 출시된 i3 노트북이 있는데...거기서는 동작하지 않습니다.그리고 다른 2023년의 노트북과 인텔 맥북에서는 동작하는 것을 확인하였습니다. (아래 화면은 kube-controller와 kube-scheduler는 제외하고 동작시킨 부분)root@cp-k8s:~# crictl ps CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID POD feab771af4fd2 45ae357729e3a About a minute ago Running calico-kube-controllers 2 20cabcb87e8f7 calico-kube-controllers-6cdb97b867-hq6wl 3d436debd53b2 cbb01a7bd410d About a minute ago Running coredns 2 ff99e6e62bd4f coredns-7db6d8ff4d-lrr6b e161cf8b53ac9 cbb01a7bd410d About a minute ago Running coredns 2 9595a2cefb2db coredns-7db6d8ff4d-bdkgh 62ae1efc3405d 44f52c09decec About a minute ago Running calico-node 2 22911ade13422 calico-node-5cwrn 1cb3731f2d339 747097150317f About a minute ago Running kube-proxy 2 85a5b8acca949 kube-proxy-5z2hm 7122116679ff6 3861cfcd7c04c 2 minutes ago Running etcd 3 b943d8b87ab59 etcd-cp-k8s ed1cfe430dc43 91be940803172 2 minutes ago Running kube-apiserver 3 205bce77033da kube-apiserver-cp-k8s이러한 내용을 기반으로 노트북의 CPU의 실제 코어 성능과 관계 있다고 추정하였습니다. 실제로 동작이 안되는 원인은 crictl ps로 확인했을 때, kube-apiserver와 etcd가 올라오지 않는 부분이며, 특히 여기서 kube-apiserver는 올라와서 etcd 동작하는 것을 확인하려고 하나 etcd가 올라오지 않아 kube-apiserver 계속 종료되는 것이 문제입니다.2024-12-03T21:59:10.917017329+09:00 stderr F W1203 12:59:10.916587 1 logging.go:59] [core] [Channel #2 SubChannel #4] grpc: addrConn.createTransport failed to connect to {Addr: "127.0.0.1:2379", ServerName: "127.0.0.1:2379", }. Err: connection error: desc = "transport: Error while dialing: dial tcp 127.0.0.1:2379: connect: connection refused" 2024-12-03T21:59:11.322378253+09:00 stderr F W1203 12:59:11.321920 1 logging.go:59] [core] [Channel #5 SubChannel #6] grpc: addrConn.createTransport failed to connect to {Addr: "127.0.0.1:2379", ServerName: "127.0.0.1:2379", }. Err: connection error: desc = "transport: Error while dialing: dial tcp 127.0.0.1:2379: connect: connection refused" 2024-12-03T21:59:14.308659276+09:00 stderr F F1203 12:59:14.307476 1 instance.go:292] Error creating leases: error creating storage factory: context deadline exceeded현재 해당 문제를 해결할 수 있는 방법은 없다고 보셔야 할 것 같습니다.타이밍 이슈도 함께 걸려 있어서, 하물며 kube-apiserver와 etcd만 남겨놓는다고 해도 다른 Static-pod도 있고 2개가 거의 같은 시점에 올라와야 되기 때문에... 쉬운 방법이 없을 것 같네요. 고로 정리하자면, 노트북의 성능이(특히 CPU) 충분하지 않은 경우 OVA는 사용하기 어려울 것 같습니다. 사용에 참고 부탁드립니다.
- 0
- 3
- 3.1K
Q&A
ova이미지로 환경구축시 에러가 납니다.
해보고 말씀드릴께요 ㅠㅠ 1-2시간 정도 기다려주실 수 있을까요 ㅠㅠ?
- 0
- 3
- 3.1K
Q&A
9.6강의 소스 수정 요청 및 에러 문의
안녕하세요...아.....아......(....)수정 완료하였습니다. 죄송합니다. v1.30으로 올리는 과정에서 다른게 잘 못 복제되었네요.. ㅠ ㅠ의 경우에는 nfs_exporter.sh를 실행해서 다음과 같이 NFS가 구성되어 있어야 하는데 혹시 안되셨는지 확인 부탁드려도 될까요? 구성이 되어 있다면 다음과 같이 나옵니다. root@cp-k8s:~/_Lecture_k8s_learning.kit/ch9/9.6# exportfs /nfs_shared/dynamic-vol 192.168.1.0/24실행은...ch5/5.6에 가셔서 ./nfs_exporter.sh dynamic-vol 를 실행하시면 됩니다. root@cp-k8s:~/_Lecture_k8s_learning.kit/ch5/5.6# ./nfs_exporter.sh dynamic-vol Check created configurations === cat /etc/exports: - # /etc/exports: the access control list for filesystems which may be exported - # to NFS clients. See exports(5). - # - # Example for NFSv2 and NFSv3: - # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) - # - # Example for NFSv4: - # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) - # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) - # - /nfs_shared/dynamic-vol 192.168.1.0/24(rw,sync,no_root_squash) --- ls /nfs_shared: - dynamic-vol제 생각에는 이 문제 같은데 혹시 위의 것이 실행되어 있는 상태라면 다시 말씀을 부탁드립니다.
- 0
- 2
- 56