Data Engineering

[Kubernetes] Kubernetes 다운로드 및 환경설정

snoony 2024. 6. 10. 17:39

쿠버네티스 다운로드

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
  && chmod +x minikube
[rocky@localhost ~]$ sudo mkdir -p /usr/local/bin/
[rocky@localhost ~]$ sudo install minikube /usr/local/bin/

Docker를 가상머신으로 사용하기 전에 버츄얼머신 세팅을 바꿔줘야 한다.

Memory는 4 GB 이상, CPU 는 2개 이상으로 설정해준다.

docker-compose.yml

version: "3"

service:
	wordpress:
		image: wordpress:5.9.1-php8.1-apache
		environment:
			WORDPRESS_DB_HOST: mysql
			WORDPRESS_DB_NAME: wordpress
			WORDPRESS_DB_USER: root
			WORDPRESS_DB_PASSWORD: password
		ports:
		- "3000:80"
	mysql:
		image: mariadb:10.7
		environment:
			MYSQL_DATABASE: wordpress
			MYSQL_ROOT_PASSWORD: password

echo-pod.yml

apiVersion: v1
kind: Pod  # Pod ReplicaSet Deployment Service ...
metadata:  # name,label로 구성
  name: echo-lp
  labels:
    app: echo
spec:   # 리소스 종류마다 다름
  containers:
  - name: app
    image: ghcr.io/subicura/echo:vi
    livenessProbe:
        httpGet:
          path: /not/exist
          port: 8080
        initialDelaySeconds: 5
        timeoutSeconds: 2
        periodSeconds: 5
        failureThreshold: 1

echo-pod2.yml

apiVersion: v1
kind: Pod  # Pod ReplicaSet Deployment Service ...
metadata:  # name,label로 구성
  name: echo-rp
  labels:
    app: echo
spec:   # 리소스 종류마다 다름
  containers:
  - name: app
    image: ghcr.io/subicura/echo:vi
    readinessProbe:
        httpGet:
          path: /not/exist
          port: 8080
        initialDelaySeconds: 5
        timeoutSeconds: 2
        periodSeconds: 5
        failureThreshold: 1

echo-pod3.yml

apiVersion: v1
kind: Pod  # Pod ReplicaSet Deployment Service ...
metadata:  # name,label로 구성
  name: echo-health
  labels:
    app: ehco
spec:   # 리소스 종류마다 다름
  containers:
  - name: app
    image: ghcr.io/subicura/echo:vi
    livenessProbe:
        httpGet:
          path: /
          port: 3000
    readinessProbe:
    	httpGet:
    		path: /
    		port : 3000

multi-pod.yml

apiVersion: v1
kind: Pod  # Pod ReplicaSet Deployment Service ...
metadata:  # name,label로 구성
  name: counter
  labels:
    app: counter
spec:   # 리소스 종류마다 다름
  containers:
  	- name: app
    	  image: ghcr.io/subicura/counter:latest
        env:
    		- name: REDIS_HOST
              value: "localhost"
   	- name: db
        image: redis

echo-pod_mysql.yml

apiVersion: v1
kind: Pod  # Pod ReplicaSet Deployment Service ...
metadata:  # name,label로 구성
  name: mysql
  labels:
    app: mongo
spec:   # 리소스 종류마다 다름
  containers:
  - name: mysql
    image: mysql:latest
    env:
    	- name: MYSQL_ROOT_PASSWORD
    	  value: password
[rocky@localhost kube1]$ kubectl apply -f echo-pod_mysql.yml

replicatset1.yml

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: rs
  labels:
    app: rs
spec:
  replicas: 1   # 파드의 개수
  selector:
    matchLabels:
      app: echo
      tier: app
  template:
    metadata:
      labels:
        app: echo
        tier: app
    spec:
      containers:
        - name: echo
          image: ghcr.io/subicura/echo:v1