on
Provisioning - 3. Ansible을 이용해 kubernetes cluster 생성하기
Provisioning - 3. Ansible을 이용해 kubernetes cluster 생성하기
2020-02-28
Index
목표
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 방식으로 대상 서버에는 별도의 셋팅이 필요하지 않습니다.
yum install -y eple-release yum install -y ansible
2.2 Password 없이 접속이 가능하도록 작업
ROOT 로그인을 허용하도록 설정을 수정합니다. ansible-master , ansible-node1 , ansible-node2 에서 작업
vi /etc/ssh/sshd_config
PermitRootLogin yes PasswordAuthentication yes
systemctl restart sshd
ansible-manager 에서 SSH키 생성을 합니다. password 는 별도로 작성하지 않습니다.
ssh-keygen
생성한 key를 ansible-master, ansible-node1, ansible-node2 에 복사해줍니다.
ssh-copy-id [serverIP]
ssh 접속이 되는지 확인합니다
ssh [server_host_name]
2.1 Inventory를 작성하여 Ping Test
다음과 같이 host파일을 생성합니다.
master ansible_host=10.128.0.40 ansible_user=root [nodes] node1 ansible_host=10.128.0.42 ansible_user=root node2 ansible_host=10.128.0.43 ansible_user=root
ping 명령어를 통해 연결상태를 확인합니다.
ansible -m ping all -i hosts
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 실행
./build-cluster.sh
3.4 결과
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 확인하기
참고
from http://thinkub.tistory.com/29 by ccl(A) rewrite - 2021-08-08 23:00:45