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

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

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

from http://imjeongwoo.tistory.com/124 by ccl(A) rewrite - 2021-10-03 19:01:06