목록kubernetes (34)
클라우드 배우기

namespace : k8s API 중 하나클러스터 하나를 여러 개의 논리적인 단위로 나눠서 사용쿠버네티스 클러스터 하나를 여러 팀이나 사용자가 함게 공유용도에 따라 실행해야 하는 앱을 구분할 때 사용 kubectl create namespaccekubectl create deploy ui --image nginx --namespace green kubectl create namespace green --dry-run -o yaml > green-ns.yamlvi green-ns.yamlkubectl create -f green-ns.yaml namespace 관리 kubernetes 초기 설정 namespacesnamespace 설정을 하지 않는다면 default가 namespace 로 작동 # kub..

마스터 컴포넌트 (Master Component) 워커 노드 컴포넌트 (Worker Node Component) etcd : key value 타입의 저장소 worker node 들에 대한 상태 정보, docker container의 상태, kubernetes 상태 정보 포함 kubelet : 모든 노드에서 실행되는 k8s 에이전트, 데몬 형태로 동작, c Advisor 라는 컨테이너 포함(cAdvisor는 컨테이너 자원 모니터링) kube-apiserver : k8s API를 사용하도록 요청을 받고 요청이 유효한지 검사 kube-proxy : k8s network 동작을 관리, iptables rule을 구성 kube-scheduler : 파드를 실행한 노드 선택 컨테이너 런타임 : 컨테이너를 실행하는..

kubectl [command] [TYPE] [NAME] [flags]command = 자원에 실행할 명령 ex) create, get, delete, edit ...TYPE = 자원의 타임 ex) node, pod, service ...NAME = 자원의 이름flags = 부가적으로 설정할 옵션 ex) --help, -o options kubectl --help]kubectl command --helpkubectl run kubectl create -f obj.ymlkubectl apply -f obj.ymlkubectl get kubectl describe kubectl delete pod main - 시스템 5 계열의 command option-- bsd 계열의 명령 옵션 (명령어, 옵션을 좀..

kubernetes 사용 시, 자동 완성 기능을 쓸 수 있는 bash 사용 방법 1. https://kubernetes.io/docs/reference/kubectl/cheatsheet/ # source > ~/.bashrc 방법 2. # yum install -y bash-completion # kubectl completion bash > /etc/bash_completion.d/kubectl 하지만 나의 경우, 위의 명령어를 진행한 후, 자동 완성 기능을 사용했을 때 하기와 같은 오류가 떠 추가적인 설정을 함. # vi ~/.bashrc 하기 두 줄 추가 후 reboot 재부팅 후, kubectl get all --all-namespaces 를 타이핑 하려면 1번과 같이 입력하면 됨. tab을 타이..

생성 NameSpace 생성 vi name.yml --- apiVersion: v1 kind: Namespace metadata: name: n1 --- apiVersion: v1 kind: Namespace metadata: name: n1 kubectl apply -f name.yml POD 생성 kubectl run test-http --image httpd --port 80 --namespace n1 kubectl get pods Service 외부 노출 kubectl expose pod test-http --type=NodePort kubectl get service -o wide -n n1 30935 포트를 사용하는 것을 확인할 수 있음 인터넷창 각 IP 주소에 :30935 를 붙이면 하기와 ..

Helm Kubernetes chart(Package) 관리 시스템 설치 참고 : https://helm.sh/ko/docs/intro/install/ 설치 curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh helm repo add stable https://charts.helm.sh/stable : helm 공식 리포지토리 추가 helm search repo : 리포지토리 chart 확인 helm repo update : 리포지토리 업데이트 helm list : helm으로 설치된 chart 확인 git 미설치 시, 하기와..

Pod 통신 CNI(Container Network Interface*) 이용 - Weave *CNI: 컨테이너 기반 오케스트레이션 시스템에서 컨테이너 네트워크를 관리하고 설정하기 위한 표준 인터페이스 yum install -y traceroute ip address vi alpine.yml node1과 node2에 각각 al1과 al2를 생성 apiVersion: v1 kind: Pod metadata: name: al1 spec: containers: - name: alpine1 image: alpine imagePullPolicy: IfNotPresent command: ["/bin/sh", "-c", "while true; do sleep 1000; done"] nodeName: node1 ---..

AutoScaling을 사용하기 위해 자원 측정이 필수이기 때문에 HPA 설치 예정 (HPA의 필수 요소인 Metrics Server도 설치) HPA (Horizontal Pod Autoscaling) 워크로드 Resource를 자동으로 업데이트하며 워크로드 크기를 수요에 맞게 자동으로 스케일링 부하량이 줄어든 후, 파드의 수가 최소 설정값 이상일 때 HorizontalPodAutoscaler는 워크로드 Resource 에게 Scale 다운 지시 크기 조절이 불가능한 Object에는 적용 불가 쿠버네티스 API Resource 또는 Controller 형태로 구현 HPA API 자원은 Controller의 행동을 결정 쿠버네티스 Control Plane 내 실행되는 HPA 컨트롤러는 평균 CPU 사용률,..

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..