• pod 기반의 서비스를 제공한다고 하면 pod 의 이름이 랜덤하게 생성되고 바뀜
  • 서비스는 LB 역할을 함.
  • 서비스는 LB - L4의 역할을 한다
  • Static IP 와 Port 를 클라이언트에 제공하여 내 외부에서의 접근을 허용
  • API server 를 감시하며 서비스의 endpoint 변경사항을 감지한다
  • 각 노드의 kube proxy 에서 처리
  • 버전에 따라 몇가지 mode 를 지원

iptables

  • iptables : 방화벽, NAT 기능 제공, 룰 등을 적용
  • Client -> iptable (룰 기반으로 분배) 
  • iptables를 통해 성능을 개선한다.

Service 와 DNS Record

  • kube-system 에 dns 기반으로 정보가 올라온다.
  • A레코드에 해당 : ClusterIP, NodePort, LB
  • CNAME 레코드 : ExternalName
  • SRV : Headless

Service Controller 시나리오

1. apply.yaml 명세서 작성

apiVersion: v1
kind: Service # Service로 생성
metadata:
  name: app1
spec:
  selector:
    svc: app1
  ports:
  - port: 80
    targetPort: 80

2. app1-pod.yaml 명세서 작성

apiVersion: v1
kind: Pod
metadata:
  name: pod1
  labels:
    svc: app1 #service와 일치시켜 연결한다
spec:
  containers:
  - name: app1-container
    image: nasamjang02/app:v1

3. client-pod.yaml 명세서 작성

apiVersion: v1
kind: Pod
metadata:
  name: client-pod
spec:
  containers:
  - name: c1
    image: rosehs00/app:k8s
    command: [ 'sh','-c','sleep 3600' ]
  nodeSelector:
    nfs: node1

4. 생성 및 확인

kubectl create -f svc
kubectl exec client-pod -it -- /bin/bash #@client-pod에서 접근

nslookup app1 #@서비스 객체의 이름:app1
	root@ip-172-31-4-27:~# kubectl exec client-pod -it -- /bin/bash 
	root@client-pod:/# nslookup app1
	Server:		10.96.0.10
	Address:	10.96.0.10#53

	Name:	app1.default.svc.cluster.local
	Address: 10.104.31.130

nslookup app1.default.svc.cluster.local
	root@client-pod:/# nslookup app1.default.svc.cluster.local
	Server:		10.96.0.10
	Address:	10.96.0.10#53

	Name:	app1.default.svc.cluster.local
	Address: 10.104.31.130

curl app1 #@ curl 을 통해 접속
curl app1.default.svc.cluster.local

	root@client-pod:/# curl app1
	This is app v1 test…
	root@client-pod:/# curl app1.default.svc.cluster.local
	This is app v1 test…

'클라우드 컴퓨팅 & NoSQL > k8s' 카테고리의 다른 글

Pod의 Resource 관리  (0) 2020.12.03
Ingress Controller  (0) 2020.12.03
Job/CronJob Controller  (0) 2020.12.03
DaemonSetController  (0) 2020.12.03
Scheduler  (0) 2020.12.02

+ Recent posts