Accordion Install Ⅰ
Accordion 2.0 install – v2.11(single)
이 문서는 Accordion v2.11 master node 1대, worker node 2대로 구성하여 설치하는 방법을 설명합니다.
| 구분 | OS | CPU | Memory | Disk |
|---|---|---|---|---|
| Master | CentOS: 미지원 RHEL: RHEL 8.4이상, RHEL 9 Rocky: RockyLinux 8.4이상, RockyLinux 9 Ubuntu: Ubuntu 22.04 이상, Ubuntu 24.04 이상 OracleLinux: OracleLinux 8.4 이상, OracleLinux 9 (UEK 커널 미지원, RHCK 커널 지원) | 최소 8Core | 최소 16GB | 최소 300GB |
| Worker | CentOS: 미지원 Rocky: RockyLinux 8.4이상, RockyLinux 9 Ubuntu: Ubuntu 22.04 이상, Ubuntu 24.04 이상 OracleLinux: OracleLinux 8.4 이상, OracleLinux 9 (UEK 커널 미지원, RHCK 커널 지원) | 최소 8Core | 최소 16GB | 최소 100GB |
1. 시스템 요구사항
- Accordion 설치를 위해 master node 서버 1대와 서비스를 수행할 worker node 1대 이상(2대 이상 권장) 이 있어야 합니다.
- master, worker node 서버 간에는 네트워크 통신이 가능해야 합니다
- 클러스터 구성을 위한 모든 서버는 시간이 동일해야 합니다.
2. 서버 별 시스템 요구 사항
3. 아코디언 사용 포트
외부에서 서비스를 접근해야 하는 경우 아래 Port들이 방화벽에 오픈되어 있어야 합니다.
해당 문서에서는 방화벽 서비스는 비활성화했습니다.
| 구분 | Port | 사용 용도 |
|---|---|---|
| admin | 30000 | Accordion Web Admin |
| registry | 30001 | User registry |
| thanos | 30002-30003 | thanos metric 수집 |
| app service | 80 / 443 | App service 용도 (http/https) |
4. Accordion Install
Step 1. 환경 구성
master node 1대와 worker node 2대를 준비 후 아래의 설정들을 적용합니다.
- 전체 노드에 hostname 설정 및 hosts 설정을 해줍니다.

