728x90
Pod 배포 Test , 결과 확인
$ kubectl create deployment webtest --image=nginx:1.14 --port=80 --replicas=5
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
webtest-6d754887d7-csmw6 1/1 Running 0 21m 192.168.56.115 ip-192-168-61-103.ap-northeast-2.compute.internal <none> <none>
webtest-6d754887d7-fvtzl 1/1 Running 0 21m 192.168.46.54 ip-192-168-61-103.ap-northeast-2.compute.internal <none> <none>
webtest-6d754887d7-mmthr 1/1 Running 0 21m 192.168.6.163 ip-192-168-3-5.ap-northeast-2.compute.internal <none> <none>
webtest-6d754887d7-r7drr 1/1 Running 0 21m 192.168.9.168 ip-192-168-12-26.ap-northeast-2.compute.internal <none> <none>
webtest-6d754887d7-wtspq 1/1 Running 0 21m 192.168.13.0 ip-192-168-3-5.ap-northeast-2.compute.internal <none> <none>
nginx 웹 서버에 클라이언트 접속 가능하도록 구성하고 간단히 TEST
kubectl expose deployment webtest --port=80 --type=ClusterIP
kubectl expose deployment webtest --port=80 --type=LoadBalancer
kubectl get services
서비스 정보 확인
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 129m
webtest LoadBalancer 10.100.153.133 a8e8....77.ap-northeast-2.elb.amazonaws.com 80:31491/TCP 17m
web 페이지 확인
서비스 정보 변경하기
- 현재 34번째 줄 NodePort 확인
$ kubectl edit svc webtest
1 # Please edit the object below. Lines beginning with a '#' will be ignored,
2 # and an empty file will abort the edit. If an error occurs while saving this file will be
3 # reopened with the relevant failures.
4 #
5 apiVersion: v1
6 kind: Service
7 metadata:
8 creationTimestamp: "2025-01-29T02:18:36Z"
9 finalizers:
10 - service.kubernetes.io/load-balancer-cleanup
11 labels:
12 app: webtest
13 name: webtest
14 namespace: default
15 resourceVersion: "23734"
16 uid: 8e864475-e69d-4376-9211-396fa355b3e5
17 spec:
18 clusterIP: 10.100.153.133
19 clusterIPs:
20 - 10.100.153.133
21 externalTrafficPolicy: Cluster
22 internalTrafficPolicy: Cluster
23 ipFamilies:
24 - IPv4
25 ipFamilyPolicy: SingleStack
26 ports:
27 - nodePort: 31491
28 port: 80
29 protocol: TCP
30 targetPort: 80
31 selector:
32 app: webtest
33 sessionAffinity: None
34 type: NodePort
35 status:
36 loadBalancer: {}
- 서비스 정보 확인
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 138m
webtest NodePort 10.100.153.133 <none> 80:31491/TCP 25m
- 34번째 줄 LoadBalancer 로 변경
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2025-01-29T02:18:36Z"
labels:
app: webtest
name: webtest
namespace: default
resourceVersion: "23798"
uid: 8e864475-e69d-4376-9211-396fa355b3e5
spec:
clusterIP: 10.100.153.133
clusterIPs:
- 10.100.153.133
externalTrafficPolicy: Cluster
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- nodePort: 31491
port: 80
protocol: TCP
targetPort: 80
selector:
app: webtest
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer: {}
- 적용 확인 (LoadBalancer Type으로 변경 확인)
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 139m
webtest LoadBalancer 10.100.153.133 a8e864...07743.ap-northeast-2.elb.amazonaws.com 80:31491/TCP 26m
로드 밸런서 타입으로 변경하면 AWS 에서 직접 EC2의 로드 밸런서 설정을 하지 않아도 로드 밸런싱이 가능하다.
리소스 삭제
- 삭제
$ kubectl delete deployments.apps webtest
deployment.apps "webtest" deleted
$ kubectl delete svc webtest
service "webtest" deleted
- 확인
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 143m
$ kubectl get pods -o wide
No resources found in default namespace.
EKS 추가 기능 (Add-on) 설치
default로 CoreDNS, kube-proxy, Amazon VPC CNI가 설치가 되어있다.
추가 기능 추가
'DevOps > Kubernetes' 카테고리의 다른 글
[Kubernetes] YAML에서 Deploy(Deployment)와 Service의 차이 (0) | 2025.02.26 |
---|---|
[EKS] aws-load-balancer-controller 배포 (0) | 2025.02.14 |
[Kubernetes] Kubernetes에서 PV(Persistent Volume)와 PVC(Persistent Volume Claim)의 관계 (0) | 2025.02.12 |
[EKS] kubectl 설치 & eksctl 명령어 설치 후 EKS 생성 test (0) | 2025.02.11 |
[Kubernetes] CoreDNS: Kubernetes 네트워킹의 핵심을 파헤치다 (0) | 2025.02.08 |