티스토리 뷰

 

 

Mysql 관련 yaml 파일

 

○ mysql-pvc.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mysql-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

 

○ mysql-pv.yaml

# hostpath 는 delete 를 위해서 /tmp 로 설정

kind: PersistentVolume
apiVersion: v1
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy:
    Delete
  hostPath:
    path: "/tmp/mysql-pv"

 

○ mysql-service.yaml

# service 에도 label 을 적을 수도 있다 ( 여기선 참조 안하므로 필요 없다 )

# selector 로 label 을 찾는다

apiVersion: v1
kind: Service
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  type: ClusterIP
  ports:
    - port: 3306
  selector:
    app: mysql

 

 

○ mysql.yaml

> 롤링 업데이트와 롤백을 위해서 Deployment 사용

>> env 의 내용 

>>> create user myuser > grant all privileges on mydb.* to myuser@% identified by 'userpass'

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - image: mysql:5.6
          name: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: mypass  # db 관리자 암호
            - name: MYSQL_DATABASE # database 이름
              value: mydb
            - name: MYSQL_USER # database에 권한이있는 db 사용자
              value: myuser
            - name: MYSQL_ROOT_HOST # root 계정이 access 할수 있는 mysql 클라이언트
              value: '%'   #  모든 mysql client 허용
            - name: MYSQL_PASSWORD # DB 계정(myuser)의 암호
              value: userpass
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pvc

 

 

 

 

Wp 관련 yaml 파일

 

○ wp-pvc.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: wp-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi

 

 

○ wp-pv.yaml

kind: PersistentVolume
apiVersion: v1
metadata:
  name: wp-pv
  labels:
    type: local
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/tmp/wp-pv"

 

 

○ wp-service.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: wordpress
  name: wordpress
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    app: wordpress

 

 

 

○ wp.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  replicas: 1
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
        - image: wordpress
          name: wordpress
          env:
          - name: WORDPRESS_DB_HOST
            value: mysql:3306
          - name: WORDPRESS_DB_NAME
            value: mydb
          - name: WORDPRESS_DB_USER
            value: myuser
          - name: WORDPRESS_DB_PASSWORD
            value: userpass
          ports:
            - containerPort: 80
              name: wordpress
          volumeMounts:
            - name: wordpress-persistent-storage
              mountPath: /var/www/html
      volumes:
        - name: wordpress-persistent-storage
          persistentVolumeClaim:
            claimName: wp-pvc

 

 

 

 

 

실행

 

 

① wp-pv / wp-pvc  |   mysql-pv / mysql-pvc 실행하여 바운드 확인

 

 

② mysql.yaml >> mysql-service.yaml 실행

 

 

③ wp.yaml >> wp-service.yaml 실행

 

 

④ NodePort 로 접속

 

 

 

⑤ wordpress 정상 작동

 

 

 

 

 

 

 

● 전체 삭제 + 전체 실행 [ 디렉터리 자체 실행 ]

>> 순서는 문제가 없다

kubectl delete -f .

 

kubectl apply -f wp_examples

 

 

 

 

 

▩ 만약 mysql-pv.yaml 에서 정책을 Delete 가 아닌 Retain 으로 변경하고 전체 삭제 >> 전체 생성을 진행한다면,

 

>> :32681 접속시 삭제 전 만들었던 :31244 포트를 불러오면서 접근이 불가능해진다

 

 

 

● mysql-pv.yaml 에 있는 Path 를 참조하여 mysql 파드가 있는 node에 접속하여 확인해본다

 

○ mysql-pv 디렉터리 자체를 날려버린다

[ 접근은 권한이 없어서 불가.. ]

 

>> 이제는 포트가 그대로 유지된다

>> 하지만 mysql-pv.yaml 실행시 생성되었던 위치가 삭제되어서 제대로 작동을 안한다

 

 

○ 삭제 후 다시 파일 실행하여 pv 를 생성하면 정상작동한다

'Kubernetes [ 쿠버네티스 ]' 카테고리의 다른 글

Minikube 설치  (0) 2024.03.13
Kubernetes - secret / configmap  (0) 2024.03.13
Kubernets - pv / pvc  (0) 2024.03.12
Kubernetes - nfs-volume  (0) 2024.03.12
Kubernetes emptyDir  (0) 2024.03.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함