본문 바로가기
반응형

 

쿠버네티스 강의를 들었는데 kubespray 라는걸로도 설치를 할 수 있다고 한다.

자동으로 kubeadm init join 같은것도 다 해줘서 설치할 때 더 편한것 같음.

다만 여러 프로그램들을 사용해서 설치하다보니 버전들을 맞춰주는게 중요한듯

 

쿠버네티스 마스터노드와 워커노드로 구성할 VM들은 이미 되었다고 가정하고 생략

 

1. 사전내용

APT update (Cent OS 의경우 apt 대신 yum 으로 사용)

sudo apt update

 

SSH 키 생성

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ''

 

SSH 키 각 노드로 복사

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@IP

ex)
ssh-copy-id -i ~/.ssh/id_ed25519.pub k8s-master@192.168.133.11
ssh-copy-id -i ~/.ssh/id_ed25519.pub k8s-node1@192.168.133.12
ssh-copy-id -i ~/.ssh/id_ed25519.pub k8s-node2@192.168.133.13
ssh-copy-id -i ~/.ssh/id_ed25519.pub k8s-node3@192.168.133.14

 

 

pyhton3, pip, git 설치

sudo apt install -y python3 python3-pip git

 


2. Kubespray 설치

작업할 임의의 디렉토리 이동하여 kubespray git clone

https://github.com/kubernetes-sigs/kubespray

 

GitHub - kubernetes-sigs/kubespray: Deploy a Production Ready Kubernetes Cluster

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

github.com

git clone https://github.com/kubernetes-sigs/kubespray.git

 

requirements 파일에서 의존성 및 버전 확인 후 설치

cd kubespray
vi requirements.txt

위 github 에 보면 의존성 및 버전이 나오는데, OS처럼 이미 설치해둔 버전이 호환이 안되는 것이 아닌이상 그냥 냅두면 최신버전으로 설치되니.. 나같이 잘 모르면 그냥 최신버전으로 하는게 좋을듯 싶음 (이전에 버전맞춘다고 고생해봄)

sudo pip3 install -r requirements.txt

 

 

 

Ansible 로 실행할 인벤토리 준비

cp -rfp inventory/sample inventory/mycluster

 

인벤토리 내용 수정

vi inventory/mycluster/inventory.ini

# ## Configure 'ip' variable to bind kubernetes services on a
# ## different ip than the default iface
# ## We should set etcd_member_name for etcd cluster. The node that is not a etcd member do not need to set the value, or can set the empty string value.
[all]
k8s-master  ansible_host=192.168.133.11 ip=192.168.133.11 ansible_user=k8s-master
k8s-node1   ansible_host=192.168.133.12 ip=192.168.133.12 ansible_user=k8s-node1
k8s-node2   ansible_host=192.168.133.13 ip=192.168.133.13 ansible_user=k8s-node2
k8s-node3   ansible_host=192.168.133.14 ip=192.168.133.14 ansible_user=k8s-node3


# ## configure a bastion host if your nodes are not directly reachable
# [bastion]
# bastion ansible_host=x.x.x.x ansible_user=some_user

[kube_control_plane]
# node1
# node2
# node3
k8s-master
[etcd]
# node1
# node2
# node3
k8s-master
[kube_node]
# node2
# node3
# node4
# node5
# node6
k8s-node1
k8s-node2
k8s-node3
[calico_rr]

[k8s_cluster:children]
kube_control_plane
kube_node
calico_rr

 

노드들 IP와 이름들 맞춰주면 됨

 

파라미터 확인, 변경

vi inventory/mycluster/group_vars/k8s_cluster/addons.yml

...
metrics_server_enabled: true
...
ingress_nginx_enabled: true
...
metallb_enabled: true
...
metallb_protocol: "layer2"
...
metallb_config:
  address_pools:
    primary:
      ip_range:
        - 192.168.133.100-192.168.133.200
      auto_assign: true
  ...
  layer2:
    - primary
...

주석을 풀어주거나, false -> true 로 값 변경.

ip_range 의 경우 내 ip range 입력

 

vi inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml

...
kube_proxy_strict_arp: true
...

 

false -> true 로 변경

 

 

ansible 통신 가능 확인

ansible all -i inventory/mycluster/inventory.ini -m ping

 

 

apt 캐시 업데이트

ansible all -i inventory/mycluster/inventory.ini -m apt -a 'update_cache=yes' --become -K

(-K 는 sudo 권한 획득 ansible 옵션)

 

 

여기까지 다 잘되었다면 설치 진행

ansible-playbook -i inventory/mycluster/inventory.ini cluster.yml -e kube_version=v1.27.6 --become

 

kube version 은 쿠버네티스 공식페이지에서 확인하면서 맞추면됨.

(kubespray v2.23.0 의 경우 기본 k8s 버전은 1.27.6)

호스트 시스템 사양, VM 개수 및 리소스 네트워크 사양에따라 15~60분 정도 소요

 

 

3. 설치 후 쿠버네티스 기본 세팅

자격증명 가져오기

mkdir ~/.kube
sudo cp /etc/kubernetes/admin.conf ~/.kube/config
sudo chown $USER:$USER ~/.kube/config

 

 

쿠버네티스 명령 자동완성 (kubectl)

kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl
exec bashcd ku

 

 

설치끝

728x90
반응형

한걸음 한걸음

개인적인 기록