목록전체 글 (206)
클라우드 엔지니어 꿈나무
Ingress Cluster 외부에서 내부 서비스로 접근하는 HTTP, HTTPS 를 관리하는 API 오브젝트 LoadBalancer, SSL 인증, 도메인(Named) 기반의 가상 호스팅 제공 기존에는 하나의 웹서버에서 처리하지만 ingress를 통해서 분리하여 성능을 향상시킴 단일 Pod 노출의 경우에는 kubectl expose와 유사한 효과를 내지만 복잡한 경우에는 더 많은 기능 제공 Ingress controller 종류 GCE용(Google Container Engine) = ingress-gce NGINX용 : ingress-nginx master vi ingress.yml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: tes..
Container가 종료되면 그 안에 저장된 데이터도 함께 소멸. 즉, Container 문제가 생길 경우, Container 재시작 또는, 재생성하면 되지만 그 안에 데이터 보존이 어려움. -> Volume 추상화로 상기의 문제 해결 PV(Persistent Volume)와 PVC(Persistent Volume Claim) PVC 애플리케이션에서 지속적인 스토리지를 사용하거나 데이터를 공유하는 데 용이하며, 클러스터 관리자는 스토리지 리소스를 효율적으로 관리 가능 POD의 상관없이 PV 지정 및 사용 가능하며 운영 방식에 따라 자유롭게 사용 PVC 사용자가 Volume에 요정하는 방식을 정의하며 POD와 PV 간의 의존성을 낮춤 실습 pv와 pvc를 이용하여 nginx와 httpd로 pod 생성 mk..
metallb 설치법 참고 https://metallb.universe.tf/ installation 및 configuration 부분 Kubernetes 내 LoadBalance 적용을 위하여 metallb 설치 metallb 사용을 위하여 Address Resolution Protocol 부분을 true로 적용 kubectl get configmap kube-proxy -n kube-system -o yaml | sed -e "s/strictARP: false/strictARP: true/" | \ yaml 파일 저장을 위하여 kubectl apply -f 가 아닌 wget 으로 다운로드 wget https://raw.githubusercontent.com/metallb/metallb/v0.13.11..
hostpath 설정 1. 파일 및 디렉토리 mount + nginx 설치 vi hostpod.yml : nignx 설치와 pod 내 test 디렉토리 및 babo.txt 파일 생성 pod명 : hostvol-nginx vi hostpod.yml apiVersion: v1 apiVersion: v1 kind: Pod metadata: name: hostvol-nginx labels: env: prod spec: containers: - name: n1 image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80 volumeMounts: - mountPath: /test name: kang-vol - mountPath: /test/babo.t..
Label resource를 그룹화 하기 위해서 주로 사용 resource에 부착되는 키-값 쌍의 metadata로 키 값은 고유한 값이어야 함 사용자가 객체를 생성할 때 그 객체를 구분하기 위하여 임의로 원하는 값을 지정하여 사용 Selector와 함께 사용 Selector Pod 스펙, 서비스 정의와 같은 오브젝트에서 레이블 셀렉터를 사용하여 특정 레이블을 가진 리소스 선택 가능 Label로 태그된 Pod의 부분 집합을 택하여 원하는 작업 수행 kubectl run nginx-1 --image nginx --port 80 --labels="env=prod" : 라벨이름이 env=prod인 nginx 실행 (pod 이름 : nginx-1 이미지 : nginx, port :80 개방) kubectl ge..
구성도 master vi. sh #! /bin/bash yum install -y rdate rdate -s time.bora.net # selinux off setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux # firewall off & disable systemctl stop firewalld systemctl disable firewalld # Masteer # firewall-cmd --add-port={80,443,6443,2379,2380,10250,10251,10252,30000-32767}/tcp --permanent # Node # firewall-cmd --add-port={80,443,..
Empty Dir 임시 volume 으로 생명주기가 pod와 동일 동일 pod 내, 여러 개의 Container가 존재한다면 Empty Dir 공유 가능 pod가 있는 node 안에 volume의 name으로 존재 vi emptydp.yml apiVersion: apps/v1 kind: Deployment metadata: name: host-dep labels: env: prod spec: replicas: 2 selector: matchLabels: host: anginx template: metadata: name: temp-anginx labels: host: anginx spec: containers: - name: n1 image: nginx imagePullPolicy: Never ports..
vi mysql.yml apiVersion: v1 kind: Pod metadata: name: mysql labels: app: mysql spec: containers: - name: m1 image: mysql:5.6 imagePullPolicy: IfNotPresent env: - name: MYSQL_ROOT_PASSWORD value: It12345! - name: MYSQL_DATABASE value: wordpress - name: MYSQL_ROOT_HOST value: "%" ports: - containerPort: 3306 nodeName: node3 kubectl apply -f mysql.yml kubectl get pods -o wide vi wordpress.yml apiVe..
vi index.html K8S-CPTEST-WEBSERVER nginx 로 pod 생성 kubectl run app-nginx --image nginx --port 80 kubedctl get pods -o wide kubectl cp index.html app-nginx:/usr/share/nginx/html/index.html lynx 10.42.0.1 http 로 pod 생성 kubectl run app-http --image httpd --port 80 kubectl get pods -o wide kubectl cp index.html app-ninx:/usr/local/apache2/htdocs/html/index.html lynx 10.32.0.2
Kubernetes 단일 Pods 내 다수 Container는 권장하지 않음 yum install -y haproxy yum install -y http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm vi /etc/yum.repos.d/mysql-community.repo vi myword.yml --- apiVersion: v1 kind: Pod metadata: name: word-sql labels: env: prod spec: containers: - name: wordpress image: wordpress:5.6 imagePullPolicy: IfNotPresent env: - name: WORDPRESS_DB_HOST val..