03. 서버/k8s

쿠버네티스 오토스케일링(Kubernetes Autoscaling) 해보기

킹다킹 2021. 8. 10. 15:07
반응형

1. Deployment 설정

apiVersion: apps/v1
kind: Deployment
metadata:
  name: testdm
  labels:
    app: test
spec:
  selector:
    matchLabels:
      app: test
      tier: frontend
  replicas: 1
  template:
    metadata:
      labels:
        app: test
        tier: frontend
    spec:
      containers:
        - image: 도커 이미지:latest
          name: test
          imagePullPolicy: Always
          resources:
            requests:
              cpu: "200m"
            limits:
              cpu: "500m"
          env:
            - name: DB_HOST
              value: db아이디
            - name: DB_PASSWORD
              value: db비밀번호
          ports:
            - containerPort: 8080
              name: test
          volumeMounts:
          - name: shared-storage
            mountPath: /usr/local/tomcat/logs
      volumes:
        - name: shared-storage
          hostPath:
            path: /run/desktop/mnt/host/d/log
            type: Directory
      imagePullSecrets:
        - name: regcred

로그를 남기려고 볼륨마운트를 사용함.
하지만 이 방법보다는 PVC, PV 권장

2. service - NodePort 설정

apiVersion: v1
kind: Service
metadata:
  name: testnp
  labels:
    app: test
spec:
  type: NodePort
  ports:
    - port: 8080
  selector:
    app: test
    tier: frontend

3. service - LoadBalancer 설정

apiVersion: v1
kind: Service
metadata:
  name: testlb
  labels:
    app: test
spec:
  type: LoadBalancer
  ports:
    - port: 443
      targetPort: 8080
  externalIPs:
    - 192.168.0.186
  selector:
    app: test
    tier: frontend

4. 오토스케일링을 위한 HorizontalPodAutoscaler 설정

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: testhpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: testdm
  maxReplicas: 10
  minReplicas: 1
  targetCPUUtilizationPercentage: 30

-targetCPUUtilizationPercentage : CPU부하가 30%로 올라가면 오토스케일링됨

---추가

만약 도커 이미지가 프라이빗 레지스트리에 있다면 secret을 설정해줘야함.

secret을 생성해줬으면 deployment 필드에 imagePullSecrets을 추가해줘야 함.

imagePullSecrets:
  - name: regcred

그리고 secret만들 때 레지스트리 서버 주소를 입력하는 곳이 있는데 docker info로 먼저 레지스트리를 확인 후 입력하면 된다

반응형