본문 바로가기

네트워크/k8s

(47)
[k8s] 39. Autoscaler - HPA Autoscaler - HPA 세 가지의 종류가 있음 HPA: 파드의 개수를 늘림 VPA: 파드의 리소스를 증가시킴 CA: 클러스터에 노드를 추가 각 기능에 대해 간략히 알아보고 HPA에 대해 자세히 볼 예정 1. HPA 컨트롤러가 있고 replicas의 수치에 따라 파드가 운영 서비스도 파드에 연결이 돼서 모든 트래픽이 파드로 흐르는 상황 트래픽이 많아져서 어느 순간 파드내에 있는 리소스를 모두 사용하게 됨 조금 더 트래픽이 증가하면 파드는 죽을 수도 있음 사전에 HPA를 연결하고 컨트롤러에 연결했다면, HPA가 위험한 상황에 컨트롤러의 replicas를 2로 늘려줌 파드가 늘어나 자원이 수평적으로 늘어나는데 이를 Scale Out이라고 함 트래픽이 감소하여 리소스 사용량이 줄면 파드가 삭제되는데, 이..
[k8s] 38. Ingress - 실습 Ingress - 실습 1. Nginx Controller 설치 1. Nginx 설치 kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.27.1/deploy/static/mandatory.yaml 2. NodePort Service 생성 kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.27.1/deploy/static/provider/baremetal/service-nodeport.yaml 3. nodePort 변경 대시보드에서 Ingress-nginx Namespace의 서비스에 들어가기 http의 no..
[k8s] 37. Ingress - Nginx Ingress 사용목적 Service LoadBalancing 쇼핑몰을 운영한다고 가정했을 때, 쇼핑 페이지, 주문센터, 주문 서비스를 파드로 각각 만듦 그 파드에 각각 서비스를 연결 사용자에게는 각 서비스마다 다른 URL을 줌, path가 다름 일반적으로 각 path마다 서비스 IP를 이어주는 L4나 L7 스위치 장비가 있어야 함 쿠버네티스는 Ingress가 이 역할을 함 사용자가 /로 들어오면 쇼핑 페이지로, /customer는 주문센터, /order는 주문 서비스로 연결 별도의 IP 로드밸런싱을 해주는 장비가 필요 없음 Canary Upgarde V1이 서비스가 되는데, V2를 구동시키고 Ingress를 만들어서 두 서비스에 연결 사용자가 Ingress에 접근했을 때 90%는 V1으로, 10%는 V..
[k8s] 36. StatefulSet - 실습 업그레이드된 대시보드 토큰 eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1oaGdsZyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZX..
[k8s] 35. StatefulSet StatefulSet 어플리케이션 종류에는 Stateless Application과 Stateful Application이 있음 Stateless Application 대표적으로 Web Server APACHE, NGINX, IIS가 있음 App이 여러 개 배포돼도 똑같은 서비스 역할을 함 App이 죽으면 같은 역할을 하는 Service를 하는 App을 복사하고 이름은 중요하지 않음 Volume이 꼭 필요하지 않음, 필요하면 Volume 하나에 App들을 연결하면 됨 사용자가 접속한 네트워크 트래픽은 여러 App에 분산됨 ReplicaSet이 딱이네! Stateful Application 대표적으로 Database mongoDB, MaraDB, redis가 있음 각각의 App마다 자신의 역할이 있음 그림..
[k8s] 34. Kubernetes Dashboard - 실습 Kubernetes Dashboard - 실습 대시보드 가이드에서 제공하는 v2.0.0을 설치할 예정 실습 과정 1. 마스터 노드에서 기존의 대시보드 삭제 kubectl delete -f https://raw.githubusercontent.com/kubetm/kubetm.github.io/master/sample/practice/appendix/gcp-kubernetes-dashboard.yaml 2. 마스터 노드에서 새 Dashboard(2.0.0) 설치 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml 3. ClusterRoleBinding 생성 cat cli..
[k8s] 33. Kubernetes Dashboard Kubernetes Dashboard 가이드대로 설치했다면 현재 대시보드 버전은 v1.10.1 v1.10.1은 근데 보안에 좋지 않음 새로 설치하는 과정을 할 예정 1. AS-IS: v1.10.1 Kube-system 네임스페이스에 Deployment로 대시보드 파드가 설치 이 파드는 서비스와 연결됨 설치 시 kubectl 명령어로 proxy를 올려놔서 사용자는 proxy로 보안없이 http로 접속 가능 Login 시 SKIP으로 별도의 인증없이 로그인해서 대시보드를 통해 쿠버네티스 오브젝트 조회와 수정이 가능 대시보드 파드가 API 서버에 접근했을 때, 클러스터 자원에 대한 권한을 가지고 있기 때문에 가능했던 것 대시보드 파드는 어떻게 클러스터 자원 권한을 가지고 있을까? 대시보드 파드는 Service..
[k8s] 32. Authorization - 실습 Authorization - 실습 1. 자신의 Namespace 내에 Pod들만 조회할 수 있는 권한 Role apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: r-01 namespace: nm-01 rules: - apiGroups: [""] verbs: ["get", "list"] resources: ["pods"] apiGroups: 예를들어 apiVersion rbac.authorization.k8s.io/v1에서 rbac.authorization.k8s.io/이 apiGroups 코어 API는 apiGroups에 내용을 넣지 않아도 됨 verbs: API에 method를 지정 API request verb 참조 resourc..