Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/

Pod 생성 후 동작 # 파드 실행 kubectl run myweb --image=nginx 현재 세팅 중인 디폴트 Namespace에 생긴다. kubectl delete pod myweb yaml 파일로 실행 한땀한땀 커맨드 넣기는 명령형은 힘들다. 그냥 yaml로 만들어 버리자. k run myweb --image nginx --dry-run -o yaml --dry-run 옵션은 실제로 만드는게 아니라 리허설 옵션 실행되지 않고 yaml 파일만 생성한다. 없는 내용은 디폴트값으로 만들어진다. apiVersion은 적합한 것으로 맞춰지게 생성된다. # yaml 파일에 출력 결과 저장 k run myweb --image nginx --dry-run -o yaml > myweb.yaml #yaml 파일로..

Kubectl 기본 명령어 마스터 노드에 설치한, 쿠버네티스의 클라이언트인 kubectl의 기본 명령어들을 살펴보자. #node 확인 kubectl get nodes kubectl get nodes -o wide #추가적인 정보도 확인 kubectl get pod 현재 네임 스페이스에 파드를 출력하지만 파드가 없다. kubectl get pod -A 모든 네임스페이스의 파드를 출력 #특정 네임스페이스의 파트 출력 kubectl get pod -n kubectl-calico 사용하기 # kubectl-calico 명령어 사용을 위한 세팅 curl -L https://github.com/projectcalico/calico/releases/latest/download/calicoctl-linux-amd64 ..

쿠버네티스 네임스페이스 네임스페이스는 쿠버네티스에서 용도에 따라서 리소스를 논리적으로 구분하기 위해 사용하는 오브젝트이다. 리눅스의 네임스페이스와 같은 이름이기 때문에 동일한 것으로 생각할 수 있지만, 완전히 다른 것이다. 단순히 파드를 그룹화하여 관리하기 위해 사용하는 것으로 이해하면 쉽다. 리눅스의 네임스페이스는 컨테이너의 격리 공간을 만들기 위해 리눅스 커널의 자체 기능을 활용한다. 일반적으로는 네트워크와 마운트, 프로세스 네임스페이스 등을 의미한다. 리눅스 네임스페이스 프로세스를 실행할 때 시스템의 리소스를 분리해서 실행할 수 있도록 도와주는 기능. 리눅스는 기본적으로 하나의 시스템의 프로세스들은 리소스를 공유하여 실행한다. 예를 들어 자식 프로세스는 부모 프로세스의 네임스페이스에 속하므로 자원을..

** 아래의 게시글을 참조해서 설치하였습니다. ** https://lewis-kku.tistory.com/112 Kubernetes | Kubespray 설치 방법 Kubespray 이번엔 kubeadm이 아닌 Kubespray를 설치해본다. kubeadm은 수동으로 모듈을 하나씩 설치하지만 kubespray는 Ansible 기반의 배포툴로 매우 간단하다. https://kubernetes.io/ko/docs/setup/production-environment/tool lewis-kku.tistory.com KubeSpary Kubespray는 Ansible을 통해 쿠버네티스 클러스터를 유연하고 쉽게 배포 및 관리하기 위한 강력한 오픈 소스 툴이다. Kubespray는 Ansible 플레이북, 인벤토리,..

Kubeadm으로 쿠버네티스 직접 설치하기 Kubeadm은 직접 서버와 네트워크 인프라를 구축하여 그 위에 쿠버네티스를 설치한다. VM에 직접 설치하는 표준 방법이지만, 버전에 따른 정확한 절차를 따라야 하기 때문에 어렵다. 또한 자동화가 불가능하기 때문에 관리가 힘들다. 하나하나 따라가며 설치해 보자. Vagrantfile로 VM 올리기 일단 Vagrant와 Virtual box의 설치가 필요하다. [Window] Vagrant 설치 및 활용 (synced_folder, Docker) SCRIPT에 ssh 보안 관련 설정이 등장한다. /etc/ssh/sshd_config sed -i "s/^PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ss..

