개발 12

Windows 11 에서 Hyper-V 사용시 External Switch 문제 발생 및 해결 과정

Windows 10에서 11로 업그레이드 후 잘 사용하던 Hyper-V 우분투 이미지에서 이더넷 연결이 되지 않고 인터넷도 연결되지 않게 되었다. 우선 Mac이 변경된것을 확인하여 공유기의 DHCP에 Mac 할당을 변경해주고 다시 netplan apply 등을 해보았으나 연결이 되지 않았다. netplan의 Address 설정을 제거하고 DHCP4: true를 주고 재시도 해보았으나 여전히 되지 않았다. 하도 이상해서 검색을 좀 해보다가 Windows11 22H2 업데이트 이후 External Switch에 문제가 있다는 스레드를 발견했다. https://learn.microsoft.com/en-us/answers/questions/881974/windows-11-22h2-broke-custom-virt..

개발/ETC 2022.09.22

Tensorflow in Kubernetes - CPU Memory Troubleshooting

K8s에서 텐서플로우의 CPU Training을 돌릴 때 겪은 문제 CPU / Memory 사용량이 치솟아 QoS Burstable / BestEffort로는 Pod Eviction이 발생함 CPU / Memory의 Request와 Limit을 동일하게 설정해 QoS를 Guaranteed로 주면 OOM Killed로 죽음 원인은 기본 System Malloc을 사용할 때 Python TF가 돌면서 메모리 할당을 VM Memory Limit를 보지 않고 노드 호스트를 기준으로 동작해 Pod의 Limit를 초과하는 Memory를 사용해 OOM이 발생하는 것 같다. 이것 대신 구글의 libtcmalloc으로 변경해주면 된다. https://stackoverflow.com/a/57288305 TF 학습 이미지에..

개발/Kubernetes 2022.09.19

Angular에서 Monaco Editor를 사용할 때 커스텀 언어 워커 사용하기

Angular (여기선 13.0)를 사용할 때 Monaco Editor를 쓰는 방법이 몇가지 있는데 편의를 위해 ngx-monaco-editor 와 같은 모나코 래핑 컴포넌트를 사용하면 편한데, 여기에 더해 커스텀 언어용 워커를 사용하고자 한다면 의외로 꽤 고생할만한 포인트가 있어 정리해둡니다. 저의 경우 monaco yaml 에디터에 JSONSchema를 사용할 수 있게 해주는 monaco-yaml 워커를 활성화 시켰으므로 이 기준으로 설명합니다. 다른 언어 워커를 사용하는 경우 monaco-yaml 부분만 교체하면 대동소이 합니다. monaco를 amd 번들링으로 로드하는 ngx-monaco-editor를 그냥 쓰거나 별도로 vs/min 경로나 CDN등에서 monaco-editor를 가져오는 경우 E..

개발/ETC 2022.06.25

Hyper-V 에서 Kubernetes 설치하기

Ubuntu 18.04 / 20.04 를 Hyper-V에 띄운 후 K8s를 Step By Step으로 설치합니다. 이 포스트는 일반적인 minikube / kubespray 등 설치 패키지를 사용하지 않고 kubernetes 구성을 이해하기 위해 마스터, 워커 노드 구성 요소를 하나하나 바이너리 레벨로 설치하는 것을 목표로 합니다. Linux 기본 지식이 필요합니다. 먼저 마스터노드와 워커노드에 공통으로 필수적인 Kubelet, containerd, cni plugins, runC를 설치합니다. sudo su cd ~ # dsn resolve sh -c 'echo "DNS=8.8.8.8 8.8.4.4" >> /etc/systemd/resolved.conf' systemctl restart systemd-..

개발/Kubernetes 2022.05.27

오픈소스 무료 윈도우 도커 컨테이너 실행하기

도커 데스크탑이 라이센스 변경으로 유료화 되었습니다. 소규모 기업이나 개인은 무료로 사용가능 하지만 일정 규모 이상 기업에서는 개발이나 테스트용으로도 유료를 구매해야 쓸 수 있습니다. 도커 데스크탑이 아닌 아직 도커 CLI와 도커엔진은 무료이므로 일반적인 리눅스 기반 컨테이너라면 윈도우10과 Hyper-V에 리눅스를 설치하거나 WSL2에 Docker를 설치해 리눅스 컨테이너를 실행해 개인 개발 환경 등에 사용할 수는 있습니다. 하지만 윈도우를 도커라이즈한 윈도우 컨테이너라면 리눅스 도커로 실행이 안됩니다. 이럴때는 다음과 같은 조합을 사용하면 무료 오픈소스로 사용 가능합니다. 윈도 도커 컨테이너 유료화 대응 무료진영 https://github.com/containerd/containerd containe..

개발/Kubernetes 2022.03.30

AI, ML, 머신러닝, 딥러닝의 한계에 대한 생각

게리 마커스의 딥러닝의 한계 (https://nautil.us/deep-learning-is-hitting-a-wall-14467/)에 대한 글을 보고 제가 실무에서 딥러닝 모델을 사용하는 서비스를 개발하며 겪은 AI와 머신러닝에 대해 이야기 해보려고 합니다. AI와 머신러닝을 배우는 사람, 무엇인지 알고있는 사람은 이 딥러닝에 대해 엄청난 기대감을 가지게 됩니다. 그럴 수밖에 없는 것이 이것은 마치 사람처럼, 어떨 때는 사람이 놓친 부분들에 대해 사람보다 뛰어나게 판단을 해주기 때문에 곧바로 이것을 쓰면 내가 봉착해있는 어떤 문제에 대한 솔루션을 이 딥러닝 학습된 AI를 적용하면 뭐든 해결될 것 같은 희망을 보기 때문입니다. 그러나 실제 현장에서 실무에 딥러닝 AI를 넣는 것은 생각보다 제한적이며 어렵..

개발/ETC 2022.03.12

JAVA Log4J2 취약점 - CVE-2021-44228

JAVA에서 굉장히 흔하게 사용하는 Log4J2에 크리티컬한 취약점이 발견되었다. Steam, AWS, Apple 등 거의 대부분의 자바를 사용하는 웹서버가 취약점에 노출되었으며, 실행 난이도가 너무 쉬워서 파급력이 상상을 초월할 지경이다. RIP... https://www.lunasec.io/docs/blog/log4j-zero-day/ RCE 0-day exploit found in log4j, a popular Java logging package | LunaSec Given how ubiquitous this library is, the impact of this vulnerability is quite severe. Learn how to patch it, why it's bad, and mor..

개발/ETC 2021.12.11