안녕하세요 본아입니다.

오늘은 Cloud라는게 무엇인지, 무엇이 Cloud를 핫한 토픽으로 만들었는지 알아보도록 하겠습니다.

 

1.클라우드란?

클라우드란 다시 말해 클라우드 컴퓨팅을 말합니다. 인터넷에서 선불제 방식으로 제공되거나, 호스팅 되는 작업과 서비스를 일컫습니다.

 

과거에는 개인의 컴퓨터의 하드디스크에 데이터를 저장하여 관리하였습니다. 기업들도 마찬가지입니다. 우리가 현재 부르고 있는 온프레미스(on premise) 서버들을 각 기업들은 구축하고, 서버 관리자들을 두고 서버를 관리하였습니다. 계속 잘 사용해 나가다가, CSP, 우리가 흔히 말하는 Cloud Service Provider가 생겨나기 시작합니다. 그 시작은 어디일까요?

바로 아마존입니다.

2. 클라우드의 대 시작, 아마존 웹 서비스(AWS)

AWS는 2006년 스토리지 서비스(S3)를 세상에 출시하게 됩니다. 첫 번째 클라우드 제품이지요. 해당 서비스를 시작으로 서버 임대 및 호스팅 서비스인 EC2를 발표하게 됩니다.

 

3. 클라우드를 왜 사용할까?

 

클라우드를 도대체 왜 사용할까요?

대기업, 중견기업, 중소기업, 스타트업.. 소프트웨어 회사들은 빠르게 증가하고 있고, 그에 따라 다양한 서비스들도 빠르게 출시되고 있습니다. 우선 소규모 기업부터 생각해보겠습니다.

 

소프트웨어 회사들의 서비스는 서비스를 런칭하기 위해서는 돌아갈 서버가 필요합니다. 하지만, 서버 비용은 생각보다 많이 비싸 초기 투자 비용으로 생각하기엔 쉽지 않습니다. 클라우드는 이러한 스타트업, 작은 기업에게 서비스를 쉽게 런칭할 수 있는 기회를 제공해줍니다. 

 

대기업은 클라우드를 왜 사용할까요? 빠른 주기의 개발, 빠른 배포, 그리고 관리의 측면이 있게 됩니다. 우선, 클라우드의 IaaS, PaaS, SaaS 상품중 PaaS이상으로만 가도 관리 인력은 크게 줄어들게 됩니다. 클라우드 업체에서 해당 서버들을 관리해주기 때문이죠. 그에 상응하는 서버 사용비용, PaaS 제품 사용비용이 들어가긴 하지만, 해당 서버를 구매하는 비용, 서비스 존속 기간, 인력비용 등을 감안하였을때, 클라우드로 넘어가더라도 충분히 메리트가 있죠.

 

또한, 정부의 Digital Transformation에 투자하는 모습 또한, 대기업의 입장에서 클라우드 전환은 시도해볼 만한 가치가 있는 사업이라고 생각됩니다.

 

그 외에도 클라우드를 사용하게 되면 많은 이점이 있게되는데요, 관련된 wiki 링크를 첨부하도록 하겠습니다.

https://ko.wikipedia.org/wiki/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C_%EC%BB%B4%ED%93%A8%ED%8C%85

 

클라우드 컴퓨팅 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 클라우드 컴퓨팅(영어: cloud computing)은 사용자의 직접적인 활발한 관리 없이 특히, 데이터 스토리지(클라우드 스토리지)와 컴퓨팅 파워와 같은 컴퓨터 시스템

ko.wikipedia.org

우리의 삶에 조금씩 가까이 다가오고있는 클라우드. 이제는 맥주 상표명만이 아닌, 클라우드의 세상에 살고 있는 여러분 입니다. Azure, AWS, GCP 글로벌 3대장 CSP뿐 아니라, 네이버, KT, NHN 클라우드가 대한민국의 공공산업에 뛰어 들고 있습니다.

 

앞으로는 Azure를 중심으로 포스팅을 하여 어떤 서비스들이 있는지 살펴보고, Azure Portal, 스크립트, 네트워크, 보안, 스토리지, IaaS, DB, Kubernetes.. 등 다양한 서비스들에 대해 소개하고, 배포도 해보고, 테스트도 해보는 블로그로 찾아뵙겠습니다.

안녕하세요 보나에요 :)

 

오늘은 kubeadm을 사용하여 k8s를 구축해볼거에요!!

 

azure, gcp, aws 등에서는 자체적으로 k8s를 간편하게 설치할 수 있지만, 우리는 한번 직접!

 

리눅스 인스턴스를 사용하여 k8s cluster를 구축해볼거에요.

 

참고로 azure, gcp, azure에서 제공해주는 k8s-cluster는 아주 간편하고 쉽게 구축할 수 있지만,

 

가격이.. 어마무시하게 측정된다는 단점이 있습니다.

 

하지만, 서버만 사용하여 자체 구축하면 비용이 감축되는 장점도 있구요,,

 

우리는 또한!! 서버를 살 돈이 어딨어요 ㅠㅠ 비싸비싸

 

그래서 아직 한번도 사용을 안해보았다면!! 각 플랫폼은 무료 평가판을 쓸 수 있도록 해줍니다.

 

그래서 저도!! gcp 300불 무료평가판을 통해 구축해볼거에요~

 

서버를 구축하는 것은 이 링크를 참고하세요~

 

