You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 39 Next »


목차


트래픽 분산을 위해 Pod를 여러개로 구성할때, IP주소의 변동 및 로드밸런싱을 해줄 개체가 필요합니다.


Service Type

ClusterIP (default)

  • 외부에서접속이 불가하며 Cluster내부에서만 접근 가능한 서비스타입

NodePort

  • NodePort를 통해 외부네트워크에서 접속가능한 서비스타입
  • 운영환경에서는 사용하기에 적절하지 않음

LoadBalancer

  • 3Party LoadBalancer의 도움을 받아 외부에서 접속 가능한 서비스타입

Service Manifest

https://dev-k8sref-io.web.app/docs/services/service-v1/



ClusterIP (default)



nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
  labels:
    app: myapp-deploy
    type: front-end
spec:
  template:
    metadata:
      name: nginx
      labels:
        app: myapp
        type: front-end
    spec:
      containers:
        - name: nginx
          image: nginx:1.14.2
          ports:
            - containerPort: 80
  selector:
    matchLabels:
      type: front-end
  replicas: 3
nginx-svc.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
	app: myapp-svc
    type: front-end
  name: nginx-svc
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    type: front-end
sansae@sansaeAir15m2 k8s-lab-workspace % k apply -f nginx-svc.yaml 
service/nginx-svc created
sansae@sansaeAir15m2 k8s-lab-workspace % k get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.0.0.1       <none>        443/TCP   23h
nginx-svc    ClusterIP   10.0.133.111   <none>        80/TCP    5s
sansae@sansaeAir15m2 k8s-lab-workspace % k describe svc nginx-svc 
Name:              nginx-svc
Namespace:         default
Labels:            app=myapp-svc
                   type=front-end
Annotations:       <none>
Selector:          type=front-end
Type:              ClusterIP
IP Family Policy:  SingleStack
IP Families:       IPv4
IP:                10.0.133.111
IPs:               10.0.133.111
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Endpoints:         10.244.0.75:80,10.244.0.76:80,10.244.0.77:80
Session Affinity:  None
Events:            <none>


sooabia/network-utils
sansae@sansaeAir15m2 k8s-lab-workspace % k get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.0.0.1       <none>        443/TCP   24h
nginx-svc    ClusterIP   10.0.133.111   <none>        80/TCP    61m

sansae@sansaeAir15m2 k8s-lab-workspace % k run util --image=sooabia/network-utils
pod/util created

sansae@sansaeAir15m2 k8s-lab-workspace % k exec -it util -- bash
root@util:/# curl 10.0.133.111
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>



NodePort


Single Pod on Single Node

Multi Pod on Single Node

Multi Pod on Multi Node

nginx-svc-nodeport.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: myapp-svc
    type: front-end
  name: nginx-svc-nodeport
spec:
  type: NodePort
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
    nodePort: 30008
  selector:
    type: front-end
sansae@sansaeAir15m2 k8s-lab-workspace % k apply -f nginx-svc-nodeport.yaml 
service/nginx-svc-nodeport created
sansae@sansaeAir15m2 k8s-lab-workspace % k get svc
NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes           ClusterIP   10.0.0.1       <none>        443/TCP        29h
nginx-svc            ClusterIP   10.0.133.111   <none>        80/TCP         5h38m
nginx-svc-nodeport   NodePort    10.0.159.138   <none>        80:30008/TCP   3s
sansae@sansaeAir15m2 k8s-lab-workspace % k get node -o wide
NAME                                STATUS   ROLES   AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
aks-agentpool-33019784-vmss000000   Ready    agent   29h   v1.27.9   10.224.0.4    <none>        Ubuntu 22.04.4 LTS   5.15.0-1056-azure   containerd://1.7.7-1
sansae@sansaeAir15m2 k8s-lab-workspace % 
sansae@sansaeAir15m2 k8s-lab-workspace % 
sansae@sansaeAir15m2 k8s-lab-workspace % k exec -it util -- bash
root@util:/# curl 10.224.0.4:30008
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
~~~~~~~~~ 생략 ~~~~~~~~
root@util:/# 

root@util:/# curl 10.0.159.138
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
~~~~~~~~~ 생략 ~~~~~~~~
root@util:/# 


LoadBalancer

nginx-svc-lb.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: myapp-svc
    type: front-end
  name: nginx-svc-lb
spec:
  type: LoadBalancer
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    type: front-end
sansae@sansaeAir15m2 k8s-lab-workspace % k apply -f nginx-svc-lb.yaml 
service/nginx-svc-lb created

sansae@sansaeAir15m2 k8s-lab-workspace % k get svc
NAME                 TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes           ClusterIP      10.0.0.1       <none>        443/TCP        29h
nginx-svc            ClusterIP      10.0.133.111   <none>        80/TCP         5h50m
nginx-svc-lb         LoadBalancer   10.0.69.70     <pending>     80:32050/TCP   5s
nginx-svc-nodeport   NodePort       10.0.159.138   <none>        80:30008/TCP   11m

sansae@sansaeAir15m2 k8s-lab-workspace % k get svc
NAME                 TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)        AGE
kubernetes           ClusterIP      10.0.0.1       <none>           443/TCP        29h
nginx-svc            ClusterIP      10.0.133.111   <none>           80/TCP         5h50m
nginx-svc-lb         LoadBalancer   10.0.69.70     20.249.176.154   80:32050/TCP   18s
nginx-svc-nodeport   NodePort       10.0.159.138   <none>           80:30008/TCP   11m
sansae@sansaeAir15m2 k8s-lab-workspace % 



  • No labels