- 전체 노드에서 swap을 비활성화 해줍니다.
* 쿠버네티스에서는 노드에 swap이 켜져 있으면 kubelet이 동작하지 않거나 경고를 발생시키기 때문에 설치 전에 swap을 비활성화 해야합니다.
$ swapoff -a
$ vi /etc/fstab (영구 비활성화를 위해 아래 swap 부분 주석처리)
#/dev/mapper/rhel-swap none swap defaults 0 0
- ssh Root 접근 허용
아코디언 설치는 Ansible 스크립트를 통해 이뤄집니다.
Ansible 스크립트 수행을 위해 각 노드에서 ssh로 root 로그인이 가능하도록 설정을 변경합니다.
$ vi /etc/ssh/sshd_config
…
PasswordAuthentication yes
PermitRootLogin yes
…
- ssh key 복사
master node 에서 ssh 키를 생성합니다. (master 포함)
* 클러스터 구성 서버 모두 등록할 때 까지 반복해야합니다.
해당 작업으로 다른 노드에 공개키를 등록하여 비밀번호 없이 SSH 접속이 가능해집니다.
$ ssh-keygen
$ ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.82.101
$ ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.82.104
$ ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.82.105
이 후 ssh 키 설정이 올바르게 적용되었는지 확인합니다.
$ ssh 192.168.82.104 ## 해당 명령어로 비밀번호 입력 없이 ssh 접속이 가능하면 됩니다.
- selinux 비활성화
$ grubby –update-kernel ALL –args selinux=0 ## rhel 9에서 사용되며 커널레벨에서부터 비활성화 시킵니다.
Step 2. Accordion 설치 파일 확인
Accordion 설치에 앞서 아래와 같이 다운로드 한 파일이 손상되지 않았는지 확인하는 과정이 필요합니다.
해당 명령어를 이용하여 나온 값이 맨텍에서 제공해주는 체크섬과 같은 지 확인합니다.
$ md5sum accordion-installer-v2.11.1.tar.gz
8e48db8b7cf76000ca1e508d017d8c85 accordion-installer-v2.11.1.tar.gz
Step 3. Podman 설치
다운로드 받은 Accordion 설치 파일을 마스터 노드 서버에서 압축을 해제합니다.
$ tar zxvf accordion-installer-v2.11.1.tar.gz
압축 해제 후 운영체제에 맞는 Ansible 설치 스크립트를 실행합니다.
Redhat 계열 9버전 : $rpms/rpm_redhat9/7_podman/install.sh
Step 4. Ansible 인벤토리 설정
accordion-installer/hosts 파일에서 아래와 같이 표시 된 부분을 사용 환경에 맞게 수정합니다.
$ vi hosts
install-server ansible_host=127.0.0.1 ansible_connection=local node_role=infra
#########################################################################################
# host-cluster List
#########################################################################################
acc-host-master ansible_host=192.168.82.101 ansible_connection=ssh node_role=infra # master 서버의 IP Address
#acc-host-master2 ansible_host=192.168.82.102 ansible_connection=ssh node_role=infra
#acc-host-master3 ansible_host=192.168.82.103 ansible_connection=ssh node_role=infra
acc-host-node1 ansible_host=192.168.82.104 ansible_connection=ssh node_role=infra # worker 서버의 ip Address
acc-host-node2 ansible_host=192.168.82.105 ansible_connection=ssh node_role=infra # worker 서버의 ip Address
#########################################################################################
# member-cluster List
#########################################################################################
#acc-member-master ansible_host=10.140.1.2 ansible_connection=ssh node_role=infra
#acc-member-node1 ansible_host=10.140.1.3 ansible_connection=ssh node_role=infra
#acc-member-node2 ansible_host=10.140.1.4 ansible_connection=ssh node_role=infra
#acc-member-master2 ansible_host=10.140.1.5 ansible_connection=ssh node_role=infra
#acc-member-master3 ansible_host=10.140.1.6 ansible_connection=ssh node_role=infra
#########################################################################################
# Group List
#########################################################################################
[local]
install-server
#########################################################################################
# Manager Group
[host-master]
acc-host-master
[host-master-cluster]
#acc-host-master2
#acc-host-master3
[host-minions]
acc-host-node1
acc-host-node2
[host-infra]
[host-etcd]
#########################################################################################
# Member Group
[member-master]
#acc-member-master
[member-master-cluster]
#acc-member-master2
#acc-member-master3
[member-minions]
#acc-member-node1
#acc-member-node2
[member-infra]
[member-etcd]
#########################################################################################… 중략
Step 5. accordion-installer/group_vars/host.yml 설정
accordion-installer/group_vars/host.yml 파일을 열어 수집된 환경 변수를 수정합니다.
아래와 같이 표시 된 부분을 사용 환경에 맞게 수정합니다.
#- setup variable for cluster installation
########################################################
## Master configuation
########################################################
# cluster_name
cluster_name: "host-cluster"
# master isolation ( yes / no )
master_isolation: "no"
master_host_name: "acc-211-master01"
master_ip: 192.168.82.101
acc_interface: ens3
########################################################
# 3master mode( yes / no )
########################################################
master_mode: "no” # 싱글 구성이므로 no로 수정
master2_ip: 192.168.82.102
master3_ip: 192.168.82.103
master2_hostname: "acc-211-master02"
master3_hostname: "acc-211-master03"
# LB_mode ( L4 / haproxy )
LB_mode: "haproxy"
LB_port: 8443
LB_vip: 192.168.82.101 # 싱글 구성이므로 master node의 ip add 입력
# LB_domain_option ( yes / no )
LB_domain_option: "no"
LB_domain_address: "l4.domain.accordions.co.kr"
# Set it up if you want to add the master server later
# If master_mode is "no", it will not work.
# single_option( yes / no )
single_option: "no"
########################################################
## container_name (containerd & cri-o)
########################################################
container_option: "containerd"
# container_option (containerd)
selinux_enable: "no"
# container_option (cri-o)
pid_limit: "4096"
########################################################
# storage setting
########################################################
# storage_option ( nfs / ceph / local )
storage_option: "nfs"
# accordion_storage_path
accordion_storage_path: "/nfs/data2" # 사용하는 nfs 경로로 수정
# nfs_setup ( internal / external )
nfs_setup: "internal" # 별도의 nfs 서버를 두지 않고 master node를 이용
nfs_server_ip: 192.168.82.101 # master node의 ip add 입력
# nfs_version ( v3 / v4 / v4.1 / v4.2 )
nfs_version: "v3"
# ceph_option ( cephfs / rbd )
ceph_option: "cephfs"
#ceph health, ceph fsid, ceph auth get-key client.admin, ceph status
ceph_server_ip: "10.20.200.107"
ceph_server_port: "6789"
ceph_id: "admin"
ceph_key: "AQCKoqVh0eR5MxAAL4WziV7oyVsdtHC6Wz0RcQ=="
#ceph_id: "kubernetes"
#ceph_key: "AQBDpKVhFhPCIRAAf1xqSLgi558DIH+FvcCyMQ=="
ceph_fsid: "84ab6f51-d13e-4a83-9ccc-fd3b9228e728"
ceph_fsname: "cephfs"
#ceph_fsname: "cephrbd_pool"
basic_storageclass_name: "accordion-storage"
#######################################################
# sub storage setting
#######################################################
# user_storage_option ( yes / no )
user_storage_enabled: "no"
user_storageclass_name: "user-storage"
# storage_option ( nfs / local )
user_storage_option: "nfs"
# user_storage_path
user_storage_path: "/nfs/user"
# user_nfs_setup ( internal / external )
user_nfs_setup: "internal"
user_nfs_server_ip: 10.140.0.2
# user_nfs_version ( v3 / v4 / v4.1 / v4.2 )
user_nfs_version: "v3"
########################################################
# etcd external option
########################################################
etcd_external: "no"
########################################################
# base registry
########################################################
# accordion_registry_option ( local / external )
base_registry_option: "local"
base_registry_addr: 192.168.82.101 # master node의 ip add 입력
base_registry_port: 5000
base_registry_id: acc-registry
base_registry_passwd: accordionadmin
Step 6. accordion install
위 환경 구성이 다 되었다면 accordion-installer/container-start.sh를 실행하여 ansible 컨테이너를 실행합니다.
$ sh container-start.sh
컨테이내 내부 기본 경로는 /mantech이며 /mantech/accordion-installer로 이동하여 설치를 진행합니다.
아코디언 인스톨 전 사전 환경 체크를 위해 pre-check.sh 를 실행하여 fail이 없는지 확인 후 install을 진행합니다.
$ sh pre-check.sh
# pre-check.sh는 OS호환성, 마스터 노드 개수, 최소 메모리, 최소 커널, 호스트 이름을 검사합니다.
이제 아코디언 설치를 진행합니다.
$ sh install.sh
설치는 서버 및 네트워크 성능에 따라 차이가 크며 약 1시간 정도가 소요됩니다.
Step 7. accordion install error
아코디언을 설치하다보면 설치 환경에 따라 install 과정이 매끄러울 수도, 그렇지 않을 수도 있습니다.
설치가 실패한다면 실패 한 해당 TASK에서 어떤 문제가 발생했는지를 찾기 보다는 1,2회 정도는 전체 uninstall 후 재설치를 하는 것이 권장됩니다. (개인 사견)
네트워크 및 리소스 문제로 설치 과정 중 응답 확인 부분에서 태스크가 끊기는 경우가 아니라면, /tmp 밑의 ansible 로그를 확인하여 인스톨 중 어느 TASK에서 문제가 발생했는지를 확인하여 에러를 해결 후 재설치해줍니다.
설치가 어느정도 진행 된 상황에서 fail이 발생하여 fail이 뜬 TASK부터 install을 해주는 것도 가능 합니다만, 기본적으로 전체 uninstall 및 초기화 후 처음부터 install 하는 것이 권장됩니다.
$ ansible-playbook -i hosts all.yml –start-at-task=”Join nodes with manager-master”
# Join nodes with manager-master 라는 TASK부터 install을 다시 실행
Step 8. accordion uninstall
install 할 때와 마찬가지로 accordion-installer/container-start.sh를 실행하여 ansible 컨테이너를 실행합니다.
$ sh container-start.sh
컨테이너 내부 기본 경로는 /mantech이며 /mantech/accordion-installer로 이동하여 uninstall을 진행합니다.
$ sh uninstall.sh
uninstall 과정이 끝났다면 uninstall 후 아래 clean-up 명령어를 이용하여 완전히 초기화 합니다.
[clean-up]
$ rm -rfv /etc/kubernetes/*
# 쿠버네티스의 설정 파일들이 저장되는 경로입니다. 이전 설치의 설정이 남아 있으면 새로 설치 시 충돌이 발생하므로 삭제합니다.
$ rm -rfv /var/lib/etcd
# 쿠버네티스의 내장 etcd 데이버베이스의 실제 데이터 디렉토리입니다. 이전 클러스터 데이터가 남아 있으면 새로 설치 시 충돌이 발생하므로 삭제합니다.
$ rm -rfv /etc/cni/net.d
# CNI 네트워크 플러그인 설정 파일 경로입니다. 이전 설정이 남아 있으면 새로 설치 시 충돌이 발생하므로 삭제합니다.
$ sudo rm -rfv /var/lib/containers
$ sudo rm -rfv /var/lib/containerd
# 컨테이너 런타임의 내부 데이터 저장소입니다. 이미지, 컨테이너 캐시, 네임스페이스 등의 정보 등이 들어있으므로 초기화 시 깨끗한 상태로 런타임을 재구성하기 위해 삭제합니다.
$ rm -rfv /etc/containers/*
# containerd / crio / podman 등에서 사용하는 전역 설정 파일 경로입니다. 정책 파일(policy.json), 레지스트리 설정(registries.conf) 등이 들어 있으므로 설정 초기화를 위해 삭제합니다.
$ rm -rfv ~/.kube/*
# 현재 사용자(보통 root)의 쿠버네티스 클라이언트 설정파일입니다.
kubeconfig, cache 정보등이 들어있으며 인증 정보가 남아있으면 새로 설치 시 충돌이 발생하므로 삭제합니다.
$ rm -rfv /var/lib/kubelet/*
# kubelet이 관리하는 pod, volume, plugin, Secret 등의 로컬 캐시 등의 정보가 남아있으면 새 클러스터에서 충돌이 발생할 수 있으므로 삭제합니다.
<<Accordiaon Install Ⅱ>>에서 이어집니다!
자유롭게 댓글을 달아주세요! 언제나 환영합니다.
기타 문의: info@neoclova.co.kr
네오클로바 기술블로그 홈 바로가기: https://neoclova.net
네오클로바 홈페이지: http://neoclova.co.kr

<> 는 언제 업로드 되나요?