본문 바로가기

점진적과부하57

[k8s] Kubernetes AutoScaling Kubernetes AutoScaling 1. Cluster level scalability 기존의 worker node의 resource가 부족할 경우 worker node를 자동으로 확장 GCP, AWS 및 Azure와 같은 cloud infrastructure를 통해서 사용 OpenStack의 Auto Scaling Kubernetes cluster Cluster Autoscaler (CA) Pod가 node 리소스를 할당 받지 못해 pending 될 때 worker node를 확장 Node pool의 min/max를 기준으로 그 범위 내로 node 확장 할당된 node가 장시간 충분히 활용되지 못하면 node를 해제 10초마다 불필요한 node 확인, 10분간 적은 리소스 유지하면 scale do.. 2023. 5. 2.
[K8s]DNS K8s DNS Service 및 pod용 DNS Cluster에서 실행하는 모든 pod가 사용할 수 있도록 구성 DNS를 통해 service와 pod access service_name.namespace.svc.cluster.local Pod-IP-Address.namespace.pod.cluster.local kube-dns service 작동 확인 kubectl get service --all-namespaces NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default kubernetes ClusterIP 10.96.0.1 443/TCP 4d20h kube-system kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP.. 2023. 4. 17.
[k8s] kube-proxy kube-proxy default mode는 iptables API로 service를 생성하면 그 service의 목적지에 따른 endpoint(진입점)을 iptables rule로 만들어 달라고 kernel에게 요청함 worker node마다 1개씩 존재 nodeport를 생성하면 iptables의 rule를 통해서 외부로 서비스 될 수 있게 port listen 3가지 mode : user space mode iptables mode IPVS mode [hands - on] K8s service 동작 vi deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: web spec: replicas: 3 selector: matchLabe.. 2023. 4. 10.
[K8s] Network Container Network Model Docker0 Virtual ethernet bridge : 172.17.0.0/16 L2 통신 기반 Container 생성 시 veth 인터페이스 생성(sandbox) 모든 container는 외부 통신을 docker0를 통해 진행 Container running 시 172.17.X.Y로 IP 주소 할당 Container Network Interface(CNI) K8s cluster 환경에서 multi-host에서 container간의 통신이 가능하게 하기 위한 목적 컨테이너 간의 네트워킹을 제어할 수 있는 플러그인을 만들기 위한 표준 https://kubernetes.io/docs/concepts/cluster-administration/networking/.. 2023. 4. 10.
[k8s] Persistent Volume & Persistent Volume Claim PV(Persistent Volume) K8s cluster 외부 storage와 연결을 담당하는 리소스 https://kubernetes.io/docs/concepts/storage/persistent-volumes/ 참고 PVC(Persistent Volume Claim) PV와 pod를 연결하기 위한 리소스 https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims 참고 ❗ 역할을 나눈다면, 스토리지 지식이 있는 쿠버네티스 클러스터 관리자 또는 스토리지 관리자는 PV 리소스를 생성해 스토리지와 연결해 두고, 파드 개발자는 PVC를 생성해 자신의 파드 및 관리자가 제공해 준 PV와 연결해 파드에서 볼륨을 .. 2023. 4. 3.
[K8s] Storage NFS NFS 서버가 공유하고 있는 데이터 디렉토리를 worker node의 pod들이 access할 수 있도록 지원 사전준비 NFS 서버는 application이 사용할 공유 디렉토리를 지원하고 있어야 함. Worker node는 NFS 클라이언트가 되어서 NFS Server가 지원하는 공유 폴더에 접근할 수 있어야 함. definition volumes: - name: webdata nfs: server: nfs.server.name path: /share/dir/path [Hands - on] NFS 서버 설치 및 설정 별도의 nfs 서버에서 진행 apt-get install -y nfs-common nfs-kernel-server rpcbind portmap 공유할 디렉터리 설정 mkdir -p /sha.. 2023. 3. 27.
[k8s] Storage emptyDir 및 share volume emptyDir volume 빈 디렉토리로 시작 Pod 내부에서 실행중인 application은 필요한 모든 파일 작성 Pod를 삭제하면 volume의 내용은 손실 동일한 pod에서 실행되는 컨테이너 간에 파일을 공유할 때 유용 https://kubernetes.io/docs/concepts/storage/volumes/#emptydir참고 [Hands - on] pod 생성 및 확인 vi empty.yaml apiVersion: v1 kind: Pod metadata: name: web-empty spec: containers: - image: nginx:1.14 name: nginx volumeMounts: - name: html mountPath: /usr/share/nginx/html volume.. 2023. 3. 20.
[K8s] Storage 개념 및 hostPath Volume은 K8s storage의 추상화 개념 Container는 pod에 binding 되는 volume을 mount하고 마치 local filesystem에 있는 것처럼 storage에 접근 https://kubernetes.io/docs/concepts/storage/volumes/ 참고 K8s storage definition volumes: #node에 존재 - name: html hostPath: path: /hostdir_or_file container 단위로 mount volumeMounts: - name: html mountPath: /usr/share/nginx/html [Hands - on] node1,2,3에 각각 /webdata/index.html 생성 각 node를 구분할 수.. 2023. 3. 14.