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
반응형
'⭐ Kubernetes & EKS > k8s (쿠버네티스)' 카테고리의 다른 글
pod 삭제 명령어 (0) | 2022.03.04 |
---|---|
쿠버네티스 YAML configuration 파일 설명 및 YAML 문법 검사 사이트 (0) | 2021.12.28 |
Hpa 삭제 후 재 생성 (0) | 2021.11.10 |
k8s 쿠버네티스 기본 namespace 변경하기 (0) | 2021.11.09 |
쿠버네티스 AutoComplete 기능 활성화 (0) | 2021.09.05 |