블록체인
블록체인

애플리케이션 노출 방법

목차

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
복사