Kubernetes on Cloud Private Hands-on Guide (Multi Node)

 

 

  • IBM Cloud private 설치 가이드

본문에서는 IBM Cloud private CE(Community Edition)을 설치해 보겠습니다. IBM Cloud private과 관련된 내용은 ‘Kubernetes On Cloud Private’ 포스팅을 참조해 주시기 바랍니다.

 

  • IBM Cloud private 설치시 필요 하드웨어 스팩

 

  • 멀티노드로 IBM Cloud private 구성하기

IBM Cloud private의 아키텍쳐를 확인하시게 되면 기본적으로 3개의 노드(Master Node(Boot Node와 같이 사용 가능), Proxy Node, Worker Node)가 필요합니다. 본문에서는 3개의 VM을 생성해 클러스터를 구성하고 SSH를 이용해 노드간 통신 설정 후 쿠버네티스를 운영하겠습니다. 추가적으로 1개의 VM을 생성해 worker node로써 추가하는 과정을 진행하겠습니다.
아래의 절차를 따라해 주세요.

 

  • Bluemix Infra VM 생성

본문에서는 IBM Cloud private 을 설치하기 위해 Bluemix Infra(구. Softlayer) 자원을 사용합니다.
가상 서버 생성을 위해서는 디벨로퍼 웍스의 ‘IBM Cloud 가상서버 생성 및 관리하기’ (URL: https://ibm.biz/BdiN6Y )포스팅을 참조해 주시기 바랍니다.
또, 모듈 패키지 설치에서 도커 설치까지 싱글 노드와 중복되는 과정은 금번 과정에서 생략하며 이전에 포스팅한 ‘Kubernetes 기반의 IBM Cloud private 설치하기-싱글 노드’를 참조해 주시기 바랍니다.

 

Step1. IBM Bluemix Infrastructure 사용자 포탈을 통해 아래 정보를 가진 3개의 VM(가상머신)을 생성했습니다. 금번 핸즈온에서는 우분투 16.04 LTS 버전으로 실습하겠습니다.

  • Datacenter: Seoul(SEO01)
  • Hostname: pcmaster, pcproxy, pcworker
  • Public IP: 169.56.126.16(master), 169.56.126.2(proxy), 169.56.126.23(worker1), 169.56.126.22(worker2)
  • OS: Ubuntu Linux 16.04 LTS Xenial Xerus Minimal Install (64 bit)
  • CPU: 1 x 2.0 GHz Core
  • RAM: 1 GB
  • Disk(Local): 25GB
  • Network Port Speed: 100 Mbps Public & Private Network Uplinks

 

Step2. 마스터 노드(Public IP: )에 접속한 뒤 ssh key를 생성합니다.

root@pcmaster:~# ssh-keygen -b 4096 -t rsa -f ~/.ssh/master.id_rsa -N “”

Generating public/private rsa key pair.

Your identification has been saved in /root/.ssh/master.id_rsa.

Your public key has been saved in /root/.ssh/master.id_rsa.pub.

The key fingerprint is:

SHA256:WXir1LO6ZyajYwLaiwsxVqqLAO+PVRSj9cLXIoZN5ng root@pcmaster.t.com

The key’s randomart image is:

+—[RSA 4096]—-+

|      *          |

|     @ + o       |

|   .+ E = +      |

|  o  + + * .     |

|+o    . S +      |

|++.  . . . o     |

|+o…   . .      |

|=+.o. o o.+      |

|=.+o.o.ooB       |

+—-[SHA256]—–+

 

Step3. 생성한 ssh키의 퍼블릭 키를 /root/.ssh/폴더의 authorized_key 폴더에 넣어줍니다. 해당 작업을 진행함으로써 마스터 노드가 쿠버네티스를 실행할때 자체적으로 ssh를 통한 인증 과정을 무사히 통과할 수 있습니다. (아니면 싱글노드에 구성하셨듯이 자체 VM의 접속 password를 config.yaml 파일에 정의해 주어야 합니다.)

root@pcmaster:~# cat ~/.ssh/master.id_rsa.pub | sudo tee -a /root/.ssh/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCtT9oUp4SI65S712zFkC2SFtA4nm3PT6xVd6/jDL/24bsfzvy62b3F5J/i3uTfQ06CoRt1CX4orkWPlGiMW7cwm3C+cpr/gVVSAWAr+am7U1jhJTJpoN4/NpMvLQZBTIAz2J3LI1X7axlzj7BXGZwQRGpA0vEyMwRmpWijMAvwvEXzmmRW3yE5/VxjekwXUmcri7sq4I1exS4yxAvpn50zwiDp5pslq7HtcZkxSdIu+zernV0H+54LR4K+k4Ib1eZPK7oE0bJMJD6ZLo/EwPpJOougXTncEyCmglzNKDQITYJiK1RRoF7MTPnWSnICkadNsM/qnZz1ssIJnIliTLtIUSOh6dN818dISR6sJBrcfG8bOPur4KiCPwFIFq5aPnCHDpQsS+uAKIBjr1OwUHrUGPe/cfDg/7Ch2Lj2Kq+e8gUvVDedWDw6HsCcVbEXKpK4j7eRW2nbENaPR97PKT6sSq7aKsmAB1Y6CfjPPMnyuxTYMGsr5pqZQvRSZe1NSP+3yG9Ai/Z2AZkyra6SS+qysoGfWCONsf15fpGiKs5R4Vlzli0ZW+/SVWf11xNuWh/TMxhTneMaT06+dvQdbnYigeT9VlGVRWbYCXwdSqusfitvoyRd70N7cOsCWMQkf+pXcvaCdrNNfeGT7fsx9+nC53oX7Pfnc5zO2AydFM1e6w== root@pcmaster.t.com

 

Step4. 마스터 노드에서 생성한 ssh키를 클러스터링으로 묶을 proxy node와 worker node에 넣어주는 작업을 진행합니다. 먼저 대상 VM에 /root/.ssh 폴더가 있는지 확인합니다. 없으면 해당 디렉토리를 생성합니다.

root@pcmaster:~# ssh -t root@169.56.126.2 sudo mkdir -p /root/.ssh

The authenticity of host ‘169.56.126.2 (169.56.126.2)’ can’t be established.

ECDSA key fingerprint is SHA256:pJ2zmvP8XXmlLFBDaGVQzkqa48Paia4q7V1R9YL+Yxk.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘169.56.126.2’ (ECDSA) to the list of known hosts.

Password:

Connection to 169.56.126.2 closed.

 

Step5. 마스터 노드의 퍼블릭 키가 담긴 파일(master.id_rsa.pub)을 대상 VM의 /.ssh/폴더에 복사합니다.

root@pcmaster:~# scp ~/.ssh/master.id_rsa.pub root@169.56.126.2:~/.ssh/master.id_rsa.pub

Password:

master.id_rsa.pub                             100%  745     0.7KB/s   00:00

 

Step6. 퍼블릭 키 파일의 내용을 authorized_keys에 복사해 붙여넣습니다. Authorized_keys 파일에 퍼블릭키가 등록이 되어야 마스터 노드의 프라이빗 키를 통해 패스워드 인증 없이 통신할 수 있습니다. 또 root 로그인이 가능하도록 허용해줍니다.

root@pcmaster:~# ssh -t root@169.56.126.2 ‘cat ~/.ssh/master.id_rsa.pub | sudo tee -a /root/.ssh/authorized_keys ;

> echo “PermitRootLogin yes” | sudo tee -a /etc/ssh/sshd_config’

Password:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCtT9oUp4SI65S712zFkC2SFtA4nm3PT6xVd6/jDL/24bsfzvy62b3F5J/i3uTfQ06CoRt1CX4orkWPlGiMW7cwm3C+cpr/gVVSAWAr+am7U1jhJTJpoN4/NpMvLQZBTIAz2J3LI1X7axlzj7BXGZwQRGpA0vEyMwRmpWijMAvwvEXzmmRW3yE5/VxjekwXUmcri7sq4I1exS4yxAvpn50zwiDp5pslq7HtcZkxSdIu+zernV0H+54LR4K+k4Ib1eZPK7oE0bJMJD6ZLo/EwPpJOougXTncEyCmglzNKDQITYJiK1RRoF7MTPnWSnICkadNsM/qnZz1ssIJnIliTLtIUSOh6dN818dISR6sJBrcfG8bOPur4KiCPwFIFq5aPnCHDpQsS+uAKIBjr1OwUHrUGPe/cfDg/7Ch2Lj2Kq+e8gUvVDedWDw6HsCcVbEXKpK4j7eRW2nbENaPR97PKT6sSq7aKsmAB1Y6CfjPPMnyuxTYMGsr5pqZQvRSZe1NSP+3yG9Ai/Z2AZkyra6SS+qysoGfWCONsf15fpGiKs5R4Vlzli0ZW+/SVWf11xNuWh/TMxhTneMaT06+dvQdbnYigeT9VlGVRWbYCXwdSqusfitvoyRd70N7cOsCWMQkf+pXcvaCdrNNfeGT7fsx9+nC53oX7Pfnc5zO2AydFM1e6w== root@pcmaster.t.com

PermitRootLogin yes

Connection to 169.56.126.2 closed.

 

Step7. 대상 VM의 ssh 키를 스캔해서 known_hosts 파일에 등록함으로써 통신 설정을 완료합니다.

root@pcmaster:~# ssh-keyscan 169.56.126.2 | sudo tee -a /root/.ssh/known_hosts

# 169.56.126.2:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.2

# 169.56.126.2:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.2

# 169.56.126.2:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.2

169.56.126.2 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBN1YMmEXITkCmF+Bsca024r8kjQMkaGn9dAPi/rsp3i1irtXHHpN1+VBAK5yJ5ff6CWangYQGxIp+Ot6x8FGchw=

169.56.126.2 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqVnxamazmmtlX7tgsADd43jNEQtUre84jT16kC9hPFTz4UaDIpzhc9g4qurEG2V1XCXGa9CzeCJ+QjDGpNep68Crk+2CJmAKZsr6MuKUX1DI8YC3R1h+GR/D4mhuEMBdP/7/Q578uri8GrYd2WR152DOSGbEgpzZbp9pN5VR12Ay2l0ZaONXmENh2VUmDudMza2QhJWgHjZjO8FzcngvnoIAqjPe3zUQ+p2kuXjotEWTcgQq6H7OFyaUlaGbcPJEm1vVMO0x2v/nxwUhjx+bbYLbFkVoCiTAtdqh2syG87YL9JdprWHk4oa1uVEYw3DrMWvSzHdQD/2KVVIU0QE4V

169.56.126.2 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID1C2Ov+1HfmipGmGhgexVXTl6ty4v0rY/Ad2oeMqe/u

 

Step8. Step4~Step7까지의 과정을 클러스터링을 구성할 worker 노드를 구성할 VM(pcproxy, pcworker node)에 반복해 작업합니다.

 

Step9. IBM Cloud private 이미지를 가져오고 설치합니다.

root@pcmaster:~# sudo docker pull ibmcom/cfc-installer:1.2.0

1.2.0: Pulling from ibmcom/cfc-installer

 

root@pcmaster:~# sudo docker run -e LICENSE=accept –rm -v “$(pwd)”:/data ibmcom/cfc-installer:1.2.0 cp -r cluster /data

 

Step10. Cluster 폴더가 설치된 것을 확인하고 해당 폴더로 이동해 hosts 파일을 오픈합니다.

root@pcmaster:~/cluster# vi hosts

 

Step11. 수정된 노드 정보를 바탕으로 쿠버네티스를 실행합니다. 실행이 완료되면 CLI 하단에 IBM Cloud private 관리 콘솔 접속 정보가 나타나게 됩니다. 설치한 cluster 폴더 내에서 실행해야 합니다.

[master]

169.56.126.16

 

[worker]

169.56.126.23

 

[proxy]

169.56.126.2

 

Step12. 마지막으로 IBM Cloud private를 설치하면 생성되는 ssh_key폴더에 생성한 ssh키의 프라이빗 키를 넣어줍니다. 이를 통해서 마스터 노드가 각 노드(proxy node, worker node)들과 ssh 통신이 가능해집니다.

root@pcmaster:~/cluster# sudo cp ~/.ssh/master.id_rsa ~/cluster/ssh_key

 

Step13. 싱글노드와 달리 config.yaml 에 VM의 패스워드를 넣지 않더라도 쿠버네티스가 동작하는 것을 확인합니다.
설치가 완료 된 후 아래 명령어를 통해 Certi 를 업데이트 합니다. 기존의 버전에서 업데이트 되었으므로, 미 업데이트 시 콘솔 접속이 안될 수 있습니다.

root@pcmaster:~/cluster#wget https://www.ibm.com/developerworks/community/files/form/anonymous/api/library/08eb2105-21e6-479b-8c5d-76a39e55c16a/document/3c1c3da4-ac5b-4c86-a495-2f6cba166734/media/update-cert.sh && bash update-cert.sh

 

Step14. 관리 콘솔에 접속하면 대시보드에서 총 연결된 노드 수(3개)를 확인할 수 있습니다.

 

Step15. 클러스터에 worker 노드를 추가해 보겠습니다. 추가할 대상 정보는 아래와 같이 이전처럼 ssh 를 작업해주고 아래 명령어를 넣으면 됩니다.

root@pcmaster:~/cluster# docker run -e LICENSE=accept –net=host \

> –rm -v “$(pwd)”:/installer/cluster \

> ibmcom/cfc-installer:1.2.0 install -l \

> 169.56.126.22

 

복수개의 노드를 추가할 경우 아래와 같은 형식으로 추가할 수 있습니다.

root@pcmaster:~/cluster# docker run -e LICENSE=accept –net=host \

> –rm -v “$(pwd)”:/installer/cluster \

> ibmcom/cfc-installer:1.2.0 install -l \

> 169.56.126.22, A, B, C, D………

 

Step16. 추가된 노드를 대시보드에서 확인 가능

 

  • 참고 URL

개요: https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/W1559b1be149d_43b0_881e_9783f38faaff

아키텍쳐: https://www.ibm.com/support/knowledgecenter/SSBS6K_1.2.0/getting_started/architecture.html?view=kc#concept_d1n_rxq_pw

슬랙 초대: https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/W1559b1be149d_43b0_881e_9783f38faaff/page/Slack%20channel%20%28IBM%20Cloud%20technology%29%20sign%20up%20page

 

[설치]

필요 하드웨어 사양: https://www.ibm.com/support/knowledgecenter/SSBS6K_1.2.0/supported_system_config/system_reqs.html

사전 필요 설치: https://www.ibm.com/support/knowledgecenter/SSBS6K_1.2.0/installing/prep_cluster.html

SSH key 공유 및 ssh_key 폴더에 복사: https://www.ibm.com/support/knowledgecenter/SSBS6K_1.2.0/installing/ssh_keys.html

Docker 설치: https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html

IBM Cloud private ce 설치 및 실행: https://www.ibm.com/support/knowledgecenter/SSBS6K_1.2.0/installing/install_containers_CE.html

실행: https://www.ibm.com/support/knowledgecenter/SSBS6K_1.2.0/installing/install_containers_CE.html

 

[튜토리얼]

https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/W1559b1be149d_43b0_881e_9783f38faaff/page/Tutorials

 

[kubectl cli 다운로드]

https://kubernetes.io/docs/tasks/tools/install-kubectl/

 

[git client 설치:우분투]

https://git-scm.com/book/ko/v1/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EC%84%A4%EC%B9%98

토론 참가

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.