새로 multi master node 구성하기
2025. 6. 15. 23:25ㆍk8s
nginx load balancer 설정
# nginx.conf
stream {
# master node load balance
upstream k8s_apiserver {
server node1 IP:6443;
server node2 IP:6443;
server node3 IP:6443;
}
server {
listen {port};
proxy_pass k8s_apiserver;
}
}
# 재시작 및 확인
sudo systemctlr restart nginx
sudo ss -tnlp | grep {port}
기존 master node 초기화
# 기존 자료 제거
sudo kubeadm reset -f
sudo rm -rf /etc/kubernetes/pki
sudo rm -rf /etc/kubernetes/*.conf
sudo rm -rf /var/lib/etcd
sudo rm -rf ~/.kube
sudo rm -rf /etc/cni/net.d
# 초기화
# 초기화된 이후의 join 정보 복사
sudo kubeadm init \
--control-plane-endpoint "{도메인}:{port}" \
--upload-certs
kubeconfig 설정(현재 사용자)
mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 정상여부 확인
# 결과가 나와야 함
kubectl get cm kubeadm-config -n kube-system
CNI 플러그인 설치
# 아래 파일이 없으면 설치해야 함
/etc/cni/net.d
# 이게 없으면 node의 상태가 Ready가 안됨
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml
# 확인
kubectl get node
다른 node를 master node로 추가
kubeadm join {도메인}:{port} --token {token} \
--discovery-token-ca-cert-hash {hash} \
--control-plane --certificate-key {key}
kubeconfig 설정(현재 사용자)
mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 정상여부 확인
kubectl get node
master node에 pod 할당 가능하게 하기
kubectl taint nodes <노드이름> node-role.kubernetes.io/control-plane:NoSchedule-
external IP 할당을 위해 metallb 설정
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.10/config/manifests/metallb-native.yaml
# metallb-config.yaml
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: my-pool
namespace: metallb-system
spec:
addresses:
- 192.168.0.240-192.168.0.250 # 예: 내부 네트워크 IP 범위
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: l2adv
namespace: metallb-system
Ingress Nginx Controller 설치
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.10.1/deploy/static/provider/baremetal/deploy.yaml
# 확인
kubectl get svc -n ingress-nginx
# 외부 IP가 할당이 안되어 있는 경우
# type 확인
kubectl get svc ingress-nginx-controller -n ingress-nginx -o yaml
# LoadBalancer IP 할당
kubectl patch svc ingress-nginx-controller -n ingress-nginx \
-p '{"spec": {"type": "LoadBalancer", "loadBalancerIP": "192.168.0.241"}}'
# 확인
kubectl get svc -n ingress-nginx
'k8s' 카테고리의 다른 글
registry 설정 (0) | 2025.06.29 |
---|---|
nginx에서 404 에러가 발생하고, ingress에서는 아무런 로그가 없는 경우 (0) | 2025.06.06 |
node 추가 (0) | 2025.05.25 |
port가 여러개 일 때 설정 방법 (0) | 2025.03.30 |
nodeSelector: Pod가 특정 node에만 생성되도록 하기 (0) | 2025.03.29 |