📋 VM 생성하는 법
위처럼 작성후(CPU, RAM, Disk 용량은 만드는 용도에 따라 변경 가능)
create 버튼 클릭
Console 탭 클릭
언어 한국어로 설정
root 비밀번호 클릭
완료 두번 클릭
설치 목적지 클릭
완료
네트워크 및 호스트 이름 클릭
호스트 이름 설정 후 적용
오른쪽 하단 설정 클릭
IPv4 설정 클릭
method 수동 설정
주소 Add 버튼 클릭
본인에게 해당되는 주소, 넷마스크, 게이트웨이 각각 작성(넷마스크는 24)
DNS servers 도 작성
저장
이더넷 연결됨이 떴다면 완료 버튼
설치 후 재부팅 진행(어느정도 시간 소요)
로컬에서 터미널로 ssh를 통해 접속(@옆에 ip만 본인 ip로 수정)
ssh 접속이 잘된다면 위 사진에 빨간색 부분으로 표시한 버튼을 눌러서
Import되어 있는 리눅스 설치 ISO파일을 Eject한다
📕 모든 Node 설정(Worker Node)
echo '======== [4] Rocky Linux 기본 설정 ========'
echo '======== [4-1] 패키지 업데이트 ========'
yum -y update
echo '======== [4-2] 타임존 설정 ========'
timedatectl set-timezone Asia/Seoul
echo '======== [4-3] [WARNING FileExisting-tc]: tc not found in system path 로그 관련 업데이트 ========'
yum install -y yum-utils iproute-tc
echo '======= [4-4] hosts 설정 =========='
// 각자 본인이 부여받은 ip와 vm host 이름으로 변경해야함
cat << EOF >> /etc/hosts
192.168.56.30 k8s-master
EOF
echo '======== [5] kubeadm 설치 전 사전작업 ========'
echo '======== [5] 방화벽 해제 ========'
systemctl stop firewalld && systemctl disable firewalld
echo '======== [5] Swap 비활성화 ========'
swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab
echo '======== [6] 컨테이너 런타임 설치 ========'
echo '======== [6-1] 컨테이너 런타임 설치 전 사전작업 ========'
echo '======== [6-1] iptable 세팅 ========'
// EOF까지 한번에 복붙 가능
cat <<EOF |tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
// 한줄씩
modprobe overlay
modprobe br_netfilter
// EOF까지 한번에 복붙 가능
cat <<EOF |tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
echo '======== [6-2] 컨테이너 런타임 (containerd 설치) ========'
echo '======== [6-2-1] containerd 패키지 설치 (option2) ========'
echo '======== [6-2-1-1] docker engine 설치 ========'
echo '======== [6-2-1-1] repo 설정 ========'
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
echo '======== [6-2-1-1] containerd 설치 ========'
yum install -y containerd.io-1.6.21-3.1.el9.x86_64
systemctl daemon-reload
systemctl enable --now containerd
echo '======== [6-3] 컨테이너 런타임 : cri 활성화 ========'
containerd config default > /etc/containerd/config.toml
sed -i 's/ SystemdCgroup = false/ SystemdCgroup = true/' /etc/containerd/config.toml
systemctl restart containerd
echo '======== [7] kubeadm 설치 ========'
echo '======== [7] repo 설정 ========'
// EOF까지 한번에 복붙 가능
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.27/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.27/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
echo '======== [7] SELinux 설정 ========'
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
echo '======== [7] kubelet, kubeadm, kubectl 패키지 설치 ========'
yum install -y kubelet-1.27.2-150500.1.1.x86_64 kubeadm-1.27.2-150500.1.1.x86_64 kubectl-1.27.2-150500.1.1.x86_64 --disableexcludes=kubernetes
systemctl enable --now kubelet
Master Node에 조인
//kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
kubeadm join 172.16.214.56:6443 --token ndxerc.c5o4pndekpvm486n --discovery-token-ca-cert-hash sha256:44f236f8cd4d064ff47160f5ad69959cbefb6f65457e996f638c31e10256c0b5
📘 Master Node 추가 설정
echo '======== [8] kubeadm으로 클러스터 생성 ========'
echo '======== [8-1] 클러스터 초기화 (Pod Network 세팅) ========'
// 192.168.56.30는 본인 ip로 변경
kubeadm init --pod-network-cidr=20.96.0.0/12 --apiserver-advertise-address 192.168.56.30
echo '======== [8-2] kubectl 사용 설정 ========'
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
echo '======== [8-3] Pod Network 설치 (calico) ========'
kubectl create -f https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/calico-3.26.4/calico.yaml
kubectl create -f https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/calico-3.26.4/calico-custom.yaml
echo '======== [8-4] Master에 Pod를 생성 할수 있도록 설정 ========'
// k8s-master를 본인의 host이름으로 변경
kubectl taint nodes k8s-master node-role.kubernetes.io/control-plane-
echo '======== [9] 쿠버네티스 편의기능 설치 ========'
echo '======== [9-1] kubectl 자동완성 기능 ========'
yum -y install bash-completion
echo "source <(kubectl completion bash)" >> ~/.bashrc
echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc
source ~/.bashrc
echo '======== [9-2] Dashboard 설치 ========'
kubectl create -f https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/dashboard-2.7.0/dashboard.yaml
echo '======== [9-3] Metrics Server 설치 ========'
kubectl create -f https://raw.githubusercontent.com/k8s-1pro/install/main/ground/k8s-1.27/metrics-server-0.6.3/metrics-server.yaml
📚 모든 Pod 상태 확인
// kubectl alias로 k 설정
k get pods -A
💻 대시보드 접속
// ip는 본인 ip로 변경해서 접속
https://192.168.56.30:30000/#/login
출처
[인프런] 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2
저자 : 일프로
'k8s' 카테고리의 다른 글
[1-7] Application 기능으로 이해하기 - PV/PVC, Deployment, Service, HPA (0) | 2024.04.29 |
---|---|
[1-6] Application 기능으로 이해하기 - Configmap, Secret (1) | 2024.04.16 |
[1-5] Application 기능으로 이해하기 - probe (1) | 2024.04.13 |
[1-4] Object 기본적인 이해 (1) | 2024.04.12 |
[1-3] 쿠버네티스가 정말 편한 이유 (0) | 2024.04.10 |