명령어
HostPort와 HostNetwork는 개념적으로만 남아있는 노출법
이다.
type 필드를 NodePort로 설정하면, 쿠버네티스 컨트롤 플레인은 --service-node-port-range 플래그로 지정된 범위에서 포트를 할당한다.
NodePort를 사용하면 자유롭게 자체 로드 밸런싱 솔루션을 설정하거나, 쿠버네티스가 완벽하게 지원하지 않는 환경을 구성하거나, 하나 이상의 노드 IP를 간단히 외부로 노출시킬 수 있다.
이름
과 selector template
가 서로 같습니다.
---
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 nodePort: 30000 #option type: NodePort
NodePort의 접근 범위뿐만 아니라 쿠버네티스 클러스터 외부에서 대표 IP주소로 접근할 수 있다.
하나 배포
하나 더 배포
전체 그림
lb-nginx
서비스는 외부 IP : 192.168.1.11
이 연결되어 내부에 있는 디플로이먼트로 연결 lb-chk-ip
서비스는 외부 IP : 192.168.1.12
이 연결되어 내부에 있는 디플로이먼트로 연결 서비스
인가? 글쎄?spec 주목
apiVersion: v1 kind: Service metadata: name: ex-url-1 # name: ex-url-2 namespace: default spec: type: ExternalName externalName: sysnet4admin.github.io # 이용자가 원하는 것으로 수정 # externalName: k8s-edu.github.io
전체 그림
서비스가 아니다.
복수
이다.3개
가 만들어진다.192.168.1.11
엔드포인트화 해서 만들고 external-data 연결한다.인그레스
는 서비스
가 없다면 존재할 수 없다.
인그레스
는 경로에 대한 라우팅 정보를 제공하고, 실제 경로를 운용하는 것은 서비스
이다.
노드 포트
서비스
로드밸런서
서비스