목록Study/K8S (72)
전공공부

자격증 취득 84점으로 통과했고 정상적으로 합격 메일을 24시간이 지날쯤에 받았습니다. 시험 자체는 어렵지 않았고 CLI 환경에 익숙해야 시간 내에 풀 수 있다고 말씀 드릴 수 있을 것 같습니다. K8S Document를 하나하나 읽으면서 진행하는 것은 아예 불가능하고 적어도 Deployment 만들기 정도는 CLI에서 빠르게 쳐내야 다른 문제도 쉽게 맞출 수 있습니다. 중간중간 기억나는 문제는 Dockerfile을 제시해주고 이를 Docker로 빌드해서 제공해주는 tar 파일에 저장하라는 문제랑 Cronjob을 이용해서 failedTimeout? 3초 설정하고 이런 작업들을 하라는 문제가 있었는데 다른 문제들 확인 작업 수행하다 보니 Cronjob 문제는 놓쳤던 거 같습니다. 그리고, serviceAc..

1. K8S 구성 고려 - 테스트 인지 검증용인지 운영용인지 등에 따라서 다른 성격의 셋팅이 필요합니다. Education 목적 - Minikube - Single Node cluster with GCP Devlopment 목적 - MultiNode with Single Master and Multiple Workers가 될 수 있습니다. Hosting Production Applications - 고가용성 보장이 되는 멀티 노드 클러스터 멀티 마스터 노드로 셋팅을 해야 합니다. - GCP로 만들게되면 알아서 노드 수를 맞춰주고 맞는 크기의 코어 및 메모리 셋팅을 합니다. Cloud or OnPremise - GKE for GCP - Kubeadm으로 직접 배포 Nodes - Controleplan에는 ..

1. What is Ingress 인그레스는 무엇일까요? 예시로 application을 Deployment로 만들어 두고 NodePort로 구성한 Service와 연결해서 사용하면 바깥에서 접근 가능한 application을 만들 수 있습니다.자 그렇다면 실제로 우리가 사용 할 때 노드 포트 IP로 접근하고 포트 번호를 쳐서 웹 서버에서 접근 하나요? 당연히 아니죠. http://test.com 이런식으로 사용하게 되죠. 실제로는 GCP를 사용하면 Service에 LoadBalancer 케이스로 지정하고 gcp LB를 통해서 들어오게 됩니다. 그렇다면 API를 여기에 더해서 쓰면 어떻게 해야하죠? 그리고, Spring Cloud Gateway로 나눠진 MicroService는 어떻게 해야 할까요? 각각을..

1. DNS in K8S 사실 위 그림이 해당 편의 핵심이 되는 부분 입니다. 먼저 세모가 Service이고 동그라미는 pod입니다. 우리는 서비스가 모두 pod로 통신하기 위한 네트워킹 객체인것은 알고 있습니다. (실존하는 객체는 아니고 kube-proxy가 내부적으로 일을 합니다.) 잘 살펴보면 우선 Service도 DNS 형태로 접근이 가능한데 이는 ServiceName.namespace.Type(SubDomain).Root의 형태로 지정되어 있습니다. 사실 서비스이름, 네임스페이스는 모두 보시다 싶이 아실 것이고 type 부분부터 살펴보면 type은 해당 DNS를 사용하는 개체의 타입을 의미합니다. 지금 사용되는 service 개체는 svc라는 서브 도메인을 가지고 pod의 경우에는 type을 p..

1. Service Network 동작 원리 Service는 어떻게 내부 사용자 끼리 소통이 가능한 ClusterIP를 가지고 NodePort 등을 통해서 외부와 통신을 할 수 있게 할까요? kube-apiserver가 kubelet을 통해서 각 노드에 접근을 확인 하고 kube-proxy가 만일 pod 등이 추가가 되면 kube-proxy가 이를 알아차리고 알려줍니다. 그러면, 실제로 서비스가 존재하는 객체인가요? 아닙니다. kube-proxy가 포워딩 룰을 가지고 서비스의 각 pod로 가야한다고 알려줍니다. kube-proxy가 IP : PORT - Forward TO를 가지고 이를 서비스라는 개체가 작동 하는 것 처럼 보여준다는 것이죠. 2. Service Network 부 동작 자 그러면 여기서 ..
HorizontalPodAutoscaler Deployments를 자동으로 업데이트 하며 target resource의 설정 값에 따라서 replica를 늘리고 줄이는 등의 행위를 하는 리소스입니다. 이를 사내 서비스에 Deployments의 Request.memory 기준으로 70%로 설정해서 배포하려고 하였는데 생긴 이슈가 있었습니다. 오류 내용은 Unable to get metrics for resource memory: no metrics returned from resource metrics API 와 같았습니다. 이때, 제가 1차로 의심 한 것은 metric server의 동작 유무를 체크하였습니다. 하지만, 명령어로 확인해보았으나 정상적으로 cpu, memory 사용량 등이 적절히 출력되었습..

Networking Basic Switching and Routing, DNS, Network Namespace, Docker Namespace 등에 대해서 개념적인 의미 그리고 시스템에서 어떻게 사용되는지 알아봅시다. 우리는 네트워크 엔지니어가 아니니 가볍게 볼 거지만 적어도 기본적으로 용어나 어떤 행동을 하는지 알아야 깊이 있는 이해가 가능하기 때문에 한 번 알아봅시다. Switching Switch는 네트워크 내부에서만 통신 할 수 있게 도와줍니다. 각각의 VM 또는 데스크톱이 있다고 합시다. 우리는 서로 소통하기 위해서 이들을 스위치에 연결하고, 스위치는 이 두 시스템을 포함하는 네트워크를 생성합니다. 이들을 스위치에 연결하기 위해서는 각 호스트에 인터페이스가 필요한데요. 호스트에 따라 물리적인 ..

Volume 우선 쿠버네티스의 볼륨을 알아보기 전에 도커의 볼륨에 대해서 먼저 알아봅시다. 도커에 볼륨은 영구히 쓰기 위해서 컨테이너가 붙기 전에 먼저 host에 /data 와 같은 폴더에 볼륨을 두고 있습니다.이를 컨테이너를 연결 시켜서 써서 영구히 쓰려고 하죠 자 쿠버네티스에서 보면 pod도 일시적이고 pod 내부에 data도 일시적이죠. 그렇기 때문에 volume을 씁니다. 그래서, pod가 삭제가 되어도 volume이 data를 유지를 해주죠. 아래 그림을 보면 알 수 있듯이 pod는 보라색 동그라미이고 volumeMounts는 pod의 /opt 폴더의 값을 volume에 마운트 하겠다는 소리입니다. 이렇게 만들어 두면 volume이 실제 host에 생성이 되고 pod가 삭제되어도 이미 volum..