귀염둥이의 메모

[K8s] Vagrant와 Kubespray를 이용한 쿠버네티스 환경 구성(2) 본문

Infra & Devops/Kubernetes

[K8s] Vagrant와 Kubespray를 이용한 쿠버네티스 환경 구성(2)

겸둥이xz 2021. 10. 3. 18:54
반응형

Kubespray

  • Kubeadm 과 Ansible을 이용한 쿠버네티스 클러스터 배포 도구
  • 별도의 로드 밸런서를 사용하지 않고 노드 각각의 nginx가 리버스 프록시로 실행됨
  • nginx-proxy가 전체 마스터 노드를 바라보는 구조

control-plane에서 설정 및 설치

# 약어 등록하기
sudo vim /etc/hosts

ssh-keygen
ssh-copy-id control-plane
ssh-copy-id node1
ssh-copy-id node2

# vagrant 유저는 sudo 권한이 있음
sudo apt update # 현재 가지고있는 패키지들의 새로운 버전 리스트 구성
sudo apt upgrade -y # 이 명령어를 해야지 실제로 최신버전으로 업데이트 됨
sudo apt install python3 python3-pip git -y

# kubespray 설치 - v2.14.0 (그마나 모두 지원하는 최신버전)
git clone --single-branch --branch=release-2.14 https://github.com/kubernetes-sigs/kubespray.git
cd kubespray
sudo pip3 install -r requirements.txt

Ansible 관련 인벤토리

# 디렉토리 복사 해서 사용하기 mycluster
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]
node1 ansible_host=192.168.56.21 ip=192.168.56.21
node2 ansible_host=192.168.56.22 ip=192.168.56.22
control-plane ansible_host=192.168.56.11 ip=192.168.56.11

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

[all:vars]
ansible_python_interpreter=/usr/bin/python3

[kube-master]
control-plane

[etcd]
control-plane

[kube-node]
node1
node2

[calico-rr]

[k8s-cluster:children]
kube_control_plane
kube_node
calico_rr

addons.yml 설정

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

# 수정할 값
ingress_nginx_enabled: true
metrics_server_enabled: true
metallb_enabled: true
metallb_ip_range:
  - "192.168.56.50-192.168.56.99"
metallb_protocol: "layer2"

k8s-cluster.yml

vi inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml
# 쿠버네티스 내부 네트워크 설정, dns, 클러스터 구성 인증키 경로 등이 있다

# must be set to true for MetalLB to work
kube_proxy_strict_arp: true

쿠버네티스 클러스터 배포 (오래 시간 소요)

ansible-playbook -i inventory/mycluster/inventory.ini -b cluster.yml -v

 

반응형
Comments