목표: 쿠버네티스에 nignx를 위한 deployment, service를 배포
Deployment
kubectl create -f nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-server
labels:
app: server
spec:
replicas: 1
selector:
matchLabels:
app: server
template:
metadata:
name: nginx-server
labels:
app: server
spec:
containers:
- name: server
image: nginx:1.23.3
ports:
- containerPort: 80
Service
kubectl create -f nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: server
spec:
selector:
app: server
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort
#type에 노드포트 설정하면 노드 아이피:포트로 외부에서 접근 가능함
#port = 외부에서 Service에 접근하는 포트
#targetPort = Service와 연결된 pod의 포트
kubectl get deploy,pod,svc,ep
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx-server 1/1 1 1 69m
NAME READY STATUS RESTARTS AGE
pod/nginx-server-6c775c46d5-pkmxg 1/1 Running 0 69m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 148m
service/nginx-service ClusterIP 10.110.212.55 <none> 80/TCP 68m
NAME ENDPOINTS AGE
endpoints/kubernetes 192.168.0.27:6443 148m
endpoints/nginx-service 10.10.180.194:80 68m
- ClusterIP: 서비스를 클러스터-내부 IP에 노출시킨다. 이 값을 선택하면 클러스터 내에서만 서비스에 도달할 수 있다. 이것은 ServiceTypes의 기본 값이다.
- NodePort: 고정 포트 (NodePort)로 각 노드의 IP에 서비스를 노출시킨다. NodePort 서비스가 라우팅되는 ClusterIP 서비스가 자동으로 생성된다. <NodeIP>:<NodePort>를 요청하여, 클러스터 외부에서 NodePort 서비스에 접속할 수 있다.
- LoadBalancer: 클라우드 공급자의 로드 밸런서를 사용하여 서비스를 외부에 노출시킨다. 외부 로드 밸런서가 라우팅되는 NodePort와 ClusterIP 서비스가 자동으로 생성된다.
- ExternalName: 값과 함께 CNAME 레코드를 리턴하여, 서비스를 externalName 필드의 콘텐츠 (예:foo.bar.example.com)에 매핑한다. 어떤 종류의 프록시도 설정되어 있지 않다.
kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master-node Ready control-plane 18h v1.26.5 192.168.0.27 <none> Ubuntu 22.04.3 LTS 5.15.0-86-generic containerd://1.7.2
worker-node1 Ready <none> 18h v1.26.5 192.168.0.62 <none> Ubuntu 22.04.3 LTS 5.15.0-86-generic containerd://1.7.2
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 18h
nginx-service NodePort 10.106.46.122 <none> 80:30662/TCP 29m
192.168.0.62의 공인 ip인 133.186.244.84의 NodePort 30662로 접근 가능하다.
![](https://blog.kakaocdn.net/dn/bSdua2/btsBGmmODeg/h9b3bGfEisdZELWBIKsZxK/img.png)
'Kubernetes > 샘플' 카테고리의 다른 글
Helm 헬름 활용(1) (0) | 2024.02.19 |
---|---|
잘못된 pod 생성 트러블 슈팅 (0) | 2024.02.15 |
쿠버네티스 트러블슈팅의 기본 프로세스 (0) | 2024.02.15 |
yaml 파일을 이용한 쿠버네티스 오브젝트 관리 (0) | 2024.02.08 |
nginx 파드 실행과 bash실행 (0) | 2024.02.08 |