티스토리 뷰

1. kubespray를 활용한 간단한 클러스터 자동화 설치

1) kubespray 설치

- Vagrant 등을 활용해서 보다 쉽게 할 수 있지만, 실제 업무에서 활용되는 kubespray, ansible등을 활용하여 설치를 진행하겠습니다. 

sjw1995628/kubespray: Deploy a Production Ready Kubernetes Cluster

 

GitHub - sjw1995628/kubespray: Deploy a Production Ready Kubernetes Cluster

Deploy a Production Ready Kubernetes Cluster. Contribute to sjw1995628/kubespray development by creating an account on GitHub.

github.com

 

git clone https://github.com/sjw1995628/kubespray.git

- kubespray/inventory/mycluster/hosts.yml에 우리가 구성할 클러스터 정보가 담겨있다. 해당 정보를 확인한다. (아이디나 비밀번호는 본인 알아서 수정)

all:
  hosts:
    localhost:
      ansible_connection: local
    ubun20-01:
      ansible_host: 172.17.29.61
      ansible_user: jwson
      ip: 172.17.29.61
      access_ip: 172.17.29.61
      ansible_become: true
      ansible_become_pass: <pw>
    ubun20-02:
      ansible_host: 172.17.29.62
      ansible_user: jwson
      ip: 172.17.29.62
      access_ip: 172.17.29.62
      ansible_become: true
      ansible_become_pass:  <pw>
    ubun20-03:
      ansible_host: 172.17.29.63
      ansible_user: jwson
      ip: 172.17.29.63
      access_ip: 172.17.29.63
      ansible_become: true
      ansible_become_pass:  <pw>
  children:
    kube_control_plane:
      hosts:
        ubun20-01:
        ubun20-02:
        ubun20-03:
    kube_node:
      hosts:
        ubun20-01:
        ubun20-02:
        ubun20-03:
    etcd:
      hosts:
        ubun20-01:
          ansible_host: 172.17.29.61
        ubun20-02:
          ansible_host: 172.17.29.62
        ubun20-03:
          ansible_host: 172.17.29.63
    k8s_cluster:
      children:
        kube_control_plane:
        kube_node:
        calico_rr:
    calico_rr:
      hosts: {}

- 필요한 업데이트 및 파이썬 설치

jwson@ubun20-01:~$ sudo apt update -y
jwson@ubun20-01:~$ sudo apt install -y python3-pip
jwson@ubun20-01:~$ pip3 --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
jwson@ubun20-01:~$ cd kubespray/
jwson@ubun20-01:~/kubespray$ sudo pip3 install -r requirements.txt

