쿠버 네티스 설치하고 node확인시 해당 오류가 발견됨.
API서버에 연결이 안되어 계속해서 오류가 발생하게 되었음.
active상태인데 아래 log가 계쏙 해서 올라오고 있음
아래 내용들 때문에 기존에 join하려던게 안된거 같아서 해결 해보기로함
일단 먼저 클러스터 초기화
sudo kubeadm reset
- 클러스터 초기화
sudo rm -rf /etc/kubernetes /var/lib/etcd /var/lib/kubelet /etc/cni /opt/cni
- 해당 관련 디렉토리 삭제
SystemdCgroup설정 변경
grep -i "SystemdCgroup" /etc/containerd/config.toml
- cgroup 드라이버 설정 확인
sudo sed -i 's/SystemdCgroup = true/SystemdCgroup = false/g' /etc/containerd/config.toml
- cgroup 설정값 보고 true 변경
sudo systemctl restart containerd.service
- 컨테이너 서비스 재시작
sudo systemctl restart kubelet.service
- kubelet 서비스 재시작
쿠버네티스 클러스터의 핵심 컴포넌트는 kubelet과 containerd입니다. 이 두 요소가 컨테이너의 CPU, 메모리 등 리소스 관리를 담당
기본 설정 (SystemdCgroup = false): containerd는 기본적으로 cgroupfs 드라이버를 사용하여 리소스를 관리
kubelet과 containerd가 서로 다른 cgroup 드라이버를 사용하게 되면, 리소스 할당 및 관리에서 충돌이나 불일치가 발생할 수 있다고함. (1.31v 부터는 상관 없다곤 하는데 나는 1.33v 이걸 true로 변경 안하면 CoreDNS부분이 오류가 남..)
마스터 노드 클러스터 생성
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=172.16.2.25
클러스터 구성 완료
노드 확인
노드를 확인 하면 인증서 관련 오류가 나와 에러가 뜸
아래 config 파일의 을 옮겨주고 권한을 준 다음 kubectl get node 하면 node를 볼 수 있음
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
워커 노드에서의 조인
sudo kubeadm reset
- 워커 노드에 있는 adm 정보를 리셋시킴
kubeadm join 172.16.2.25:6443 --token efms46.8epf3nxgw69u7k7b \
--discovery-token-ca-cert-hash sha256:c2357ec5ec91170b5bc899dfd91fd4efe89408952c589174f1e1b518be6bcd5c
- 이후 마스터 노드 클러스터 구성 완료하면 나오는 토큰 값과 hash값 그대로 복사 해서 넣기
그럼 조인이 완료 되었다고 나옴.
조인 되었는지 마스터에서 확인
master -> node로 admin.conf 파일 옮기
sudo scp /etc/kubernetes/admin.conf kang@172.16.2.26:/home/kang/
노트에서 kubectl get node를 하니 permission denied가 됨
그래서 인증 관련 폴더를 복사해서 옮겨 둬야함
옴긴 후 권한 설정과 복사 해주면 됨.
Calico 설치
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
journalctl -f -u kubelet
- 로그보기로 로그 확인 -f는 실시간 옵션
아래 오류가 나오면 containerd restart, kubelet restart 둘다 하면됨
마스터 워커 둘다
팟 상태 확인 및 노트상태 확인
토큰 관련 명령어 정리
kubeadm token list
- 유효한 토큰과 만료 시간 확인
kubeadm token create
- 토큰 생성
kubeadm token create --print-join-command
- join명령어 포함해서 재생성