it-source

쿠베르네테스에서 마리아DB를 폭로하는 방법은?

criticalcode 2023. 7. 10. 22:26
반응형

쿠베르네테스에서 마리아DB를 폭로하는 방법은?

Microk8s(단일 유닉스 시스템에서 실행)에서 실행되는 MariaDB가 있는 Docker 컨테이너가 있습니다.

# Hello World Deployment YAML
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mariadb
spec:
  selector:
    matchLabels:
      app: mariadb
  template:
    metadata:
      labels:
        app: mariadb
    spec:
      containers:
      - name: mariadb
        image: mariadb:latest
        env:
        - name: MARIADB_ROOT_PASSWORD
          value: sa
        ports:
        - containerPort: 3306

로그는 다음과 같습니다.

(...)
2021-09-30  6:09:59 0 [Note] mysqld: ready for connections.
Version: '10.6.4-MariaDB-1:10.6.4+maria~focal'  socket: '/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution

지금이다,

  • 기기의 포트 3306에 연결할 수 없습니다.
  • 포트 8081의 서비스(모든 유형)로 포드를 노출한 후 연결해도 작동하지 않습니다.

어떻게 하면 연결이 되나요?

답변은 댓글 섹션에 작성되었지만, 명확하게 하기 위해 커뮤니티 위키로 솔루션을 게시합니다.

이 경우 연결 문제는 설정을 통해 해결되었습니다.

.spec.selector필드는 배포에서 관리할 포드를 찾는 방법을 정의합니다.이 경우 Pod 템플릿에 정의된 레이블을 선택합니다.app: nginx).

.spec.selector이 배포의 대상이 되는 포드의 레이블 선택기를 지정하는 필수 필드입니다.

적절한 레이블로 서비스를 사용해야 합니다.

서비스 예시

apiVersion: v1
kind: Service
metadata:
  name: mariadb
spec:
  selector:
    name: mariadb
  ports:
    - protocol: TCP
      port: 3306
      targetPort: 3306
  type: ClusterIP

서비스 이름을 사용하여 연결하거나 서비스 유형을 LoadBalancer로 변경하여 IP로 노출할 수 있습니다.

apiVersion: v1
kind: Service
metadata:
  name: mariadb
spec:
  selector:
    name: mariadb
  ports:
    - protocol: TCP
      port: 3306
      targetPort: 3306
  type: LoadBalancer

언급URL : https://stackoverflow.com/questions/69387287/how-to-expose-mariadb-in-kubernetes

반응형