지금까지는 쿠버네티스 클러스터 내부의 Pod를 사용하였다.
클러스터 외부에서 내부로 접속하는 방법 실습 진행.
1. 노드포트 서비스 이용
1.1 디플로이먼트 파드 생성
kubectl create deploy np-pods --image=httpd
1.2 노드포트 생성
kubectl create -f nodeport.yaml
Pod 오브젝트 스펙
apiVersion: v1 # Kubernetes API 버전 (v1은 core API 그룹)
kind: Service # 객체의 종류: Service (서비스)
metadata:
name: np-svc # 서비스 이름 (np-svc)
spec:
selector:
app: np-pods # 이 서비스가 연결할 Pod의 라벨 셀렉터
ports:
- name: http # 포트 이름 (선택 사항, 관리를 위한 이름)
protocol: TCP # 프로토콜 (TCP 또는 UDP)
port: 80 # 클러스터 내부에서 접근할 서비스 포트
targetPort: 80 # 실제 Pod에서 서비스할 포트
nodePort: 30000 # 외부에서 접근할 노드 포트 (30000~32767 범위)
type: NodePort
1.3 접속 확인
생성된 30000포트를 통해 노드로 접속이 가능한 것을 확인
1.4 삭제
kubectl delete -f nodeport.yaml
실습
매니패스트 파일로 echo-hname 디플로이먼트를 생성하되,
3개의 파드가 출력되도록 하고 이미지는 sysnet4admin/echo-hname을 사용
[root@k8scp ~]# vim nodedeploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: echo-name
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: np-pods
image: sysnet4admin/echo-hname
[root@k8scp ~]# vim nodeport.yaml
apiVersion: v1 # Kubernetes API 버전 (v1은 core API 그룹)
kind: Service # 객체의 종류: Service (서비스)
metadata:
name: np-svc # 서비스 이름 (np-svc)
spec:
selector:
app: nginx # 이 서비스가 연결할 Pod의 라벨 셀렉터
ports:
- name: http # 포트 이름 (선택 사항, 관리를 위한 이름)
protocol: TCP # 프로토콜 (TCP 또는 UDP)
port: 80 # 클러스터 내부에서 접근할 서비스 포트
targetPort: 80 # 실제 Pod에서 서비스할 포트
nodePort: 30001 # 외부에서 접근할 노드 포트 (30000~32767 범위)
type: NodePort # 서비스 타입 (NodePort는 외부에서 접근 가능)
과부화 테스트
$i=0; while($true)
{
% { $i++; write-host -NoNewline "$i $_ " }
(Invoke-RestMethod "http://3.35") -replace "`n", " "
}
'DevOps > K8s' 카테고리의 다른 글
[k8s] Pods 구성 및 도메인 연동 실습 (0) | 2025.04.22 |
---|---|
[K8s] Helm 과 Ingress 웹서버 통합 라우팅 구성 (0) | 2025.04.22 |
[K8s] 쿠버네티스 기초 (0) | 2025.04.02 |