앤서블 Kubespray 기반 고가용성(HA) 쿠버네티스 클러스터

💡 핵심 요약 (Executive Summary)

본 가이드는 ansible 쿠버네티스(Kubernetes) kubespray 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.

📑 Table of Contents
Reference & Guidelines (NOTE)

Host에서 systemd-resolved 사용시 CoreDNS 동작

HostNode:

  • systemd-resolved는 /etc/resolv.conf = 127.0.0.53루프백주소로 고정한다.
  • 실제 /etc/systemd/resolved.conf에서 정의된 리졸브는 /var/run/systemd/resolve/resolv.conf이다.

Kubelet:

  • default는 HostNode의 /etc/resolv.conf 를 마운트한다.
  • Kublet은 루프백주소 127.0.0.53에 접근할 수 없다.
Reference & Guidelines (NOTE)

Kubernetes:

k3s:

bash
k3s server --resolv-conf $value
curl -sfL https://get.k3s.io | sh -s - server --resolv-conf $value

Deploy Server 준비

필요 패키지 설치
bash
apt update
apt install python3-pip # python3.8.10
pip install ansible==4.10.0
#ansible==4.10.0 ,ansible-core==2.11.12 ,kubernetes_v1.24.6
#ansible==2.9.7 ,ansible-core==2.9.6 ,kubernetes_v1.23.7

pip install netaddr
apt-get install sshpass
Reference & Guidelines (NOTE)

version 변경시 uninstall 하지 않고 덮어써도 잘 작동 함

사전 준비
bash
# 각 노드정보 추가
vi /etc/hosts

# ssh-key 설정
ssh-keygen -t rsa
# 설치할 노드호스트에 pub키 복사
ssh-copy-id root@k8s-master1

Exec

Playbook setting
bash
git clone https://Enterprise Cloudlab:[email protected]/Enterprise Cloudlab/cmp-infra.git

cd ~/cmp-infra/kubernetes/ansible/kubernetes_v1.23.7/

# 호스트정보 수정
vi inventory/cmp/inventory.ini
# kube version 및 디렉토리 등 수정
vi inventory/cmp/group_vars/k8s_cluster/k8s-cluster.yml
# offline.yml은 주석처리 되어있음. 가장 우선순위
vi inventory/cmp/group_vars/all/offline.yml
Playbook 실행
bash
ansible-playbook -i inventory/$env/inventory.ini cluster.yml -vv

#ansible-playbook myplaybook.yaml -i myinventory --env-container=/path/to/offline.yaml

Detaile

Addons


‼ 폐쇄망

External Servers
OS Image 준비
  • RHEL:
Package Repository 준비
  • RHEL:
  • DEB:
File Repository 준비
Docker Repository 준비 (Harbor)
Deploy Server
offline.yaml 수정
Playbook 실행 이후
Before: All Nodes: 외부 repository mount, etchost 등록
  • RHEL: :import
bash
#harbor host 등록
vi /etc/hosts
1Cycle After: All Nodes: Harbor 접근권한 설정
bash
#harbor 권한 인증
nerdctl login harbor.Enterprise Cloud.cld
2Cycle After: Master Node: CoreDNS ConfigMap 수정
  • :coredns, nodelocaldns Not Running

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *