반응형
클러스터 외부의 응용 프로그램에서 kubernetes의 게시물 액세스
다른 Centos VM에서 실행 중인 다른 애플리케이션에서 Centosvms의 kubernetes(kubebedm)에 배포된 postgresdb에 액세스하려고 합니다. postgres 서비스를 'NodePort' 유형으로 배포했습니다. LoadBalancer 유형은 AWS/Azure와 같은 클라우드 프로바이더에만 구축할 수 있으며 베어메탈 VM에는 구축할 수 없는 것으로 알고 있습니다. 이제 NodePort 유형 서비스로 '입력'을 구성하려고 합니다. 하지만 나는 여전히 kubernetes master에서 kubectl exec $Pod-Name을 사용하는 것 외에는 내 db에 액세스할 수 없다.
내 입력.yaml은
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: postgres-ingress
spec:
backend:
serviceName: postgres
servicePort: 5432
아래와 같은 주소가 표시되지 않습니다
NAME HOSTS ADDRESS PORTS AGE
postgres-ingress * 80 4m19s
심지어 내 로컬 맥의 pgadmin에서 그것에 접속할 수 없다. 내가 뭘 빼놓았나요?
어떤 도움이든 대단히 감사합니다.
입력은 작동하지 않습니다. HTTP 트래픽용으로만 설계되었으며 Postgres 프로토콜은 HTTP가 아닙니다. 원시 TCP 트래픽만 처리하는 솔루션이 필요한 경우:
- NodePort 서비스만으로도 충분합니다. 아마 가장 간단한 해결책일 겁니다. 서비스에서 수행하여 포트를 찾은 다음 Postgres 클라이언트를 해당 포트의 노드 VM(포드 또는 서비스가 아님)의 IP에 연결합니다.
- 포트 포워딩을 사용한 다음 Postgres 클라이언트를 에 연결할 수 있습니다. 로컬 컴퓨터에서 데이터베이스에 액세스할 때 선호하는 방법이지만(매우 편리하고 안전함) 프로덕션 워크로드에는 사용하지 않을 것입니다(Kubectl은 항상 실행 중이어야 하므로 다소 취약하고 최상의 성능을 얻을 수 없습니다).
- 특수 네트워킹 구성을 수행하는 경우 클러스터 외부에서 서비스 또는 포드 IP에 직접 액세스할 수 있습니다. 포드 및 서비스 CIDR 범위의 트래픽을 k8s 노드로 라우팅해야 합니다. 이 작업에는 VM 하이퍼바이저, 라우터 및 방화벽을 구성하는 작업이 포함되며 Kubernetes 클러스터에 사용하는 CNI(네트워크) 플러그인에 따라 크게 달라집니다.
나는 nodePort 유형 서비스를 추가하여 작동했다
apiVersion: v1
kind: Service
metadata:
name: postgresql-external
labels:
version: 1.0.0
spec:
selector:
sfs: postgresql-sfs
ports:
- name: postgresql-external
port: 5432
targetPort: 5432
nodePort: 30030
type: NodePort
셀렉터를 바꾸는 것을 잊지 마세요. 내 것은 우체부의 상태가 좋은 세트를 목표로 했다.
반응형
'개발하자' 카테고리의 다른 글
흐름형 CLI 도구에 해당하는 TypeScript가 있나요? (0) | 2023.06.20 |
---|---|
리눅스 터미널에서 모든 셀에서 주피터 노트북의 출력을 지우는 방법은 무엇입니까? (0) | 2023.06.19 |
쿠버네티스: 내 포드를 확장하는 방법 (0) | 2023.06.18 |
주피터 노트북에서 Python을 사용하여 github에서 데이터 가져오기 (1) | 2023.06.17 |
Node.js Typescript 프로젝트 유형 오류 [ERR_UNKNOWN_FILE_EXTENSION]을(를) 실행할 수 없습니다: /app/src/App.ts에 대해 알 수 없는 파일 확장명 ".ts"입니다 (0) | 2023.06.17 |