Provisioning - 3. Ansible을 이용해 kubernetes cluster 생성하기

2020-02-28

Index


  1. Docker
    1. Docker 개념
    2. Docker Install
    3. Docker Command
    4. Docker Example
    5. Image 만들기
    6. Dockerfile
    7. Docker Compose
    8. Image 저장소

  1. Container Orchestration
    1. Container Orchestration 이란
    2. kubernetes(1)
    3. kubernetes(2)
    4. kubernetes install
    5. kubernetes ui
    6. kubernetes를 이용해 배포해보기
    7. kubectl CLI

  1. Provisioning
    1. Provisioning이란
    2. Ansible
    3. Ansible을 이용해 kubernetes cluster 생성하기

목표

Ansible을 이용해서 k8s cluster을 생성해보겠습니다.
cluster를 생성하는 방법은 Container Orchestration - 4. kubernetes Install에 작성 한 것과 같이 master 1대와 node 2대를 셋팅해 보겠습니다.
기존에 공유드린 것과 같이 master / node 클러스터 구성시 방화벽작업을 하고 docker를 설치하고 k8s 관련 install 작업을 했습니다. 이러한 작업을 ansible playbook 을 이용해 한번에 처리해보도록 하겠습니다.

1. 구성

host name 역할
ansible-manager Ansible 제어 노드 및 작업자용 노드
ansible-master k8s Master
ansible-node1 k8s Node
ansible-node2 k9s Node

2. Ansible 설치

2.1 ansible-manager 에 Ansible 설치

ansible-manager 에 Ansible을 설치하겠습니다. Ansible 이 다른 IaC보다 편한점이 Pull 방식이 아닌 Push 방식으로 대상 서버에는 별도의 셋팅이 필요하지 않습니다.

1
2
yum install -y eple-release
yum install -y ansible

2.2 Password 없이 접속이 가능하도록 작업

2.1 Inventory를 작성하여 Ping Test

3. Ansible을 이용해 k8s 클러스터 구성해보기

3.1 setup.yml 작성

master nodes 에 공통으로 설정할 내용과 k8s 설치용 playbook 파일을 작성합니다.
https://raw.githubusercontent.com/thinkub/ansible-k8s-cluster/master/setup.yml

3.2 playbook 실행 shell script 작성

작성한 playbook 용 yaml 파일을 실행할 shell script 를 작성합니다.
https://raw.githubusercontent.com/thinkub/ansible-k8s-cluster/master/build-cluster.sh

3.3 실행

1
./build-cluster.sh

3.4 결과

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

TASK [add Kubernetes YUM repository] ***************************************************************************
changed: [master]
changed: [node1]
changed: [node2]

TASK [install kubelet] ******************************************************************************************
changed: [master]
changed: [node1]
changed: [node2]

TASK [install kubeadm] ******************************************************************************************
changed: [master]
changed: [node1]
changed: [node2]

TASK [start kubelet] ********************************************************************************************
changed: [master]
changed: [node1]
changed: [node2]

TASK [install kubectl] ******************************************************************************************
ok: [master]
ok: [node1]
ok: [node2]

PLAY [master] ***************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************
ok: [master]

TASK [initialize the cluster] ***********************************************************************************
changed: [master]

TASK [create .kube directory] ***********************************************************************************
changed: [master]

TASK [copy admin.conf to user kube config] ********************************************************************
changed: [master]

TASK [install Pod network] **************************************************************************************
changed: [master]

PLAY [master] ***************************************************************************************************

TASK [get join command] *****************************************************************************************
changed: [master]

TASK [set join command] *****************************************************************************************
ok: [master]

PLAY [nodes] ****************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************
ok: [node1]
ok: [node2]

TASK [join cluster] *********************************************************************************************
changed: [node1]
changed: [node2]

PLAY RECAP ******************************************************************************************************
master : ok=21 changed=16 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
node1 : ok=16 changed=12 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
node2 : ok=16 changed=12 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0

참고

https://zerobig-k8s.tistory.com/31
https://github.com/zer0big/ansible-k8s-cluster