Index
Docker
Docker 개념
Docker Install
Docker Command
Docker Example
Image 만들기
Dockerfile
Docker Compose
Image 저장소
Container Orchestration
Container Orchestration 이란
kubernetes(1)
kubernetes(2)
kubernetes install
kubernetes ui
kubernetes를 이용해 배포해보기
kubectl CLI
Provisioning
Provisioning이란
Ansible
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 없이 접속이 가능하도록 작업
ROOT 로그인을 허용하도록 설정을 수정합니다. ansible-master
, ansible-node1
, ansible-node2
에서 작업
1 2 PermitRootLogin yes PasswordAuthentication yes
ansible-manager 에서 SSH키 생성을 합니다. password 는 별도로 작성하지 않습니다.
생성한 key를 ansible-master, ansible-node1, ansible-node2 에 복사해줍니다.
ssh 접속이 되는지 확인합니다
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 실행
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
master 에서 cluster 확인하기
참고
https://zerobig-k8s.tistory.com/31 https://github.com/zer0big/ansible-k8s-cluster