본문 바로가기
INFRA/DevOps

[K8s] Cluster IP

by BTC_프로틴 2022. 11. 9.

ClusterIP란?

  • selector의 label이 동일한 pod들의 그룹으로 묶어 단일 진입점(Virtual IP)을 생성
  • cluster내부에서만 사용 가능
  • 랜덤하게 loadbalacing을 하지만 균등하게 서비스 될 수 있도록 지원
  • type 생략 시 default 값으로 10.96.0.0/12 범위에서 할당됨
    • clusterIP는 IP 중첩을 방지하기 위해 주로 고정시키지 않고 사용함
  • definition
apiVersion: v1
kind: Service
metadata:
  name: clusterip-service
spec:
  type: ClusterIP
  clusterIP: 10.100.100.100
  selector:
    app: webui
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

 

[ hands - on ]

  • Deploy yaml 파일 생성 및 실행
vi deploy-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: webui
spec:
  replicas: 3
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      name: nginx-pod
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14
kubectl create -f deploy-nginx.yaml
NAME                     READY   STATUS    RESTARTS   AGE    IP               NODE                NOMINATED NODE   READINESS GATES
webui-6d75c5dd9b-24hkz   1/1     Running   0          112s   192.168.11.120   node1.example.com   <none>           <none>
webui-6d75c5dd9b-9qbv2   1/1     Running   0          112s   192.168.11.121   node1.example.com   <none>           <none>
webui-6d75c5dd9b-tfh56   1/1     Running   0          112s   192.168.221.10   node2.example.com   <none>           <none>

 

  • 3개의 pod를 묶어주는 clusterIP 생성
vi clusterip-nginx.yaml
apiVersion: v1
kind: Service
metadata:
  name: clusterip-service
spec:
  type: ClusterIP
  clusterIP: 10.100.100.100       # 생략가능
  selector:
    app: webui
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
kubectl create -f clusterip-nginx.yaml

 

  • clusterIP 생성 확인
kubectl get service clusterip-service
kubectl describe service clusterip-service
Name:              clusterip-service
Namespace:         default
Labels:            <none>
Annotations:       <none>
Selector:          app=webui
Type:              ClusterIP
IP Family Policy:  SingleStack
IP Families:       IPv4
IP:                10.100.100.100
IPs:               10.100.100.100
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Endpoints:         192.168.11.120:80,192.168.11.121:80,192.168.221.10:80
Session Affinity:  None
Events:            <none>

 

 

참고 :

https://www.youtube.com/watch?v=WaJyY5KvZj8&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&index=26

'INFRA > DevOps' 카테고리의 다른 글

[K8s] LoadBalancer (AKS에서 진행)  (0) 2022.11.21
[k8s] NodePort  (0) 2022.11.15
[k8s] Cronjob  (0) 2022.11.01
[K8s] Job Controller  (0) 2022.10.24
[k8s] Statefulset  (0) 2022.10.19

댓글