meet-coder-study / start-docker-kubernetes Goto Github PK
View Code? Open in Web Editor NEW도커/쿠버네티스 스터디
도커/쿠버네티스 스터디
도커 스웜에는 secret과 config라는 기능을 제공한다. 실무에서도 많이 쓰이는 기능인가요? 저는 일단, config 관련은 모놀리틱인 경우에는 같은 서버에 파일로 놓는 방식을 택하고, MSA 구조에서는 spring cloud configuration을 사용하고 있습니다.
책에서 스웜 클래식은 여러 대의 도커 서버를 하나의 지점에서 사용하도록 단일 접근점으로 제공하며, 스웜 모드는 마이크로서비스 아키텍처의 컨테이너를 다루기 위한 클러스링 기능에 초점을 맞추고 있다고 하네요.
아직 책의 초반이지만 스웜 모드도 결국 여러 대의 도커 서버를 하나의 지점으로 만들어주는게 맞는 것 같은데 여기서 MSA 나와야하는게 맞은지 궁금해요.
docker image 버전은 롤백 관련해서도 생각해야 된다.
이미지를 단일 파일로 저장하는 것은 효율적인 방법이 아니다라고 하는데, 이미지 자체는 단일 파일로 관리하는게 맞지 않을까요?
실무에서 docker image는 어떻게 관리해야할까요?
레지스트리 컨테이너 인증서 생성 과정중에서
openssl x509 -req -in ./certs/domain.csr -CA ./certs/ca.crt -CAkey ./certs/ca.key -CAcreateserial -out ./certs/domain.crt -days 100000 -extfile extfile.cnf
Error opening CA Certificate ./certs/ca.crt 이렇게 에러 발생 이유
이후 과정은 책그대로 따라하니 됐습니다 !
도커 데몬을 REMOTE 한다는 것은 나중에 도커 원격 제어 서버를 만들 수 있다는 것인가요?
이렇게 된다면, 대부분의 도커 모니터링 프로그래밍은 도커 데몬을 사용해서 만들었을 것 같은 생각이 드네요.
우선 본인의 경우 맥 + iterm2 + AWS ec2에 도커를 깔아서 실습을 진행중입니다.
dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
명령어로 docker 데몬을 실행시킵니다.dockerd -H tcp://<제 IP 주소>:2375
를 통해 도커 데몬을 실행시키고 또 다른 터미널에서 curl <제 IP 주소>:2375/version --silent | python -m json.tool
명령어를 수행하면 아래와 같이 출력됩니다.(아래 이미지는 ubuntu 유저 권한이지만 root 권한으로 실행해도 동일한 결과가 출력되었습니다)혹시나 정상적으로 실습 진행하신분들이 계시다면 알려주시면 감사하겠습니다!
책 초반 읽는 중인데, 쿠버네티스가 갑자기 다 다운됐을 때 어떻게 되는지 궁금해서 찾아보았네요.
쿠버네티스 마스터 노드와 워커 노드가 모두 다운 됐을 때는 모든 파드들도 죽는다. 10대의 서버에 웹서버를 분산 로드밸런싱 시켜놨는데 10대 다 끄면 웹서버가 정상동작하냐 랑 똑같다고 보면 된다고 한다.
만약 마스터 노드만 죽으면 어떻게 될까? 쿠버네티스는 엘라스틱서치와 더불어 분산시스템과 비슷하게 마스터 노드가 죽으면 다른 워커 노드가 마스터 노드로 승격되는 구조는 아니라고 한다. 왜냐하면 둘의 역할이 매우 다르기 때문이다. 엘라스틱서치에서는 이게 가능한게 노드들이 모두 유사한 역할을 하기 때문이다. 그래서 마스터 노드를 여러개 놓고 관리를 한다고 한다.
도커 책에서
"Nginx 서버로 접근 권한 생성" 아래 내용에서 nginx서버 컨테이너를 생성해 레지스터리 컨테이너와 연동하는 이유가 무엇인지 궁금하다는 의견이 있었습니다!
docker run -d --memory="1g" --name memory_test nginx
명령어 입력시 경고 발생 아래와 같은 경고 발생
WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
경고를 직역하면 커널의 설정 때문에 memory swap의 제한에 대한 기능을 지원하지 않는다는 것입니다.
즉, memory-swap 옵션을 줄 경우 해당 기능을 커널문제로 인해 수행하지 못한다는 뜻입니다.
해결방법을 알아봅시다.
sudo nano /etc/default/grub
아래와 같이 파일 수정
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
나와서 sudo update-grub
sudo reboot
컨테이너 run 다시하기
이 개념이 헷갈렸는데 찾아보니 실행중인 컨테이너의 메모리가 부족하게 되면 host의 디스크의 용량을 일정부분 가져와 사용할 수 있는 메모리입니다.
만약 해당 메모리가 사용되고 있다면 해당 컨테이너의 실제 메모리는 이미 전부 사용중이라고 예상할 수 있습니다.
그리고 교재에는 정확히 기술이 안되어있는데 --memory=200m --memory-swap=500m
이라는 옵션은
실제 컨테이너 메모리 = 200m, swap 가능한 메모리 = 300이라고 합니다.
혹시 틀린 내용있으면 피드백 부탁드립니다 :)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.