Kubeadm HA Cluster 구축

Ryu·2021년 11월 11일
0

Kubernetes

목록 보기
2/9

1. Node 구성 (Ubuntu 20.04 LTS 기준)

마스터 노드 3ea
- 192.168.223.131 master1
- 192.168.223.132 master2
- 192.168.223.133 master3	

워커 노드 1ea
- 192.168.223.134 worker1

2. SWAP 메모리 비활성화 (공통)

Pod의 컨셉 자체가 필요한 리소스를 할당 받아 사용하는 구조이기 때문에 비활성화

sudo swapoff –a
sudo vi /etc/fstab → swap 주석 처리

3. Docker 설치 (2가지 방법 중 택 1) (공통)

방법 1
sudo apt update
sudo apt-get update
sudo apt-get remove docker docker-engine docker.io
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce –y
sudo docker run hello-world

방법 2
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker

4. Docker 데몬 교체 (공통)

systemd = kubernetes에서 권장하는 Docker 데몬의 드라이버

# Docker 데몬이 사용하는 드라이버를 cgroupfs 대신 systemd를 사용하도록 설정
cat << EOF | sudo tee –a /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo systemctl daemon-reload
sudo systemctl restart docker

5. Kubernetes 설치 (공통)

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

6. Hostname 설정 (공통)

sudo vi /etc/hosts
192.168.223.131 master1
192.168.223.132 master2
192.168.223.133 master3

# master1
hostnamectl set-hostname master1
# master2
hostnamectl set-hostname master2
# master3
hostnamectl set-hostname master3

7. HAproxy 로드밸런서 설치 및 설정 (Master1 노드에서 수행)

sudo apt install haproxy -y

cat << EOF | sudo tee -a /etc/haproxy/haproxy.cfg
frontend kubernetes-master-lb
bind 0.0.0.0:26443
option tcplog
mode tcp
default_backend kubernetes-master-nodes
backend kubernetes-master-nodes
mode tcp
balance roundrobin
option tcp-check
option tcplog
server <serverName1> <serverIP>:6443 check
server <serverName2> <serverIP>:6443 check
server <serverName3> <serverIP>:6443 check
EOF

sudo systemctl restart haproxy
sudo systemctl enable haproxy

8. Cluster 생성 (Master1 노드에서 수행)

#sudo kubeadm init --control-plane-endpoint "LOAD_BALANCER_DNS:LOAD_BALANCER_PORT" --upload-certs
sudo kubeadm init --control-plane-endpoint "<serverIP>:26443" --upload-certs --pod-network-cidr “10.244.0.0/16”

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

9. Master2, Master3을 Master1에 연결

kubeadm join~

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

10. CNI 설치

택 1
1. fannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

2. weave
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')&env.IPALLOC_RANGE=10.244.0.0/16"

Can Do It
brb

profile
Let me start

0개의 댓글

관련 채용 정보