소개
쿠버네티스는 새로운 개념들이 많아서, 바로 실무에서 써먹지 않으면 금방 배운 내용을 까먹기 쉽습니다.
그렇다고 기회가 생길 때 까지 공부를 안하고 있을 수는 없겠죠? 그럼 이런 기회가 오더라도 선뜻 하겠다고 손을 들기도 어려운데..
이럴 때 방법이 있습니다.
혹시 자격증 공부를 해본 적 있으신가요? 아무리 실습을 많이 해보고 합격을 했다고 하더라도 이렇게만 공부한 기억은 빠르면 반년 뒤에 모두 잊혀져요.
하지만 공부한 내용을 블로그나 문서로 잘 정리해 놓거나, 자주 쓰는 명령어들을 잘 모으면서 공부한다면 진도가 느리게 나가더라도 이 시간은 잃어버린 시간이 아니라 의미 있는 시간이 되는 거죠.
그리고 코드를 쌓아두는 게 중요한데, 지푸라기 집처럼 빠르고 많이 쌓는 게 아니라, 벽돌집처럼 하나라도 우직하게 쌓는 게 중요해요. 그러기 위해선 내가 공부했던 기능들을 가지고 쌓아가는 형태의 프로젝트로 만들어 나가야 되요. 흔히 프로젝트를 한번 해보면 실력이 많이 는다고 하는 것과 같습니다.
그러다가 새로 알게 된 내용이 있으면 반영 시켜보고 문서도 업데이트를 해 놓으세요. 그럼 실력이 머릿속인 아닌 실질적인 내 자료로 남아요.
쿠버네티스는 코드(Code)로 인프라 환경을 만드는 현재 가장 좋은, 가장 많이 사용되는 기술 입니다.
예전에 한땀한땀 해왔던 수작업들을 이제는 코드로도 다 만들 수 있게 됐어요. 그래서 그동안 해왔던 경험을 가지고 코드를 미리 만들어 놓으면 작업 속도는 말도 안되게 빨라집니다. 인터넷 속도가 빨라지면서 예전엔 불가능했다고 생각했던 일들이 가능해졌다는거 아시나요?
하지만, 경험이 없으면 이 코드를 만들어 놓는 게 쉽지는 않아요.
그래서 저는 제 경험을 토대로 만들어 놓은 코드들을 여러분께 공유하고자 합니다. 그동안 제가 정리했던 자료들도 함께요.
저는 지금까지 제가 쌓아온 걸 많은 사람들에게 보여드리고 싶은 새로운 목표가 생겼습니다. 그 목표의 시작은 [쿠버네티스 어나더 클래스]고요. 모두 청출어람 하셔서 저보다 잘 됐으면 좋겠습니다 :)
Mail: k8s.1pro@gmail.com
LinkedIn: https://www.linkedin.com/in/1pro
강의
전체4로드맵
전체1수강평
- 좋아요
guard883
2024.10.25
1
- 이해하기 쉽게 잘 가르쳐 주시네요 감사합니다!
gobsulmory
2024.10.25
1
- 잘 들었습니다.
변재영
2024.10.23
1
게시글
질문&답변
2024.10.23
cat /etc/docker/daemon.json 가 없어요 ㅠ
자료실을 보시면 업데이트 되었습니다. https://kubetm.github.io/k8s/09-intermediate-architecture/logging/ 변경된 점을 말씀드리면 Docker에서는 Container에서 stdout으로 보낸 로그를 /var/lib/docker에 저장을 하고, 그걸 /var/log쪽으로 링크했었지만, Containerd에서는 그 부분이 생략되고, 바로 /var/log쪽으로 로그를 쌓아요. 그리고 Containerd의 설정 파일 역시 위치와 내용이 달라집니다. (사진)
- 1
- 4
- 24
질문&답변
2024.10.23
cat /etc/docker/daemon.json 가 없어요 ㅠ
안녕하세요. 먼저 실습에 혼란을 드려 죄송합니다. 쿠버네티스 설치가 업그레이드 되면서 런타임이 Docker에서 Containred로 변경 되었는데, 해당 강의 자료실에 업데이트가 안되었습니다. 변경 후 다시 답변드릴께요.
- 1
- 4
- 24
질문&답변
2024.10.16
질문드립니다.
Kubernetes에서 Role이나 ClusterRole은 기본적으로 권한 관리를 위해 사용됩니다. Role은 특정 네임스페이스 내에서의 자원 접근을 제어하고, ClusterRole은 클러스터 전체의 자원에 대한 접근을 제어해요. 실습에서 Role을 사용해 Pod나 다른 자원 상태를 확인하는 것은 특정 사용자가 어떤 자원에 접근할 수 있는지 설정하는 과정 입니다. 실무에서는 Role을 Pod 조회뿐 아니라, 자원의 생성, 수정, 삭제 권한을 세부적으로 관리할 때 사용되고요. 오픈소스를 설치했을 땐 알아서 Role이 세팅되는데 때론 권한을 풀어주기 위해서 세팅될 Role을 파악하고, 변경해주기도 해요. kubectl apply -f 명령은 보통 마스터 노드에 설치된 API 서버로 요청을 보내는 것입니다. API 서버는 클러스터의 모든 요청을 처리하고, 스케줄러가 자동으로 워커 노드에 Pod를 배치합니다. 따라서 일반적으로 마스터 노드에서 해당 명령을 실행하는 것이 맞습니다. 그리고 워커 노드에서 실행하려고 했을 때 "권한이 없다"는 메시지가 떴다면, 권한 설정이 워커 노드에서 적용되지 않았기 때문이고, 권한 설정이 필요한 명령은 마스터 노드에서 수행하는 것이 좋습니다. 네, 쿠버네티스 문서에 존재하죠 ㅎ https://kubernetes.io/blog/2023/10/12/bootstrap-an-air-gapped-cluster-with-kubeadm/ 그외에 [kubernetes airgap install] 이 키워드로 구글링을 해보시면 많이 나옵니다.
- 1
- 2
- 15
질문&답변
2024.10.15
질문드립니다.
쿠버네티스 환경에서 Pod 정보를 API로 노출 하는 것은 꽤 흔한 실무 요구사항 중 하나 입니다. App들 간에 통신을 할 때 클러스터에 접근 할 필요 없이 API 호출로 여러 가지 작업들을 할 수 있거든요. 특히 자주 사용되는 건 Pod의 상태 정보와 IP 정보입니다. 쿠버네티스는 기본적으로 Service를 통해 Pod를 호출하는 개념이지만, 실제 App을 개발하다보면 Pod의 IP를 확인하고 직접 통신을 해야 하는 경우도 많거든요. 또한 모니터링 할때도 마찬가지고요. 전체 DNS를 통해 전체 IP List를 확인 한 다음, 각 Pod별로 필요한 정보를 API로 조회해 가는식으로 주로 구성합니다.
- 1
- 1
- 13
질문&답변
2024.10.13
배포 관련 질문
CPU는 사용률이 적은 시점엔 꼭 두 배가 필요한 건 아니지만 Memory의 경우 현재 사용률과는 별개로 App에서 점유하고 있는 부분이 있기 때문에 대체로 교체시 두배가 사용됩니다. 그리고 Blue Green 배포시 새 Pod가 먼저 생긴 후에 기존 Pod가 죽기 때문에 여유 자원이 꼭 필요하고요. 배포시 Green Pod가 성공적으로 생성 되어야, 기존 Blue Pod가 삭제 됩니다. Green Pod에 에러가 생기면 기존 Blue Pod는 계속 서비스 중인 상태로 남아 있어요. rolling도 마찬가지고요. 그리고 만약 yaml 파일에 문법 오류가 있는 상태에서 배포를 하면 에러기 때문에 업그레이드가 시작되지 않고요. 실습 한번 해보시면 더 쉽게 이해가 될 거예요.
- 1
- 2
- 24