본문 바로가기
반응형

k8s36

[k8s]Kubernetes - Logs/EFK Pod 로그 관리 전통적인 애플리케이션의 로그 운영 애플리케이션이 항상 지정된 장비에서 실행됨을 보장 logrotate와 같은 system 관리 tool을 이용해서 로그 관리 일정시간 로그를 저장하고, 일정시간 후에는 로그를 제거 클러스터 환경에서 로그 운영 애플리케이션이 어느 노드에서 실행 되는지 얼마나 많은 자원 사용하는지 응답속도 및 응답 코드 확인 개별 노드에 접근하지 않고 직접 Pod의 로그를 확인할 수 있어야 함 로그 수집 & 저장 & 모니터링 Pod 로그 확인 EFK를 이용하여 Kubernetes Application 로그 관리 EFK stack은 클러스터 환경에서 로그를 수집, 검색 그리고 시각화를 지원 각 클러스터 Node에 fluentd가 daemonset으로 log를 수집 elasti.. 2023. 3. 17.
[k8s]Kubernetes - Secret ConfigMap과 Secret ConfigMap: 컨테이너 구성 정보를 한곳에 모아서 관리 Secret: 컨테이너가 사용하는 password, auth token, ssh key와 같은 중요한 정보를 저장하고 민감한 구성정보를 base64로 인코딩하여 한곳에 모아서 관리 민감하지 않은 일반 설정파일 -> configMap 사용 / 민감한 데이터 -> secret 사용 Secret 데이터 전달 방법 Command-line Argument Environment Variable Volume Mount Secret 만들기 kubectl create secret name [flags] [options] Available Commands 종류 docker-registry Create a secret for use.. 2023. 3. 17.
[k8s]Kubernetes - ConfigMap ConfigMap ConfigMap: 컨테이너 구성 정보를 한곳에 모아서 관리 컨테이너 수가 많을 때 하나하나 컨테이너에 들어가 구성 정보를 관리하는 것이 쉽지 않음 configmap의 구성 정보를 여러 컨테이너에 적용하여 관리 구성 정보 전달 방법 환경 변수로 전달 argument로 전달 volume mount, 저장소 파일로 전달 ConfigMap 생성 --from-file로 파일 source, --from-literal로 key:value kubectl create configmap test_Configmap --from-literal=id=b2021002 --from-literal=class=bigdata kubectl create configmap test_Configmap --from-file.. 2023. 3. 16.
[k8s]Kubernetes - Canary Deployment Canary Deployment 파드를 배포(업데이트)하는 방법 블루 그린 업데이트 카나리 업데이트 롤링 업데이트 Canary 배포 기존 버전을 유지한 채로 일부 버전만 신규 버전으로 올려서 신규 버전에 버그나 이상이 없는지 확인 신규 버전에 문제가 있으면 기존 버전으로 복구 신규 버전에 문제가 없으면 기존의 일부 버전을 또 신규 버전으로 올려 문제가 없는지 확인 Canary Deployment Example 기존의 구버전(블루) 파드 두개 실행 새로운 버전(그린) 한개 실행 기존 버전 2개 새로운 버전 1개 service로 묶어 실행 고객은 세개의 파드 무작위로 사용 문제가 없으면 새로운 버전 1개 추가 & 구버전 1개 삭제 이와 같은 방식으로 새로운 버전을 하나씩 테스트하며 자유롭게 업데이트 Refe.. 2023. 3. 16.
[k8s]Kubernetes - Annotation Annotation Label과 동일하게 key-value를 통해 리소스의 특성을 기록 Kubernetes에게 특정 정보 전달할 용도로 사용 예를 들어 Deployment의 rolling update 정보 기록 관리를 위해 필요한 정보를 기록할 용도로 사용 릴리즈, 로깅, 모니터링에 필요한 정보들을 기록 describe에서 정보 확인 가능 Annotation Example annotation example pod 생성 kubectl create -f annotation-exam1.yaml describe로 pod의 anootation 정보 확인 kubectl describe pod annon-pod Reference 따배쿠31강 2023. 3. 16.
[k8s]Kubernetes - node label Node Label Worker Node의 특성(ex.하드웨어 스펙)을 Label로 설정 kubectl label nodes key=value 노드를 선택해서 파드 배치 가능 각 노드의 스펙이 다른 경우 파드에 적합한 노드를 선택하여 배치 딥러닝이 돌아가는 컨테이너를 갖는 파드를 gpu가 있는 노드를 선택하여 배치해야 함 Node Label 관리 명령어 Label 보기 전체 노드 Label 보기 kubectl get nodes --show-labels 특정 Label 갖는 노드 보기 kubectl get nodes -L/--selector 해당 label을 갖는 노드 출력 -l이 selector 기능 Label 관리: kubectl label --help Label 생성 및 변경 Label 할당 kube.. 2023. 3. 16.
[k8s]Kubernetes - Label Label Node를 포함하여 pod, deployment 등 모든 리소스에 할당 리소스의 특성을 분류하고, Selector를 이용해서 선택 파드 이름만 갖고 특성을 분류하는데 한계가 존재 Main UI pod가 여러개 존재할 때 stable, beta, canary 중 어떤 버전인지 파드 이름만으로는 분류 불가 Key-value 한쌍으로 적용 Label과 Selector Label metadata: labels: rel: stable name: mainui Selector selector: matchLabels: key:value matchExpressions: - {key: name, operator: In, values: [mainui]} - {key: rel, operator: NotIn, val.. 2023. 3. 16.
[k8s]Kubernetes - Ingress 웹페이지 구현 Kubernetes Ingress 동작 Ingress 이용한 웹서비스 운영 Ingress Controller 설치 namespace 생성 nodePort 설정 Ingress Controller 파드 생성 Default namespace 치환: kubectl config Ingress Controller의 namespace로 치환 웹 서비스 동작 기존에 Main Page, Pay Page 이미지 생성 Ingress 동작 Reference 따배쿠28강 2023. 3. 14.
[k8s]Kubernetes - Ingress Kubernetes Ingress 쿠버네티스의 API 중 하나로 HTTP나 HTTPS를 통해 클러스터 내부의 서비스를 외부로 노출 여러 서비스를 통합하여 외부 노출 기능 Serivce에 외부 URL을 제공 트래픽을 로드밸런싱 SSL 인증서 처리 Virtual hosting을 지정 Kubernetes Ingress 동작방식 Main page, Login, Order 등 각 서비스들을 통합하여 외부에 연결해주는 관리자 역할 수행 ingress에 서비스를 묶은 룰 등록하여 각 서비스에 접속 Reference 따배쿠27강 2023. 3. 14.
[k8s]Kubernetes - Headless Service/Kube Proxy Headless Service ClusterIP가 없는 서비스로 단일 진입점이 필요 없을 때 사용 Pod들의 endpoint를 묶어주지만 IP는 x Service와 연결된 Pod의 endpoint로 DNS 레코드가 생성됨 Pod들의 endpoint에 DNS resolving Service로 지원 Pod의 DNS 주소: pod-ip-addr.namespace.pod.cluster.local Example clusterIP가 None으로 설정되면 Headless Service create -f를 통해 Headless Service 실행 kubectl create -f headless-nginx.yaml get, describe를 통해 Headless Service확인 kubectl get service ku.. 2023. 3. 9.
[k8s]Kubernetes - Service 4가지 종류 ClusterIP selector의 label가 동일한 파드들을 그룹으로 묶어 단일 진입점 (Virtual IP)을 생성 클러스터 내부에서만 사용 가능 type 생략 시 default 값으로 10.96.0.0/12 범위에서 할당 됨 type을 고정시키지 않는 이유: 충돌을 예방하기 위해 Example create -f를 통해 ClusterIP Service 실행 kubectl create -f clusterip-nginx.yaml get, describe를 통해 ClusterIP Service확인 kubectl get service kubectl describe svc clusterip-service curl 이용 ClusterIP 접속 curl 10.100.100.100 delete를 통해 Cluste.. 2023. 3. 9.
[k8s]Kubernetes - Service Kubernetes Service 개념 동일한 서비스를 제공하는 Pod 그룹의 단일 진입점을 제공 하나의 pod에 작업이 집중되면 다른 pod는 놀고 있어 성능 저하 모든 pod에 균등하게 작업을 분산해야 함 같은 레이블을 갖는 Pod의 ip를 하나의 Virtual IP로 묶음 Service Definition Deployment Definition으로 Pod 생성 Service Definition으로 같은 레이블의 Pod에 작업 균등 분배 ClusterIP 설정 port는 ClusterIP의 포트 target port는 Pod의 포트 Service Type 4가지 타입 지원 ClusterIP(default) Pod 그룹의 단일 진입점(Virtual IP) 생성 NodePort ClusterIP가 생성된.. 2023. 3. 9.
반응형