본문 바로가기
Devops/Kubernetes

[Kubernetes] The connection to the server [IP]:6443 was refused

by dev_ss 2023. 8. 7.

쿠버네티스를 설치하고 Master Node 구축을 위하여 kubeadm의 초기화를 한 후 kubectl을 이용하여 정보를 확인하려던 차, 아래의 에러가 발생했다.

The connection to the server 172.31.12.179:6443 was refused - did you specify the right host or port?

 

위 에러는kubectl을 이용하여 kube-apiserver로 요청을 보냈으나  kubelet 또는 kube-apiserver에 현재 문제가 있어 통신에 장애가 있다는 것이다.

 

 

 

# 초기화
sudo kubeadm init

# 초기화 후 설정
mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

1. Swapoff 확인

# root user 접속
sudo -i

# 스왑 영역 비활성화
swapoff -a

# root user 종료
exit

# 시스템콜 추적
strace -eopenat kubectl version

추가적으로 위와 관련된 사항을 쿠버네티스 공식 문서에서 확인할 수 있었는데, kubelet 사용을 위해서는, 메모리 스왑의 Disable이 필수적으로 설정이 되어야한다.

 

[ 출처 : https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/]

 

 

2. Config 확인

 

root 유저가 아닐때, KUBECONFIG에 잘못된 경로가 들어가 있거나 값 자체가 없을 때, 에러가 발생했다.

# config 복사
sudo cp /etc/kubernetes/admin.conf ~/.kube/config

# Kubeconfig 지정
export KUBECONFIG=$HOME/.kube/config

### 고정 환경 변수 지정
# 내부에 아래 내용 추가
# vi ~/.bashrc
# export KUBECONFIG=$HOME/.kube/config
# source ~/.bashrc

 

3. Kubelet 자체 디버깅

위 방법으로 해결이 되지 않으면, kubelet의 상태와 로그를 확인하고, 알맞게 디버깅을 해야한다.

 

아래 명령어로 로그를 확인할 수 있다.

 

# systemctl
systemctl status kubelet

# journalctl - log follow
journalctl -f

# journalctl - log unit
journalctl -u kubelet

 

 

 

반응형