쿠버네티스란? 쿠버네티스(Kubernetes)는 쿠버네티스는 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화하는 컨테이너 오케스트레이션 플랫폼이다. MSA 발전과 함께 성장한 쿠버네티스 과거에 서버 관리를 코드로 하는 툴들이 먼저 등장했다. 여기에 서버 자원들을 논리적인 나누어 효율적으로 사용하는 가상화 기술들이 도입되기 시작한다. 이러한 가상화 자원들은 여전히 많이 사용되지만, 가상화가 가진 한계(오버헤드)로 프로비저닝과 서비스 속도가 떨어진다. 그래서 등장한 것이 컨테이너로, 컨테이너들은 각각이 커널을 가지지 않기 때문에 가볍고 프로비저닝과 서비스 속도에서 우수하다. 하지만 점점 증가하는 컨테이너 개수를 모두 관리하는 것은 쉽지 않은 일이다. 예를 들어 트래픽 부하로 새로운 도커 컨테이너를 실행시켜..

IaC(Infrastructure as Code)를 위해 사용할 수 있는 Vagrant에 대해 정리하고 실습해 보자. 코드형 인프라(Infrastructure as Code, IaC)는 수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝하는 것을 말합니다. IaC를 사용하면 인프라 사양을 담은 구성 파일이 생성되므로 구성을 편집하고 배포하기가 더 쉬워집니다. 또한 IaC는 매번 동일한 환경을 프로비저닝하도록 보장합니다. IaC는 구성 사양을 코드화하고 문서화함으로써 구성 관리를 지원하며, 따라서 구성 변경 사항을 문서화하지 않고 임시로 변경하는 일을 막을 수 있습니다. - Red Hat 코드형 인프라(IaC)란? - Vagrant Vagrant는 소프트웨어 개발 프로세스를 단순화하고 표준화하는..

Docker 3 Tier 환경 모두 같은 bridge에 위치시켜 서로 간의 통신은 가능하게 하고, Web server만 포트를 외부로 노출시키자. 같은 브릿지 내에서는 container의 이름으로 IP가 매칭되므로 세부 ip 세팅은 신경 쓰지 말자. Web server 컨테이너 Httpd image를 사용할 것이다. Httpd는 apache server의 image이지만, 세팅 방식이 상당히 다르다. docker run -itd --name web -p 8080:80 --network my_network httpd --netowork : 자신이 새로 생성한 network bridge의 이름을 넣어주자. #컨테이너 접속 docker exec -it httpd /bin/bash #접속 후 편집기 설치 apt..

Wordpress와 Mysql을 사용하여 2 Teir 환경을 컨테이너에서 세팅해 보자. Wordpress와 Mysql은 같은 bridge와 연결하여 통신이 가능하게 하고, 다른 컨테이너와 분리한다. 외부로 노출되는 port는 Wordpress에 새로운 Bridge를 연결하여 Host pc에서 접속이 가능하게 한다. 이때 접속을 위해 사용하는 것이 Docker0에 연결하는 DNS container이다. Wordpress 와 MySQL 연동 Mysql 설치 docker run -d --name mysql --network my_network -v mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=wordpress -e MYSQL_DATABASE=wordpress -e MYSQL_..

Docker image 파일을 다양한 방법으로 백업해 보자. 1. Docker Hub에 public한 백업 2. VM의 저장소에 SCP로 백업(private) 3. Docker Registry container에 private한 백업 image들을 백업하는 방식도 있지만, -v 옵션으로 특정 경로의 데이터만 마운트 시켜서 저장하는 방식도 백업에 일종으로 볼 수 있다. 컨테이너는 외부에 데이터를 저장하고 컨테이너는 그 자체로 동작하는 stateless 설계가 매우 바람직하다. 따라서 전체 Image가 아닌 데이터만 따로 백업하는 방식이 효율적일 수 있다. 어떤 상황에서 어떤 전략이 최선일지 판단하기 위해 서로 간의 차이를 명확히 알아두는 것이 중요하다. 1. Docker Hub에 public한 백업 이전 ..