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
반응형