멀티클러스터로 구축하고 싶었지만 GCP 무료 Credit으로 한계가 있어 Instance 한 대로 클러스터를 구축하려고 한다.
참고 URL:
kubeadm 설치: https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
Ports and Protocls: https://kubernetes.io/docs/reference/networking/ports-and-protocols/
Cluster Install: https://v1-30.docs.kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
환경준비
# 환경
OS: Rocky Linux 8.10
kubeadm: 1.30
kubelet: 1.30
kubectl: 1.30
# Requirement
OS: Ubuntu or CentOS
Spec: 2GB RAM 이상, 2CPU 이상
Rocky Linux 8.10에서는 K8s 1.32가 지원되지 않아 1.30으로 설치
kubeadm 설치
# Repository 추가
$ cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
# SELinux를 Permissive 모드로 설정
$ sudo setenforce 0
# 시스템 부팅 시 SELinux가 Permissive 모드로 시작하도록 설정
$ sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# kubeadm, kubectl, kubelet 설치
$ sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# kubelet Enable
$ sudo systemctl enable --now kubelet
참고사항
만약 공식 홈페이지에 있는 /etc/yum.repos.d/kubernetes.repo를 사용해서
yum repo가 변경었으니 아래와 같은 에러가 발생하면 위 Repo로 변경해야한다.
Errors during downloading metadata for repository 'kubernetes':
- Status code: 404 for https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64/repodata/repomd.xml (IP: 142.251.183.100)
Error: Failed to download metadata for repo 'kubernetes': Cannot download repomd.xml:
Cannot download repodata/repomd.xml: All mirrors were tried
Ports 확인
Control plane과 Worker의 Port List이다.
Multi Node Cluster로 구성할 때에는 각각 역할에 맞게 포트가 열려있으면 되지만,
Single Node Cluster로 구성할 때에는 모든 Port가 열려있어야 한다.(방화벽이 닫혀있으면 열어주기)
Kubernetes 설치
# Kubernetes 설치(sudo yum으로 kubeadm을 설치했기 때문에 sudo로 설치)
$ sudo kubeadm init
# root 권한으로 실행할 경우
$ kubeadm init
sudo 권한으로 실행하지 않으면 아래와 같은 에러 발생
I0114 01:26:25.237996 477612 version.go:256] remote version is much newer: v1.32.0; falling back to: stable-1.30
[init] Using Kubernetes version: v1.30.8
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR IsPrivilegedUser]: user is not running as root
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
kubectl 명령어 사용하기
사용자 권한일 때
$ mkdir -p $HOME/.kube # .kube폴더 생성, kubeconfig의 default 폴더
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # config 파일 복사
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config # config 파일 권한 변경
root 계정으로 실행할 때
$ export KUBECONFIG=/etc/kubernetes/admin.conf # 단, 세선 종료시 명령어 재입력
kubernetes node List 조회
$ kubectl get nodes # kubectl node List 조회
status가 NotReady로 뜨는 이유
CNI가 설치되어 있지 않아서, coredns Pod가 배포되지 않아서
참고) 사용자 권한을 사용하고, /etc/kubernetes/admin.conf 파일을 사용하면 에러 발생.
'Kubernetes > Kubernetes Based' 카테고리의 다른 글
Kubernetes HostPath, emptyDir, PV, PVC, StorageClass (0) | 2024.03.21 |
---|---|
테라폼(Terraform)을 활용해 GKE Pod 배포 (0) | 2024.03.06 |
ubuntu/windows 테라폼 설치 (1) | 2024.02.27 |
2024년 2월 쿠버네티스 자격증 CKA 후기(M1 맥북 에어로 시험) (0) | 2024.02.13 |