1. k8s 구축용 서버 체크.

준비서버 : master 서버1, worker용 서버 2 (ubuntu 18.04)

  • Master 서버 - 4 CPU and 16GB RAM
  • Worker1 서버 - 2 CPU and 4GB RAM
  • Worker2 서버 - 2 CPU and 4GB RAM

ip 정보  # 전에는 잘 되었던것 같은데, 외부IP로도,, 현재 다시 해보니 내부 IP로 설정해야함..

  • master 서버용 ip - 104.197.89.71
  • worker 서버용 ip - 35.239.5.160
  • worker 서버용 ip - 35.188.32.107 

 

 

2. ubuntu apt 패키지 업데이트, 업그레이드 하기.

# root로 변환시키기
sudo -i 

apt update -y && apt upgrade -y

 

3. Disable Swap 메모리

kubelet이 제대로 작동하기 위해서는 SWAP메모리를 비활성시키는게 필수적이라고 할 수 있다. master, worker노드 모두 disable 시킨다.

sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
swapoff -a

4. kubelet, kubeadm, kubectl 설치

레파지토리 추가

 

apt-get update && apt-get install -y 
apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | tee /etc/apt/sources.list.d/kubernetes.list

 

 

설치

 

apt update
apt -y install vim git curl wget kubelet kubeadm kubectl

 

standby 모드로 대기시키기

apt-mark hold kubelet kubeadm kubectl

5. Configure Firewall

modprobe overlay
modprobe br_netfilter

 

traffic check

vi /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
sysctl --system

6. Docker 설치

apt update
apt install -y curl gnupg2
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt update
apt install -y containerd.io docker-ce

Create Directories and Configurations

mkdir -p /etc/systemd/system/docker.service.d

vi /etc/docker/daemon.json

{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
				"max-size": "100m" },
"storage-driver": "overlay2"
}

Docker 재시작

 

systemctl daemon-reload
systemctl restart docker
systemctl enable docker

7. 마스터노드 생성

lsmod | grep br_netfilter

 

Kubelet 시작

systemctl enable kubelet
kubeadm config images pull

8. Create Cluster

kubeadm init \
--pod-network-cidr=10.0.0.0/16 \
--control-plane-endpoint=master
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

Calico 설치

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml


Worker노드 추가

kubeadm join master:6443 --token bf6w4x.t6l461giuzqazuy2 --discovery-token-ca-cert-hash sha256:8d0b3721ad93a24bb0bb518a15ea657d8b9b0876a76c353c445371692b7d064e

 

https://putty.softonic.kr/

 

PuTTY

완전하고 안정적인 텔넷 및 SSH 클라이언트

putty.softonic.kr

putty를 활용하여 윈도우에서 리눅스로 파일을 보낼 수 있다.

 

putty를 다운로드 후, putty가 있는 디렉토리로 이동해주자.

putty의 exe파일을 실행할 수 있따..

 

1. window 에서 linux로 파일 전송할 때

pscp.exe <LocalFilePath> <user>@<RemoteHost>:<RemoteDirectory>

2. linux에서 window로 파일 전송할 때

pscp.exe root@<RemoteHost>:<RemoteDirectory>/* C:\

 

 

도움이 되길..

'OS > Linux' 카테고리의 다른 글

centos7에 python 가상환경 설치하기  (0) 2020.05.03
linux(centos7) 명령어 모음  (0) 2020.04.30
centos7에서 python2, python3 모두 사용하기  (0) 2020.02.09
2020_0123  (0) 2020.01.23

1. helm의 repository에 bitnami를 추가한다.

helm repo add bitnami https://charts.bitnami.com/bitnami

helm search를 통해 추가된 것을 확인

helm search

kafka가 보인다.

 

2. kafka를 담을 namespace 생성

 

kubectl create ns kafka
helm install --name bonah bitnami/kafka --namespace kafka

kafka와 zookeeper 서버 설치 완료!

 

간단한 producer, consumer 사용해보기

 

# producer

kubectl run bonah-kafka-client --restart='Never' --image docker.io/bitnami/kafka:2.6.0-debian-10-r0 --namespace kafka --command -- sleep infinity

kubectl exec --tty -i bonah-kafka-client --namespace kafka -- bash

 

kafka-console-producer.sh \
--broker-list bonah-kafka-0.bonah-kafka-headless.kafka.svc.cluster.local:9092 \
--topic test

 

kafka-console-consumer.sh \
--bootstrap-server bonah-kafka.kafka.svc.cluster.local:9092 \
--topic test \
--from-beginning

1. curl 명령어로 get_helm.sh 받아옴

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh

2. chmod로 execute 할 수 있는 권한 주기 및 실행

chmod 700 get_helm.sh
./get_helm.sh

3. service account인 tiller 생성

kubectl -n kube-system create sa tiller

4. tiller로 초기화? 흠..

helm init --service-account tiller --upgrade

 

ps. 권한문제 발생시, 다음형식의 yaml파일 생성 (ex: tiller-clusterrolebinding.yaml)

vi tiller-clusterrolebinding.yaml

작성

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-clusterrolebinding
subjects:
- kind: ServiceAccount
  name: tiller
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: ""

 

kubectl create -f tiller-clusterrolebinding.yaml
helm init --service-account tiller --upgrade

이러면 성공할꺼임..

+ Recent posts