1. Introduction
- CentOS 7.9에서 High Availability Kubernetes 구동
- External ETCD 사용
2. Environment
- Intel X64 Architecture
- CentOS 7.9
- Docker 19.03
- Kubernetes 1.20.2 (kubeadm, kubelet, kubectl)
- External ETCD를 사용하지 않을 때는 1.20.2가 잘 안 됨(이유는 모르겠음… 2002-02-24)
- Internal ETCD를 사용하면 1.18.16 version 사용
3. Prerequisite
- Install net-tools, nc, tree
4. ETCD
4.1 Objective
- External ETCD를 사용하지 않을 경우, 4. ETCD 과정은 패스
- ETCD 클러스터는 최소 3대 이상으로 구성
- 모두 root에 설치(일반계정은 sudoer 권한 필요)
- 192.168.0.241(etcd1), 192.168.0.242(etcd2), 192.168.0.243(etcd3)에 설치
- kubeadm을 이용 (1.20.2-0)
- 추후 업데이트를 통해 etcdadm을 사용하여 설정할 수 있다고 함
- 즉, Control plane과 etcd 설정 기능을 분리할 예정
4.2 Prerequisite
4.3 Kubelet Service Configuration 파일 생성
4.4 Kubeadm Configuration 파일 생성
4.5 Certificate 파일 생성
4.6 Certificate 파일 이동
4.7 Static Pod 생성
4.8 Cluster health-check
5. Control Plane Node
5.1 Objective
- Control Plane Node는 최소 3대 이상으로 구성
- External ETCD와 관계없이 3대 이상
- 모두 root에 설치(일반계정은 sudoer 권한 필요)
- 192.168.0.251(control1), 192.168.0.252(control2), 192.168.0.253(control3)에 설치
- kubeadm을 이용 (1.20.2-0)
5.2 Prerequsite
- Kubernetes Master 노드의 seamless한 서비스를 위해서 두 컴포넌트가 필요
- 가상 아이피 설정
- 251, 252, 253을 대표하는 가상아이피는 250으로 설정
- Master와 Backup을 구분
- 192.168.0.251을 Master
- 192.168.0.252, 253을 Backup으로 설정
- vrrp_instance VI_1 중요값
- state: MASTER node는 “MASTER”로, BACKUP node는 “BACKUP”으로 설정
- interface: Virutal IP를 가지고 있는 interface, 지금 환경에서는 p2p1
- virtual_router_id: keepalived host간에 모두 같은 값을 가지고 있다. 권장 값은 51
- priority: BACKUP보다 MASTER가 큰 값을 가지면 됨. MASTER는 101, BACKUP은 100으로 설정
- authentication.auth_pass: keepalived cluster 간에 같은 값을 가지면 된다. 123456789로 설정
- virtual_ipaddress: 클러스터가 공유하게 될 virtual ip address - 192.168.0.250
- MASTER node, 192.168.0.251 설정 파일
- BACKUP node, 192.168.0.252, 253 설정파일
- 모든 노드에 check_apiserver.sh 추가
5.2.4 Configuration for Kubernetes
- 모든 호스트에 적용
- 외부에서 Kubernetes API 접근시에 8443으로 접근
5.2.5 Init Control Plane Node
- etcd1(192.168.0.241)에서 First Control Node로 pki 전달
- kubeadm-config.yaml 작성(First Control Node)
- 다른 Control Node(252, 253)에서 첫 번째 kubeadm join .. 명령어를 이용하여 연결
- Calico 연결
6. Reference