본문 바로가기

Devops/Kubernetes

(9)
[Kubernetes] 쿠버네티스 Dashboard 설치하기 쿠버네티스 공식 홈페이지 yml로 서비스 설치를 수행한다. root@master:~# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml namespace/kubernetes-dashboard unchanged serviceaccount/kubernetes-dashboard unchanged service/kubernetes-dashboard created secret/kubernetes-dashboard-certs created secret/kubernetes-dashboard-csrf configured Warning: resource secrets/kuberne..
[Kubernetes] jenkins Kubernetes 에 설치 및 배포하기 jenkins 를 kunernetes cluster 내부에 설치하고 pod 배포가 되도록 설정을 해본다. Kubernetes 상에서 Jenkins 설치하기 젠킨스 설치를 위한 yaml은 아래 git 에서 기본적으로 제공하고 있다. 아래 내용을 다운로드 받는다. git clone https://github.com/scriptcamp/kubernetes-jenkins namespace 를 아래와 같이 생성한다. kubectl create namespace devops-tools serviceAccount.yaml 실행 --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: jenkins-admin rules: - apiGr..
[Kubernetes] ingress 설정 Ingress 클러스터 외부에서 내부로 접근 요청을 어떻게 처리할 지 정의해 둔 규칙 L7 어플리케이션 수준의 접근 요청 처리 방법 제공 URL 제공, 트래픽 로드밸런스, SSL 인증처리, 도메인 기반 가상 호스팅 등 HAProxy, Envoy, Kong 같은 소프트웨어 프록시 등 3rd-party 소프트웨어 제공사에 의해서 제공되기도 함. 인그레스 : 접근 규칙(Rule)이 정의된 자원 인그레스 컨트롤러 : 인그레스 접근 규칙을 기반으로 제어 현재 공식적으로 제공하는 인그레스 컨트롤러 ingress-gce : Google Compute Engine용 ingress-nginx : nginx 웹 서비스로 들어오는 요청을 처리 Ingress 생성 전 Sample Backend Service 생성 Ingres..
[Kubernetes] apt-get 시 public key is not available: NO_PUBKEY 에러 수정 간만에 쿠버네티스 노드를 재 구축하려고 apt-get을 하니 아래와 같이 에러가 발생을 하였다. root@master:/etc/apt# sudo apt-get update Hit:2 http://kr.archive.ubuntu.com/ubuntu bionic InRelease Hit:3 http://security.ubuntu.com/ubuntu bionic-security InRelease Hit:4 http://kr.archive.ubuntu.com/ubuntu bionic-updates InRelease Hit:5 http://kr.archive.ubuntu.com/ubuntu bionic-backports InRelease Get:1 https://packages.cloud.google.com/a..
[Kubernetes] 쿠버네티스 Service 개념 - ClusterIP, NodePort 서비스(Service) 가 필요한 이유 파드는 일회성이다. 노드에서 파드가 제거되면 새로운 파드가 생성되거나, 클러스터의 노드에 장애가 발생되면 다른 노드로 이동된다. 쿠버네티스의 파드는 노드에 스케쥴된 후 시작하기 전에 IP 주소를 할당하기 때문에 미리 파드의 IP 주소를 알기 어렵다. Scale-out(HPA) 는 여러 파드가 같은 서비스를 제공하는 것을 의미하는데 각 파드는 개별 IP 주소를 가지게 된다. 클라이언트는 서비스를 제공하는 파드의 수와 IP를 신경 쓸 필요가 없어야 한다. -> 서비스 (Service)를 사용하면 파드가 클러스터 안 어디에 있던 고정 IP 주소 (Endpoint IP Address)를 통해서 접근할 수 있다. CluserIP 기본 서비스 타입으로 클러스터 내부에서 사용이..
[Kubernetes] Controller - Replicaset 레플리카셋(Replicaset)의 3가지 구성 요소 label selector 레플리카셋에 의해 관리될 파드를 선택할 레이블 정의 .spec.template.labels의 필드와 spec.selector.matchLabels가 같아야 한다. 레이블을 기준으로 파드가 관리되므로 실행 중인 파드를 중단하거나 재시작하지 않고 레플리케이션 컨트롤러가 관리하는 파드 변경 가능 replicas 유지할 파드의 수 기본 값은 1 pod template 레플리카셋이 실행할 파드의 정의 레플리카셋에 의해서 실행할 파드의 컨테이너 이미지, 포트, 이름등의 구체적 명세 레플리카셋 yml 예제 (rs-nginx.yaml) apiVersion: apps/v1 kind: ReplicaSet metadata: name: rs-ngi..
[Kubernetes] 네임스페이스(Namespace) 살펴보기 네임스페이스 동일한 물리 클러스트를 기반으로 하는 논리적으로 구분된 가상 클러스터를 네임스페이스라고 한다. 여러개의 팀이나 많은 사용자가 있는 경우, 클러스터안에서 여러개의 어플리케이션을 실행해야 하는 경우 사용 root@master:~# kubectl get namespace NAME STATUS AGE default Active 10d kube-node-lease Active 10d kube-public Active 10d kube-system Active 10d root@master:~# kubectl get deploy No resources found in default namespace. root@master:~# kubectl get deploy -n kube-system NAME READY..
[Kubernetes] 쿠버네티스 Architecture와 기본 동작 Kubernetes Clustering Architecture 1. 로컬에서 이미지를 생성해서 Push를 수행한다. 2. Push된 이미지가 Docker Hub에 업로드 된다. 3. 4. kubectl 명령어를 실행해 Kubernets API 서버로 REST HTTP 요청을 전달하고 클러스터에 새로운 레플리케이션 컨트롤러 오브젝트 생성 5. 레플리케이션 컨트롤러는 새 파드를 생성하고 스케쥴러(Scheduler)가 워커 노드 중 하나에 스케쥴링 6. 해당 워커 노드의 Kubelet은 파드가 스케쥴링 된 것을 확인 7. 이미지가 로컬에 없기 때문에 Docker에게 레지스트리에서 특정 이미지를 Pull 하도록 지시 8. 이미지 다운 후 Docker는 컨테이너를 생성하고 실행 Master Node의 Schedu..