본문 바로가기

Infra/쿠버네티스 입문

쿠버네티스 입문 (7) - 네트워킹

728x90

- 보통은 위 구조와 마찬가지로 역할별로 파드를 나누는 게 편하다.

- 하나에 다 넣으면, 나중에 운영하기 너무 어려움

- 쿠버네티스는 kube-dns를 통해서 각 파드가 어떤 IP를 가지는 지 관리를 한다.

- 예를 들어 프론트 파드가 lookup을 통해, 백엔드 파드를 찾을 수 있는 것을 의미한다.

 

- 네임스페이스는 쿠버네티스에서 파드별로 묶을 수 있는 시스템 분할 방식이다.

 

 

apiVersion: v1
kind: Pod
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  containers:
  - name: mysql
    image: mysql:5
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: password
    - name: MYSQL_DATABASE
      value: fleetman
---
kind: Service
apiVersion: v1
metadata:
  name: database
spec:
  selector:
    app: mysql
  ports:
  - port: 3306
  type: ClusterIP

- database 네트워킹을 위해 새로운 서비스 & 파드 설정

 

/ # apk update
/ # apk add mysql-client
/ # mysql -h database -uroot -ppassord fleetman

- apply 후, exec -it 형태로 쉘에 들어가서 db 접속 되는 지 확인!

- database가 dns로 접근이 가능하기 때문에 가능하다.

- 리눅스에서는 /etc/resolv.conf 가 호스트 파일인데, 여기에 dns로 kube-dns 용 서버가 등록이 되어 있고 여기서 쿠버네티스에 등록된 서비스 (database)가 있기 때문에 nslookup이 가능하다!

300x250