티스토리 뷰

카테고리 없음

kubespray 설치 ! (진행중)

미니대왕님 2022. 7. 31. 14:07

1.3 vagrant 실행

vagrantfile이 있는 위치에서 vagrant up명령어를 입력하면 virtualbox에서 vm이 생성됩니다.

vagrant up

1.4 원격접속

putty같은 ssh원격접속 도구를 이용하여 [그림3]에서 설정한 IP로 접속하실 수 있습니다.

  • 계정: vagrant
  • 비밀번호: vagrant

2. 서버 설정

이 챕터에서는 kubespray를 실행하기 위한 설정과정을 다룹니다.

2.1 공통설정

bootstrap서버를 제외한 모든 서버에 아래 명령어를 실행합니다. swap메모리 비활성화, ubuntu방화벽을 비활성화 합니다.

swapoff -a 
sed -i '/swap/d' /etc/fstab 
systemctl stop ufw 
systemctl disable ufw

2.2 bootstrap서버 설정

2.2.1 kubespray 설치

kubespray는 ansible을 이용하여 쿠버네티스를 설치합니다. ansible을 사용하기 위해 python3이 필요합니다.

python3을 설치하고 python 가상환경을 활성화 합니다.

[root 계정으로 실행]
apt update
apt upgrade

[vagrant 계정으로 실행]
# python3 설치 
sudo apt install python3-pip python3-setuptools virtualenv -y 

# python 가상환경 활성화 
virtualenv --python=python3 venv 
. venv/bin/activate


git clone을 사용하여 kubespray git프로젝트르 다운로드 받습니다.

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


kubespray실행에 필요한 python 패키지를 설치합니다.

cd kubespray 
pip install -r requirements-2.11.txt

2.2.2 ssh키 복사

ansible은 각 서버가 실행할 스크립트를 ssh통신으로 전송합니다. 그러므로 ssh통신을 위한 키 등록과정이 필요합니다.

bootstrap서버에서 ssh키를 생성합니다.

ssh-keygen -t rsa


생성한 키를 ssh-copy-id명령어로 쿠버네티스 클러스터 서버에 복사합니다.

영상참고: https://youtu.be/12vNy4IvF14?t=849
ssh-copy-id vagrant@192.168.25.41
ssh-copy-id vagrant@192.168.25.42
ssh-copy-id vagrant@192.168.25.43
ssh-copy-id vagrant@192.168.25.44
ssh-copy-id vagrant@192.168.25.45

ls ~/.ssh

2.2.3 ansible 인벤토리파일 설정

ansible 인벤토리 파일을 수정합니다. 인벤토리 파일은 ansible이 스크립트를 실행할 대상을 설정하는 곳입니다. 인벤토리 파일은 샘플파일을 복사한 후에 편집할 수 있습니다.

vi inventory/sample//inventory.ini

[all]
node1 ansible_host=192.168.25.41 ip=192.168.25.41 etcd_member_name=etcd1
node2 ansible_host=192.168.25.42 ip=192.168.25.42 etcd_member_name=etcd2
node3 ansible_host=192.168.25.43 ip=192.168.25.43 etcd_member_name=etcd3
node4 ansible_host=192.168.25.44 ip=192.168.25.44
node5 ansible_host=192.168.25.45 ip=192.168.25.45

# ## 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

[etcd]
node1
node2
node3

[kube_node]
node4
node5

[calico_rr]

[k8s_cluster:children]
kube_control_plane
kube_node
calico_rr

cp -rfp inventory/sample inventory/mycluster
vi inventory/mycluster/inventory.ini
$cd /home/master/kubespray

$ansible-playbook -b -i inventory/k8s_cluster/inventory.ini scale.yml --limit etcd,new-nodes


[그림4]와 같이 인벤토리 파일을 설정합니다. node1,2,3은 controlplane노드이고 node4,5는 worker노드입니다.

[all]
node1 ansible_host=192.168.25.41 ip=192.168.25.41 etcd_member_name=etcd1
node2 ansible_host=192.168.25.42 ip=192.168.25.42 etcd_member_name=etcd2
node3 ansible_host=192.168.25.43 ip=192.168.25.43 etcd_member_name=etcd3
node4 ansible_host=192.168.25.44 ip=192.168.25.44
node5 ansible_host=192.168.25.45 ip=192.168.25.45

# ## 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

[etcd]
node1
node2
node3

[kube_node]
node4
node5

[calico_rr]

[k8s_cluster:children]
kube_control_plane
kube_node
calico_rr

그림4 인벤토리 파일

2.2.4 쿠버네티스 클러스터 설치 설정

다음 쿠버네티스 major버전에서는 CRI에서 도커가 제외됩니다. 그러므로 설치할때부터 CRI를 containerd로 변경하겠습니다.

총 2파일을 설정하면 됩니다.

영상참고: https://youtu.be/12vNy4IvF14?t=1035
vi inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml 
container_manager: containerd
vi inventory/mycluster/group_vars/etcd.yml 
etcd_deployment_type: host

3. 설치

모든 설정이 끝났습니다. 단 한줄의 명령어로 kubepray를 실행하실 수 있습니다. ansible-playbook명령어를 실행하면 되는데요. 이 때, root권한으로 실행됩니다.

ansible-playbook -i inventory/mycluster/inventory.ini --become --become-user=root cluster.yml


설치가 성공하면 오류메세지가 표시되지 않고 모두 OK메세지가 출력됩니다.

흠.. 아래와 같이 되어야 하는데 ''

[그림5] kubespray 설치 성공


4. kubectl 사용

kubectl명령어는 controlplane노드에서 실행할 수 있습니다. vagrant계정에서는 kubeconfig파일이 없어 kubectl명령어를 이용하실 수 없습니다. root계정으로 스위칭한 후 kubectl명령어를 사용해야 합니다.

댓글