kubectl 명령어 사용 시 아래와 같은 상황이 발생하며 실행이 안됩니다.

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

 

현재 사용자의 홈디렉토리 하위의 .kube 폴더의 config 파일 존재 확인해 봅니다.

 

~/.kube/config 파일 유무 확인

K8S 노드정보를 확인하려하면 다음과 같은 TLS 인증 에러가 발생 한다

Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")

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

해당 명령어를 수행하여 해결한다

VM 사전 준비

호스트 네임 변경

sudo -i
sudo hostnamectl set-hostname k8s-master
sudo -i

swap 해제

swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab

방화벽 해제

sudo ufw disable

필요 패키지 설치

sudo apt-get update -y
sudo apt-get install -y curl ethtool ebtables socat conntrack

iptables 설정

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

Docker 설치

sudo apt-get -y update
sudo apt-get -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release

Docker의 공식 GPG키 추가

curl -fsSL https://download.docker.com/linux/ubuntu/gpg |\
sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

안정적 저장소 설정

echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

도커 엔진 설치

sudo apt-get -y update
sudo apt-get -y install docker-ce docker-ce-cli containerd.io

cgroup 설정

sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF

도커 실행 및 확인

sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl status docker

Kubernetes 설치

apt패키지 인덱스를 업데이트하고 Kubernetes apt저장소를 사용하는 데 필요한 패키지를 설치

sudo apt-get -y update
sudo apt-get install -y apt-transport-https ca-certificates curl

Google Cloud 공개 서명 키 다운로드

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg \
https://packages.cloud.google.com/apt/doc/apt-key.gpg

K8S apt 리포지토리 추가

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

apt 패키지 색인을 업데이트하고, kubelet, kubeadm, kubectl을 설치하고 해당 버전을 고정

sudo apt-get -y update
sudo apt-get install kubeadm=1.22.11-00 kubelet=1.22.11-00 kubectl=1.22.11-00
sudo apt-mark hold kubelet kubeadm kubectl
systemctl enable --now kubelet

kubeadm 초기화

kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=<Master IP>

해당 부분 복사(추후 워커노드 조인 시 필요)

<마스터 노드만 설정> 사용자에 대해 kubectl 작동하도록 설정

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

<마스터 노드만 설정> Calico 네트워크 플러그인 설치

kubectl create -f https://projectcalico.docs.tigera.io/manifests/tigera-operator.yaml
kubectl create -f https://projectcalico.docs.tigera.io/manifests/custom-resources.yaml

***POD network 변경시 wget 명령어로  https://projectcalico.docs.tigera.io/manifests/custom-resources.yaml

custom-resources.yaml 파일을 다운받고 IP 수정을 해준 뒤 로컬의 파일을 kubectl create -f 명령어로 실행 해 줘어야 한다. 디폴트는 192.168.0.0/16 

 

 

 

<마스터 노드만 설정> Calico pod 확인

watch kubectl get pods -n calico-system

<마스터 노드만 설정> Kubectl 자동완성 적용

source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
source /etc/bash_completion
alias k=kubectl
complete -F __start_kubectl k

<마스터 노드만 설정> master node에도 pod 를 생성 할 수 있도록 설정

kubectl taint nodes --all node-role.kubernetes.io/master-

<워커 노드 설정>

sudo kubeadm join 10.20.1.6:6443 --token ixujii.6720hcftvfzfu6iz --discovery-token-ca-cert-hash sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

노드 확인

kubectl get nodes

+ Recent posts