본문 바로가기

⭐ Kubernetes & EKS/k8s (쿠버네티스)

k8s 새로운 namespace를 생성하고, nginx deply 후에 hpa를 활성화 해보자

728x90
반응형

1. 새로운 namespace를 생성

k8s-master-node@k8smasternode-Virtual-Machine:~$ kubectl create ns nginx-hpa-test

2. 기본(default) namespace를 변경

- 기본 namespace 확인 : nginx로 확인 > nginx-hpa-test로 기본 namespace를 변경

k8s-master-node@k8smasternode-Virtual-Machine:~$ kubectl config view --minify | grep namespace
    namespace: nginx

- 기본 namespace 변경, 기본 namespace가 nginx-hpa-test로 변경된것 확인

k8s-master-node@k8smasternode-Virtual-Machine:~$ kubectl config set-context --current --namespace=nginx-hpa-test
Context "kubernetes-admin@kubernetes" modified.

k8s-master-node@k8smasternode-Virtual-Machine:~$ kubectl config view --minify | grep namespace
    namespace: nginx-hpa-test

3. nginx를 deploy 한다.

- yaml 파일 코드 (파일 이름 : nginx-deployment.yaml)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment-01
  labels:
    app: nginx-test
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-test
  template:
    metadata:
      labels:
        app: nginx-test
    spec:
      containers:
      - name: nginx-test
        image: nginx:1.14.2
        ports:
        - containerPort: 80

- deploy 시 namespace를 nginx-hpa-test로 지정하여 설정을 완료한다.

k8s-master-node@k8smasternode-Virtual-Machine:~/yaml$ kubectl create -f nginx-deployment.yaml -n nginx-hpa-test
deployment.apps/nginx-deployment-01 created

k8s-master-node@k8smasternode-Virtual-Machine:~/yaml$ kubectl get pod
NAME                                   READY   STATUS    RESTARTS   AGE
nginx-deployment-01-5c4cd974cc-9q4jx   1/1     Running   0          8s
nginx-deployment-01-5c4cd974cc-brmjl   1/1     Running   0          8s
nginx-deployment-01-5c4cd974cc-t7x7v   1/1     Running   0          8s

4. hpa 적용하기

- deployment 조회 하기

k8s-master-node@k8smasternode-Virtual-Machine:~/yaml$ kubectl get deployment
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment-01   3/3     3            3           77m

- hpa 적용하기 > cpu 사용량이 50%를 초과할 경우 Scale-Out이 발생하여 pod가 증가한다.

k8s-master-node@k8smasternode-Virtual-Machine:~/yaml$ kubectl autoscale deployment nginx-deployment-01 --cpu-percent=50 --min=1 --max=10
horizontalpodautoscaler.autoscaling/nginx-deployment-01 autoscaled

k8s-master-node@k8smasternode-Virtual-Machine:~/yaml$ kubectl get hpa
NAME                  REFERENCE                        TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
nginx-deployment-01   Deployment/nginx-deployment-01   <unknown>/50%   1         10        3          23s

번외로, 생성한 nginx에 접속하는 방법을 알아보자.

- deployment/nginx-deployment-01를 서비스 해보자.

k8s-master-node@k8smasternode-Virtual-Machine:~/yaml$ kubectl get deployment
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment-01   3/3     3            3           88m

k8s-master-node@k8smasternode-Virtual-Machine:~/yaml$ kubectl expose deployment/nginx-deployment-01 --type="NodePort" --port 9090 --target-port=80 --protocol="TCP"
service/nginx-deployment-01 exposed

- url을 통해 nginx 웹브라우저에 접근하자.
- 192.168.137.105:30017
-192.168.137.254:30017

k8s-master-node@k8smasternode-Virtual-Machine:~/yaml$ kubectl get svc
NAME                  TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
nginx-deployment-01   NodePort   10.109.176.183   <none>        9090:30017/TCP   3m23s

k8s-master-node@k8smasternode-Virtual-Machine:~/yaml$ kubectl get nodes -o wide
NAME                              STATUS   ROLES                  AGE     VERSION   INTERNAL-IP       EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
k8smasternode-virtual-machine     Ready    control-plane,master   4d15h   v1.22.3   192.168.137.50    <none>        Ubuntu 20.04.3 LTS   5.11.0-38-generic   docker://20.10.7
k8sworkernode01-virtual-machine   Ready    <none>                 4d15h   v1.22.3   192.168.137.105   <none>        Ubuntu 20.04.3 LTS   5.11.0-38-generic   docker://20.10.7
k8sworkernode02-virtual-machine   Ready    <none>                 4d15h   v1.22.3   192.168.137.254   <none>        Ubuntu 20.04.3 LTS   5.11.0-38-generic   docker://20.10.7

- 생성된 서비스로 nginx 웹 페이지에 접속이 정상적으로 접속이 되었다.

- 지금까지 새로운 namespace를 생성하고, nginx를 deploy 후 hpa까지 적용 및 해당 pod에 서비스에 접근하는 과정에 대해 살펴 보았다.

- 끝-

728x90
반응형