1. 요구 사항 : 서로 다른 가상 네트워크 상의 가상머신 간 통신  

동일한 가상 네트워크 내 통신은 별도의 연결 작업이 필요없지만 서로 다른 가상 네트워크 통신시 별도의 연결 작업 (피어링) 이 필요함.  

  Subnet  VM
vnet1 10.0.0.0/16 10.0.0.4/24
vnet2 172.16.0.0/16 172.16.0.4/24

 

2. 세부 방법

 

 2.1. 가상 네트워크 검색  → 기존에 만들었던 vnet1 필터링 

 

 2.2. 설정  → 피어링  

 

 2.3. 추가

 

 2.4. 원격 가상 네트워크 이름 : vnet2-vnet1 → 가상 네트워크는 vnet2 선택  → 액세스 및 트래픽 허용 체크 

 

2.5. 로컬 가상 네트워크 이름 : vnet1-vnet2 → 액세스 및 트래픽 허용 체크    추가  

  

 

1. 실습 의도

 1.1. WordPress 애플리케이션 실행 (가정 : 노드 PC 3대 연결되어 있는 상태, DB Pod 실행 중)

   1.1.1. Deployment를 통해 WordPress 애플리케이션을 실행하는 두 개의 Pod를 생성

   1.1.2. 각 Pod는 동일한 WordPress 컨테이너를 실행하며, 데이터베이스(192.168.166.141)와 연동

 1.2. 서비스화

   1.2.1. svc-word라는 NodePort 타입의 Service를 생성하여 클러스터 외부에서 WordPress 애플리케이션에 접근

   1.2.2. 외부 클라이언트는 클러스터 노드 IP와 포트(32000번)를 사용하여 WordPress 애플리케이션에 요청 가능

 1.3. 고가용성과 부하 분산

   1.3.1. Deployment를 통해 동일한 Pod 2개를 유지, 한 Pod에 문제가 생기더라도 다른 Pod가 트래픽을 처리

   1.3.2. Service는 트래픽을 두 Pod로 균등하게 분산

 

2. 세부 방법

  2.1. .yml 파일 생성 : vi word.yml

  2.2. 코드 입력

apiVersion: apps/v1
kind: Deployment
metadata:
  name: dep-word
  labels:
    app: word
spec:
  selector:
    matchLabels:
      rep: word
  replicas: 2
  template:
    metadata:
      name: dep-word
      labels:
        rep: word
    spec:
      containers:
      - name: wordpress
        image: wordpress
        imagePullPolicy: Never
        env:
        - name: WORDPRESS_DB_HOST
          value: 192.168.166.141
        - name: WORDPRESS_DB_NAME
          value: wordpress
        - name: WORDPRESS_DB_USER
          value: root
        - name: WORDPRESS_DB_PASSWORD
          value: It12345!
        ports:
        - containerPort: 80

---

apiVersion: v1
kind: Service
metadata:
  name: svc-word
  labels:
    run: word
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    nodePort: 32000
    protocol: TCP
  selector: 
    rep: word

 

  2.3. 실행 : kubectl apply -f word.yml

  2.4. 확인 : watch -n 2 kubectl get pods,replicaset,deploy,svc -o wide --show-labels

1. 개요 

Kubernetes 환경에서 WordPress와 MySQL을 동일한 Pod 내에서 실행하도록 설정합니다. 주로 간단한 테스트 환경에서 WordPress 애플리케이션과 데이터베이스를 하나의 Pod에 배포하는 데 사용됩니다. 

 

2. 세부 방법

 2.1. 디렉토리 만들기 : mkdir /word

 2.2. 디렉토리 이동 : cd /word

 2.3. .yml 파일 생성 : vi wordsql.yml

 2.5. 코드 입력

apiVersion: v1
kind: Pod
metadata:
  name: word-sql
  labels:
    app: word
spec:
  containers:
  - name: word
    image: wordpress:5.8
    imagePullPolicy: Never
    env:
    - name: WORDPRESS_DB_HOST
      value: word-sql
    - name: WORDPRESS_DB_USER
      value: root
    - name: WORDPRESS_DB_PASSWORD
      value: It12345!
    - name: WORDPRESS_DB_NAME
      value: wordpress
    ports:
    - containerPort: 80

  - name: sql
    image: mysql
    imagePullPolicy: Never
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: It12345!
    - name: MYSQL_DATABASE
      value: wordpress
    - name: MYSQL_ROOT_HOST
      value: '%'
    ports:
    - containerPort: 3306

 

 2.6. .yml 파일 실행 : kubectl apply -f wordsql.yml

 2.7. 테스트 

  step1) IP 확인 : kubectl get pods,replicaset,deploy,svc -o wide

    * 세션 복제해서 실시간 확인하면 용이함

  step2) 정상 작동 확인 : lynx [pod ip 주소]

    * lynx 명령어 사용불가시 설치 : yum install -y lynx

 

 2.8. 클러스터 외부 노출 

  step1) Service  YML 파일 만들기 : vi wordsvc.yml

  step2) 코드 입력

apiVersion: v1
kind: Service
metadata:
  name: svc-word
  labels:
    svc: word
spec:
  type: NodePort
  ports:
  - port: 8000
    targetPort: 80
    nodePort: 30000
    protocol: TCP
  selector:
    app: word

   

  step3) 실행 : kubectl apply -f wordsvc.yml

  step4) 확인 

+ Recent posts