- 서비스
애플리케이션의 다양한 구성요소에서의 통신을 위해 사용함
내부의 모든 파드들 간의 연결뿐만 아니라 클러스터 외부와의 연결도 담당함
1. NodePort
쿠버네티스 노드의 ip (192.168.1.2)이고 노드 내부의 파드의 ip는 10.244.0.2인상태에서
외부(192.169.1.10)가 파드에 접속하는 방법
파드의 80 포트(targetPort)를 서비스(10.106.1.12)의 80(port)으로 연결하고 해당 서비스를 노드의 특정포트(nodePort, 30000~32767)에 연결하여 사용함
apiVersion : v1
kind : Servcie
metatdata :
name: myapp-service
spec:
type: NodePort
ports:
- targetPort:80
port:80
nodePort:30008
selector:
app: myapp
type: front-end
노드포트는 지정하지 않을시에 자동으로 지정함
사실 80포트를 사용하는 포드는 여러 개 존재할 수 있음
따라서 Selector 가 필요함
연결하려는 파드의 라벨에 해당하는 정보 app, type을 정의해 줘야 됨
부하 분산으로 같은 라벨로 여러 개의 파드가 생성된 상황에서도 라벨에 해당하는 파드간의 로드밸런싱함
새로 생성되는 파드들에 대해서도 같은 서비스에 연결되도록 쿠버네티스가 자동으로 설정함
2. ClusterIP
프런트엔드, 백엔드, 캐시 서버등 다양한 종의 파드가 존재함
프런트는 백엔드로 , 백엔드는 DB로 연결하도록 해야 됨
각 파드는 모두 ip를 가지고 있으나 파드 생성, 삭제에 따라서 항상 변함
프런트 -> 백으로 연결이 갔을 때 어떤 파드에게 연결을 주어야 하는가 하는 것을 결정하는 인터페이스가 존재해야 됨
각 계층 별로 파드를 늘리고 줄일 때 네트워크 관련된 문제를 해결하기 위해서 cluster ip가 필요함
클러스터 내부의 파드간의 네트워크를 위해 존재
apiVersion : v1
kind : Servcie
metatdata :
name: back-end
spec:
type: ClusterIP
ports:
- targetPort:80
port:80
selector:
app: myapp
type: back-end
host = metadata.name
port = ports.port
meatadata.name : ports.port로 접속하면 해당 종류의 파드에 접속하게 됨
3. 클라우드 로드 밸런서
클라우드 플랫폼과 연동하여 클러스터 외부에서 접근하는 요청을 로드밸런싱함
apiVersion : v1
kind : Servcie
metatdata :
name: myapp-servcie
spec:
type: LoadBalancer
ports:
- targetPort:80
port:80
name:webport
selector:
app: webserver
위와 같이 생성할 경우 외부에서 접근하는 external ip는 aws, gcp등과 같은 주소로 할당받게 되며
해당 주소와 ports.port를 통해서 외부에서 접근이 가능해짐
practice
1) How many Services exist on the system?
- kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 11m
2) What is the targetPort configured on the kubernetes service?
- kubectl describe service kubernetes
Name: kubernetes
Namespace: default
Labels: component=apiserver
provider=kubernetes
Annotations: <none>
Selector: <none>
Type: ClusterIP
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.43.0.1
IPs: 10.43.0.1
Port: https 443/TCP
TargetPort: 6443/TCP
Endpoints: 192.15.34.3:6443
Session Affinity: None
Events: <none>
'Tools > K8S' 카테고리의 다른 글
Kubernetes ReplicaSet (0) | 2023.07.01 |
---|---|
Kubernetes Config (1) | 2023.06.17 |
Kubernetes Scheduling (0) | 2023.03.20 |
Kubernetes namespace (0) | 2023.03.19 |
Kubernetes Core concept (0) | 2023.03.18 |