목차
port-forward
•
마스터 노드 포트 ⇒ 워커노드 포트로 포워딩하는 방법이다.
•
영속적으로 사용하기에는 어려우며, 임시적으로 사용할때 주로 사용한다.
# Pod deploy
[root@m-k8s 4.2]# k apply -f port-forward.yaml
[root@m-k8s 4.2]# k get po
NAME READY STATUS RESTARTS AGE
fwd-chk-hn 1/1 Running 0 11s
# 1. 127.0.0.1 IP에 대해서만 포트 포워딩하기
# 마스터노드의 127.0.0.1:80 -> 80
[root@m-k8s 4.2]# k port-forward fwd-chk-hn 80:80
Forwarding from 127.0.0.1:80 -> 80
Handling connection for 80
# 127.0.0.1은 정상적으로 접속이 된다.
[root@m-k8s ~]# curl 127.0.0.1
fwd-chk-hn
# eth1 IP는 접속이 되지 않는다.
[root@m-k8s ~]# curl 192.168.1.10
curl: (7) Failed connect to 192.168.1.10:80; Connection refused
# 2. 모든 IP(0.0.0.0)에 대해서 포트 포워딩 하기
# 마스터노드의 0.0.0.0:80 -> 80
[root@m-k8s 4.2]# k port-forward --address 0.0.0.0 fwd-chk-hn 80:80
Forwarding from 0.0.0.0:80 -> 80
# # 127.0.0.1에 정상적으로 접속이 된다.
[root@m-k8s ~]# curl 127.0.0.1
fwd-chk-hn
# eth1 IP에 정상적으로 접속이 된다.
[root@m-k8s ~]# curl 192.168.1.10
fwd-chk-hn
YAML
복사
HostPort
•
hostPort(워커노드 포트) ⇒ containerPort(컨테이너 포트)로 이루어지는 방법이다.
•
사용자가 어느 워커노드에 애플리케이션이 배포되었는지 알아야 하기 때문에 실질적으로 사용할 수 없고 개념 상 남아있는 방법이다.
•
서비스 타입은 아니다.
apiVersion: v1
kind: Pod
metadata:
name: hp-chk-hn
spec:
containers:
- name: chk-hn
image: sysnet4admin/chk-hn
ports:
- containerPort: 80
hostPort: 8080
YAML
복사
# hostPort Pod를 배포한다.
[root@m-k8s 4.2]# k apply -f hostport.yaml
pod/hp-chk-hn created
# 워커노드 2번에 배포된 것이 확인된다.
[root@m-k8s 4.2]# k get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
hp-chk-hn 1/1 Running 0 39s 172.16.103.151 w2-k8s <none> <none>
# 워커노드 2번의 8080으로 접속해본다.
c:\>curl 192.168.1.102:8080
hp-chk-hn
YAML
복사
hostNetwork
•
spec에 hostNetwork: true라고 선언한다.
•
배포가 되자마자 컨테이너 포트가 오픈이 되고 그대로 노출이 된다.
•
사용자가 어느 워커노드에 애플리케이션이 배포되었는지 알아야 하기 때문에 실질적으로 사용할 수 없고 개념 상 남아있는 방법이다.
•
서비스 타입은 아니다.
apiVersion: v1
kind: Pod
metadata:
name: hnet-chk-hn
spec:
hostNetwork: true
containers:
- name: chk-hn
image: sysnet4admin/chk-hn
YAML
복사
# hostPort Pod를 배포한다.
[root@m-k8s 4.2]# k apply -f hostnetwork.yaml
pod/hnet-chk-hn created
# 워커노드 3번에 배포된 것이 확인된다.
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
hnet-chk-hn 1/1 Running 0 85s 192.168.1.103 w3-k8s <none> <none>
# 워커노드3으로 접속해본다.
c:\>curl 192.168.1.103
w3-k8s
YAML
복사
NodePort(svc)
•
노드포트 ⇒ 서비스 포트 ⇒ 컨테이너 포트로 이루어지는 방법이다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-nginx
labels:
app: deploy-nginx
spec:
replicas: 3
selector:
matchLabels:
app: deploy-nginx
template:
metadata:
labels:
app: deploy-nginx
spec:
containers:
- name: nginx
image: nginx
---
apiVersion: v1
kind: Service
metadata:
name: np-nginx
spec:
selector:
app: deploy-nginx
ports:
- name: http
port: 80 //서비스 포트
targetPort: 80 // 컨테이너 Pod 포트
nodePort: 30000 // 노드포트로 선택사항이다.
type: NodePort
YAML
복사
# pod, nodeport를 배포한다.
[root@m-k8s 4.3]# k apply -f nodeport.yaml
deployment.apps/deploy-nginx created
service/np-nginx created
# pod가 3개 deploy 되었다.
[root@m-k8s 4.3]# k get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
deploy-nginx-8458f6dbbb-4pkg9 1/1 Running 0 25s 172.16.103.152 w2-k8s <none> <none>
deploy-nginx-8458f6dbbb-rhnnh 1/1 Running 0 25s 172.16.132.19 w3-k8s <none> <none>
deploy-nginx-8458f6dbbb-vk26j 1/1 Running 0 25s 172.16.221.144 w1-k8s <none> <none>
# svc도 생성되었다.
[root@m-k8s 4.3]# k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6d18h
nginx ClusterIP 10.110.29.68 <none> 80/TCP 25h
np-nginx NodePort 10.99.190.238 <none> 80:30000/TCP 46s
# 노드들의 IP를 확인한다.
[root@m-k8s 4.3]# k get no -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
m-k8s Ready control-plane,master 6d18h v1.22.0 192.168.1.10 <none> CentOS Linux 7 (Core) 3.10.0-1127.19.1.el7.x86_64 docker://20.10.8
w1-k8s Ready <none> 6d18h v1.22.0 192.168.1.101 <none> CentOS Linux 7 (Core) 3.10.0-1127.19.1.el7.x86_64 docker://20.10.8
w2-k8s Ready <none> 6d18h v1.22.0 192.168.1.102 <none> CentOS Linux 7 (Core) 3.10.0-1127.19.1.el7.x86_64 docker://20.10.8
w3-k8s Ready <none> 6d18h v1.22.0 192.168.1.103 <none> CentOS Linux 7 (Core) 3.10.0-1127.19.1.el7.x86_64 docker://20.10.8
# 노드포트 30000포트로 접속해본다.
c:\>curl 192.168.1.101:30000
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
YAML
복사
LoadBalancer(svc)
•
로드밸런서 포트 ⇒ 컨테이너 포트로 이루어지는 방법이다.
•
External IP는 Config Map을 통해 제공된다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-nginx
labels:
app: deploy-nginx
spec:
replicas: 3
selector:
matchLabels:
app: deploy-nginx
template:
metadata:
labels:
app: deploy-nginx
spec:
containers:
- name: nginx
image: nginx
---
apiVersion: v1
kind: Service
metadata:
name: lb-nginx
spec:
selector:
app: deploy-nginx
ports:
- name: http
port: 80 // 로드밸런서 포트
targetPort: 80 // 컨테이너 Pod 포트
type: LoadBalancer
YAML
복사
# metallb-system 네임스페이스의 pod를 확인한다.(미리 metallb를 설치놓았다.)
[root@m-k8s 4.4]# k get po -n metallb-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
controller-64f86798cc-m9mmx 1/1 Running 1 (3d1h ago) 7d19h 172.16.221.134 w1-k8s <none> <none>
speaker-dch4s 1/1 Running 1 (3d1h ago) 7d19h 192.168.1.102 w2-k8s <none> <none>
speaker-j4df9 1/1 Running 1 (3d1h ago) 7d19h 192.168.1.101 w1-k8s <none> <none>
speaker-plhlg 1/1 Running 1 (3d1h ago) 7d19h 192.168.1.103 w3-k8s <none> <none>
speaker-snvq7 1/1 Running 1 (3d1h ago) 7d19h 192.168.1.10 m-k8s <none> <none>
# Pod와 로드밸런서를 배포한다.
[root@m-k8s 4.4]# k apply -f loadbalancer-11.yaml
deployment.apps/deploy-nginx created
service/lb-nginx unchanged
[root@m-k8s 4.4]# k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d19h
lb-nginx LoadBalancer 10.110.236.191 192.168.1.11 80:31110/TCP 16s
nginx ClusterIP 10.110.29.68 <none> 80/TCP 2d2h
# LoadBalancer External IP로 접속해본다.
c:\>curl 192.168.1.11
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
YAML
복사
ExternalName(svc)
•
외부에 있는 이름을 내부의 서비스와 매핑한다.
•
외부 주소에 대한 별칭이다.
•
쿠버네티스 클러스트 내에서 컨테이너들이 alias한 svc로 접속하면 ExternalName으로 접속이 된다.
apiVersion: v1
kind: Service
metadata:
name: ex-url-1
namespace: default
spec:
type: ExternalName
externalName: itlearner.tistory.com // 외부 주소
YAML
복사
# ExternalName 배포한다.
[root@m-k8s 4.5]# k apply -f externalname-1.yaml
service/ex-url-2 created
# 생성된 ExnernalName를 확인한다.
[root@m-k8s 4.5]# k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ex-url-1 ExternalName <none> sysnet4admin.github.io <none> 12s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11d
lb-chk-ip LoadBalancer 10.101.85.122 192.168.1.12 80:31409/TCP 3d18h
lb-nginx LoadBalancer 10.110.236.191 192.168.1.11 80:31110/TCP 3d18h
nginx ClusterIP 10.110.29.68 <none> 80/TCP 5d20h
# 쿠버네티스 클러스터 안에서 nkslookup하면 해당 도메인 주소에 대해서 해석해준다.
[root@m-k8s 4.5]# k exec net -it -- /bin/bash
[root@net /]# nslookup ex-url-1
Server: 10.96.0.10
Address: 10.96.0.10#53
ex-url-1.default.svc.cluster.local canonical name = itlearner.tistory.com.
itlearner.tistory.com canonical name = wildcard-tistory-fz0x1pwf.kgslb.com.
Name: wildcard-tistory-fz0x1pwf.kgslb.com
Address: 211.231.99.250
YAML
복사
ClusterIP
•
Pod와 Pod를 연결하기 위한 내부용 IP이다.
•
PodClusterIPPod
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-nginx
labels:
app: deploy-nginx
spec:
replicas: 3
selector:
matchLabels:
app: deploy-nginx
template:
metadata:
labels:
app: deploy-nginx
spec:
containers:
- name: nginx
image: nginx
---
apiVersion: v1
kind: Service
metadata:
name: cl-nginx
spec:
selector:
app: deploy-nginx
ports:
- name: http
port: 80
targetPort: 80
type: ClusterIP //kind가 Service일때 type을 따로 지정하지 않아도 default type은 ClusterIP이다.
YAML
복사
[root@m-k8s 4.6]# k apply -f headless.yaml
deployment.apps/deploy-nginx unchanged
service/hdl-nginx created
[root@m-k8s 4.6]# k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
cl-nginx ClusterIP 10.98.212.69 <none> 80/TCP 65s
hdl-nginx ClusterIP None <none> 80/TCP 7s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11d
lb-chk-ip LoadBalancer 10.101.85.122 192.168.1.12 80:31409/TCP 3d18h
lb-nginx LoadBalancer 10.110.236.191 192.168.1.11 80:31110/TCP 3d18h
nginx ClusterIP 10.110.29.68 <none> 80/TCP 5d20h
YAML
복사
Headless
•
IP를 소진하지 않고 도메인 이름으로 통신할 수 있다.
•
PodHeadlessPod
•
항상 같은 호스트 이름을 가지고 있기 때문에 statefulset과 결합하여 사용하기 좋다.
◦
결합 시 statefulset serviceName과 headless name은 동일해야 한다.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: sts-chk-hn
spec:
replicas: 3
serviceName: sts-svc-domain
selector:
matchLabels:
app: sts
template:
metadata:
labels:
app: sts
spec:
containers:
- name: chk-hn
image: sysnet4admin/chk-hn
---
apiVersion: v1
kind: Service
metadata:
name: sts-svc-domain
spec:
selector:
app: sts
ports:
- port: 80
clusterIP: None // ClusterIP를 None으로 선언하면 Headless type이 된다.(type이 존재하지 않는다.)
YAML
복사
# Stateless, Headless를 배포한다.
[root@m-k8s 4.6]# k apply -f sts-svc-domain-headless.yaml
statefulset.apps/sts-chk-hn created
service/sts-svc-domain created
# sts-chk-hn-0, sts-chk-hn-1 stateless가 배포된것을 확인한다.
[root@m-k8s 4.6]# k get po
NAME READY STATUS RESTARTS AGE
net 1/1 Running 0 33m
sts-chk-hn-0 1/1 Running 0 6s
sts-chk-hn-1 0/1 ContainerCreating 0 2s
# Headless를 확인한다.
[root@m-k8s 4.6]# k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11d
sts-svc-domain ClusterIP None <none> 80/TCP 11s
# 컨테이너에 접속하여 nslookup Headless로 nslookup을 해본다.
[root@m-k8s 4.6]# k exec net -it -- /bin/bash
[root@net /]# nslookup sts-svc-domain
Server: 10.96.0.10
Address: 10.96.0.10#53
Name: sts-svc-domain.default.svc.cluster.local
Address: 172.16.221.148
Name: sts-svc-domain.default.svc.cluster.local
Address: 172.16.103.157
Name: sts-svc-domain.default.svc.cluster.local
Address: 172.16.132.24
# Headless 앞에 stateless 이름을 붙여서 nslookup을 해본다.
[root@net /]# nslookup sts-chk-hn-0.sts-svc-domain
Server: 10.96.0.10
Address: 10.96.0.10#53
Name: sts-chk-hn-0.sts-svc-domain.default.svc.cluster.local
Address: 172.16.221.148
YAML
복사
Endpoints
•
서비스를 생성하면 생성된다.
•
도달할 수 있는 pod 개수에 따라서 endpoint가 생성된다.
•
로드밸런서를 통해서 Pod에 도달하는 IP이다.
# Deployment, LB를 배포하고 pod, svc, endpoints를 확인해보면
# deploy개수만큼 Endpoints IP가 생성된 것을 확인할 수 있다.
[root@m-k8s 4.7]# k get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
deploy-chk-ip-59cdcb4db4-dlvd6 1/1 Running 0 2m11s 172.16.103.158 w2-k8s <none> <none>
deploy-chk-ip-59cdcb4db4-pszsq 1/1 Running 0 2m11s 172.16.221.149 w1-k8s <none> <none>
deploy-chk-ip-59cdcb4db4-zbtbt 1/1 Running 0 2m11s 172.16.132.25 w3-k8s <none> <none>
net
[root@m-k8s 4.7]# k get svc,endpoints
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11d
service/lb-chk-ip LoadBalancer 10.101.85.122 192.168.1.12 80:31409/TCP 3d19h
service/lb-nginx LoadBalancer 10.110.236.191 192.168.1.11 80:31110/TCP 3d19h
NAME ENDPOINTS AGE
endpoints/kubernetes 192.168.1.10:6443 11d
endpoints/lb-chk-ip 172.16.103.158:80,172.16.132.25:80,172.16.221.149:80 3d19h
endpoints/lb-nginx <none>
1/1 Running 0 64m 172.16.132.23 w3-k8s <none> <none>
YAML
복사
# Endpoint를 임의로 생성하기
# (ClusterIP로 쿼리를 날리면 Endpoint가 LB로 전달)
# ClusterIP -> Endpoint -> LB -> Endpoint -> deploy
1. LB 선언
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-chk-ip
labels:
app: deploy-chk-ip
spec:
replicas: 3
selector:
matchLabels:
app: deploy-chk-ip
template:
metadata:
labels:
app: deploy-chk-ip
spec:
containers:
- name: chk-ip
image: sysnet4admin/chk-ip
---
apiVersion: v1
kind: Service
metadata:
name: lb-chk-ip
spec:
selector:
app: deploy-chk-ip
ports:
- name: http
port: 80
targetPort: 80
type: LoadBalancer
2. ClusterIP 선언
apiVersion: v1
kind: Service
metadata:
name: external-data
spec:
ports:
- name: http
port: 80
targetPort: 80
3. Endpoints 선언
# 이름을 ClusterIP와 동일하게 지정
# IP를 LB IP로 지정
apiVersion: v1
kind: Endpoints
metadata:
name: external-data
subsets:
- addresses:
- ip: 192.168.1.11 // LB IP를 지정
ports:
- name: http
port: 80
# pod, svc, endpoints를 확인한다.
[root@m-k8s 4.7]# k get po,svc,endpoints
NAME READY STATUS RESTARTS AGE
pod/deploy-chk-ip-59cdcb4db4-dlvd6 1/1 Running 0 21m
pod/deploy-chk-ip-59cdcb4db4-pszsq 1/1 Running 0 21m
pod/deploy-chk-ip-59cdcb4db4-zbtbt 1/1 Running 0 21m
pod/net 1/1 Running 0 84m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/external-data ClusterIP 10.99.199.178 <none> 80/TCP 8s
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11d
service/lb-chk-ip LoadBalancer 10.101.85.122 192.168.1.12 80:31409/TCP 3d19h
service/lb-nginx LoadBalancer 10.110.236.191 192.168.1.11 80:31110/TCP 3d19h
NAME ENDPOINTS AGE
endpoints/external-data 192.168.1.11:80 8s
endpoints/kubernetes 192.168.1.10:6443 11d
endpoints/lb-chk-ip 172.16.103.158:80,172.16.132.25:80,172.16.221.149:80 3d19h
endpoints/lb-nginx <none>
# 컨테이너에 접속하여 external-data ClusterIP에 접속해본다.
[root@m-k8s 4.7]# k exec net -it -- /bin/bash
[root@net /]# curl external-data
curl: (7) Failed to connect to external-data port 80 after 1002 ms: Connection refused
YAML
복사
Ingress
•
서비스 바로 앞단에 붙어서 가야하는 지점을 보여준다.
1. Deploy(nginx), ClusterIP 배포
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-nginx
labels:
app: deploy-nginx
spec:
replicas: 3
selector:
matchLabels:
app: deploy-nginx
template:
metadata:
labels:
app: deploy-nginx
spec:
containers:
- name: nginx
image: nginx
---
apiVersion: v1
kind: Service
metadata:
name: ing-default
spec:
selector:
app: deploy-nginx
ports:
- name: http
port: 80
targetPort: 80
type: ClusterIP
2. Deploy(hn), ClusterIP 배포
[root@m-k8s 4.8]# cat deploy-hn.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-hn
labels:
app: deploy-hn
spec:
replicas: 3
selector:
matchLabels:
app: deploy-hn
template:
metadata:
labels:
app: deploy-hn
spec:
containers:
- name: chk-hn
image: sysnet4admin/chk-hn
---
apiVersion: v1
kind: Service
metadata:
name: ing-hn
spec:
selector:
app: deploy-hn
ports:
- name: http
port: 80
targetPort: 80
type: ClusterIP
3. Deploy(ip), ClusterIP 배포
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-ip
labels:
app: deploy-ip
spec:
replicas: 3
selector:
matchLabels:
app: deploy-ip
template:
metadata:
labels:
app: deploy-ip
spec:
containers:
- name: chk-ip
image: sysnet4admin/chk-ip
---
apiVersion: v1
kind: Service
metadata:
name: ing-ip
spec:
selector:
app: deploy-ip
ports:
- name: http
port: 80
targetPort: 80
type: ClusterIP
[root@m-k8s 4.8]# k get po
NAME READY STATUS RESTARTS AGE
deploy-hn-8c88cd5b-db9lj 1/1 Running 0 10s
deploy-hn-8c88cd5b-xqxll 1/1 Running 0 10s
deploy-hn-8c88cd5b-zr94h 1/1 Running 0 10s
deploy-ip-7d885f6cdc-98qcl 1/1 Running 0 6s
deploy-ip-7d885f6cdc-cskd7 1/1 Running 0 6s
deploy-ip-7d885f6cdc-vnjqf 1/1 Running 0 6s
deploy-nginx-8458f6dbbb-6h9lv 0/1 ContainerCreating 0 3s
deploy-nginx-8458f6dbbb-8nrp2 0/1 ContainerCreating 0 3s
deploy-nginx-8458f6dbbb-99888 0/1 ContainerCreating 0 3s
net 1/1 Running 0 3h59m
[root@m-k8s 4.8]# k get po,svc
NAME READY STATUS RESTARTS AGE
pod/deploy-hn-8c88cd5b-db9lj 1/1 Running 0 41s
pod/deploy-hn-8c88cd5b-xqxll 1/1 Running 0 41s
pod/deploy-hn-8c88cd5b-zr94h 1/1 Running 0 41s
pod/deploy-ip-7d885f6cdc-98qcl 1/1 Running 0 37s
pod/deploy-ip-7d885f6cdc-cskd7 1/1 Running 0 37s
pod/deploy-ip-7d885f6cdc-vnjqf 1/1 Running 0 37s
pod/deploy-nginx-8458f6dbbb-6h9lv 1/1 Running 0 34s
pod/deploy-nginx-8458f6dbbb-8nrp2 1/1 Running 0 34s
pod/deploy-nginx-8458f6dbbb-99888 1/1 Running 0 34s
pod/net 1/1 Running 0 3h59m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/ing-default ClusterIP 10.97.204.106 <none> 80/TCP 34s
service/ing-hn ClusterIP 10.100.77.230 <none> 80/TCP 41s
service/ing-ip ClusterIP 10.107.138.66 <none> 80/TCP 37s
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11d
4. ingress 배포
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ing-default
port:
number: 80
- path: /hn
pathType: Prefix
backend:
service:
name: ing-hn
port:
number: 80
- path: /ip
pathType: Prefix
backend:
service:
name: ing-ip
port:
number: 80
[root@m-k8s 4.8]# k get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
nginx-ingress <none> * 80 2m33s
5. nodeport 배포
[root@m-k8s 4.8]# k get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller NodePort 10.100.157.211 <none> 80:30100/TCP,443:30101/TCP 2m9s
ingress-nginx-controller-admission ClusterIP 10.102.61.61 <none> 443/TCP 2m9s
6. 접속해보기
c:\>curl 192.168.1.101:30100
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
c:\>curl 192.168.1.101:30100/hn
deploy-hn-8c88cd5b-xqxll
c:\>curl 192.168.1.101:30100/ip
request_method : GET | ip_dest: 172.16.103.162
세 개의 Deployment를 배포하고 그것을 ClusterIP로 expose
expose 된 것을 ingress로 주소 경로를 매핑
7. LB 배포
[root@m-k8s 4.8]# k get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller NodePort 10.100.157.211 <none> 80:30100/TCP,443:30101/TCP 2m9s
ingress-nginx-controller-admission ClusterIP 10.102.61.61 <none> 443/TCP 2m9s
8. 접속해보기
c:\>curl 192.168.1.11/ip
request_method : GET | ip_dest: 172.16.103.162
c:\>curl 192.168.1.11/hn
deploy-hn-8c88cd5b-zr94h
c:\>curl 192.168.1.11
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
YAML
복사