포드에 컨테이너 포트가 없어도 서비스를 노출 할 수 있는지 확인하고 싶습니다. 아래 예에서 포드에는 컨테이너 포트가 없지만 서비스에는 포트가 정의되어 있습니다.
apiVersion: v1
metadata:
name: mypod
namespace: ggckad-s8
labels:
app: mypod
spec:
volumes:
- name: log-volume
emptyDir: {}
containers:
- name: app
image: kubegoldenguide/question-29-app
volumeMounts:
- name: log-volume
mountPath: /var/log
kind: Service
apiVersion: v1
metadata:
name: mypod-service
namespace: ggckad-s8
spec:
type: NodePort
selector:
app: mypod
ports:
- port: 8000
로부터 문서
ContainerPort
컨테이너에서 노출 할 포트 목록입니다. 여기에 포트를 노출하면 컨테이너가 사용하는 네트워크 연결에 대한 추가 정보가 시스템에 제공되지만 주로 정보 제공 용 입니다. 여기에 포트를 지정하지 않는다고해서 해당 포트가 노출되는 것을 막지는 않습니다 . 컨테이너 내부의 기본 "0.0.0.0"주소에서 수신하는 모든 포트는 네트워크에서 액세스 할 수 있습니다. 업데이트 할 수 없습니다.
서비스에서 필수는 Port
입니다. 정의하지 않으면 targetPort
기본값은 Port
.
따라서 Port
서비스에서 실제로 포트 컨테이너가 수신 대기하고 있음을 참조하는 한 작동하지만 권장되는 방법은 아닙니다.
모범 사례 targetPort
로 서비스에서 포트 번호 대신 이름을 사용하는 것이 좋습니다 . 문서 에서 인용
포드의 포트 정의에는 이름이 있으며 서비스의 targetPort 속성에서 이러한 이름을 참조 할 수 있습니다. 이는 서로 다른 포트 번호를 통해 동일한 네트워크 프로토콜을 사용할 수있는 단일 구성된 이름을 사용하여 서비스에 혼합 된 포드가있는 경우에도 작동합니다. 이는 서비스를 배포하고 발전시키는 데 많은 유연성을 제공합니다. 예를 들어 클라이언트를 중단하지 않고 다음 버전의 백엔드 소프트웨어에서 포드가 노출하는 포트 번호를 변경할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다