ERROR: Could not find a version that satisfies the requirement ansible==9.13.0 (from -r requirements.txt (line 1)) (from versions: 1.0, 1.1, 1.2, 1.2.1, 1.2.2, 1.2.3, 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.4, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.4.5, 1.5, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.6, 1.6.1, 1.6.2, 1.6.3, 1.6.4, 1.6.5, 1.6.6, 1.6.7, 1.6.8, 1.6.9, 1.6.10, 1.7, 1.7.1, 1.7.2, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.9.0.1, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.9.5, 1.9.6, 2.0.0.0, 2.0.0.1, 2.0.0.2, 2.0.1.0, 2.0.2.0, 2.1.0.0, 2.1.1.0, 2.1.2.0, 2.1.3.0, 2.1.4.0, 2.1.5.0, 2.1.6.0, 2.2.0.0, 2.2.1.0, 2.2.2.0, 2.2.3.0, 2.3.0.0, 2.3.1.0, 2.3.2.0, 2.3.3.0, 2.4.0.0, 2.4.1.0, 2.4.2.0, 2.4.3.0, 2.4.4.0, 2.4.5.0, 2.4.6.0, 2.5.0a1, 2.5.0b1, 2.5.0b2, 2.5.0rc1, 2.5.0rc2, 2.5.0rc3, 2.5.0, 2.5.1, 2.5.2, 2.5.3, 2.5.4, 2.5.5, 2.5.6, 2.5.7, 2.5.8, 2.5.9, 2.5.10, 2.5.11, 2.5.12, 2.5.13, 2.5.14, 2.5.15, 2.6.0a1, 2.6.0a2, 2.6.0rc1, 2.6.0rc2, 2.6.0rc3, 2.6.0rc4, 2.6.0rc5, 2.6.0, 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.6.6, 2.6.7, 2.6.8, 2.6.9, 2.6.10, 2.6.11, 2.6.12, 2.6.13, 2.6.14, 2.6.15, 2.6.16, 2.6.17, 2.6.18, 2.6.19, 2.6.20, 2.7.0.dev0, 2.7.0a1, 2.7.0b1, 2.7.0rc1, 2.7.0rc2, 2.7.0rc3, 2.7.0rc4, 2.7.0, 2.7.1, 2.7.2, 2.7.3, 2.7.4, 2.7.5, 2.7.6, 2.7.7, 2.7.8, 2.7.9, 2.7.10, 2.7.11, 2.7.12, 2.7.13, 2.7.14, 2.7.15, 2.7.16, 2.7.17, 2.7.18, 2.8.0a1, 2.8.0b1, 2.8.0rc1, 2.8.0rc2, 2.8.0rc3, 2.8.0, 2.8.1, 2.8.2, 2.8.3, 2.8.4, 2.8.5, 2.8.6, 2.8.7, 2.8.8, 2.8.9, 2.8.10, 2.8.11, 2.8.12, 2.8.13, 2.8.14, 2.8.15, 2.8.16rc1, 2.8.16, 2.8.17rc1, 2.8.17, 2.8.18rc1, 2.8.18, 2.8.19rc1, 2.8.19, 2.8.20rc1, 2.8.20, 2.9.0b1, 2.9.0rc1, 2.9.0rc2, 2.9.0rc3, 2.9.0rc4, 2.9.0rc5, 2.9.0, 2.9.1, 2.9.2, 2.9.3, 2.9.4, 2.9.5, 2.9.6, 2.9.7, 2.9.8, 2.9.9, 2.9.10, 2.9.11, 2.9.12, 2.9.13, 2.9.14rc1, 2.9.14, 2.9.15rc1, 2.9.15, 2.9.16rc1, 2.9.16, 2.9.17rc1, 2.9.17, 2.9.18rc1, 2.9.18, 2.9.19rc1, 2.9.19, 2.9.20rc1, 2.9.20, 2.9.21rc1, 2.9.21, 2.9.22rc1, 2.9.22, 2.9.23rc1, 2.9.23, 2.9.24rc1, 2.9.24, 2.9.25rc1, 2.9.25, 2.9.26rc1, 2.9.26, 2.9.27rc1, 2.9.27, 2.10.0a1, 2.10.0a2, 2.10.0a3, 2.10.0a4, 2.10.0a5, 2.10.0a6, 2.10.0a7, 2.10.0a8, 2.10.0a9, 2.10.0b1, 2.10.0b2, 2.10.0rc1, 2.10.0, 2.10.1, 2.10.2, 2.10.3, 2.10.4, 2.10.5, 2.10.6, 2.10.7, 3.0.0b1, 3.0.0rc1, 3.0.0, 3.1.0, 3.2.0, 3.3.0, 3.4.0, 4.0.0a1, 4.0.0a2, 4.0.0a3, 4.0.0a4, 4.0.0b1, 4.0.0b2, 4.0.0rc1, 4.0.0, 4.1.0, 4.2.0, 4.3.0, 4.4.0, 4.5.0, 4.6.0, 4.7.0, 4.8.0, 4.9.0, 4.10.0, 5.0.0a1, 5.0.0a2, 5.0.0a3, 5.0.0b1, 5.0.0b2, 5.0.0rc1, 5.0.1, 5.1.0, 5.2.0, 5.3.0, 5.4.0, 5.5.0, 5.6.0, 5.7.0, 5.7.1, 5.8.0, 5.9.0, 5.10.0, 6.0.0a1, 6.0.0a2, 6.0.0a3, 6.0.0b1, 6.0.0b2, 6.0.0rc1, 6.0.0, 6.1.0, 6.2.0, 6.3.0, 6.4.0, 6.5.0, 6.6.0, 6.7.0, 9.0.0a1, 9.0.0a2, 9.0.0a3, 9.0.0b1, 9.0.0rc1)
ERROR: No matching distribution found for ansible==9.13.0 (from -r requirements.txt (line 1))

 

- 해당 오류가 뜬다면,  python3.10이 필요해서 그런거이다.일부 ansible은 3.8에서 안되는거 같다. 3.10을 설치해준다.

sudo apt update && sudo apt upgrade -y
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.10 python3.10-venv python3-pip
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
python3.10 -m pip install -r requirements.txt

 - inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml 해당 경로 설정 변경

# 차후 MetalLB 사용을 위함
# configure iarp_ignore and arp_announce to avoid answering ARP queries from kube-ipvs0 interface
# must be set to true for MetalLB, kube-vip(ARP enabled) to work
kube_proxy_strict_arp: true

## Container runtime
## docker for docker, crio for cri-o and containerd for containerd.
## Default: containerd
container_manager: containerd

# audit log for kubernetes
kubernetes_audit: true

- 설치 시작 (시간이 많이 걸림)

ansible-playbook -i inventory/mycluster/hosts.yml --become --become-user=root cluster.yml -vvvv\

#완료시
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/kubelet.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

- 설치 완료

※ 파이썬 관련해서 오류가 자주 뜨는데

python 3.x - Ansible - install python3-apt package - Stack Overflow

 

Ansible - install python3-apt package

Using Ubuntu 18.04, Ansible 2.9, Python 3.6.9, have installed python3-apt On a basic ansible command ansible -b all -m apt -a "name=apache2 state=latest" Get Error: FAILED! => { &q...

stackoverflow.com

해당부분확인해서 바로 해결한적도 있으니 참고 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함