728x90
더보기


sudo -i

1. 우분투 최신화 (모든 노드)
apt update && sudo apt upgrade -y
2. Swap 비활성화 (모든 노드)
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
3. 커널 파라미터 설정 (모든 노드)
tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
tee /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
4. Containerd 런타임 설치 (모든 노드)
apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt update
apt install -y containerd.io
containerd config default | tee /etc/containerd/config.toml >/dev/null 2>&1
sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
systemctl restart containerd
systemctl enable containerd
5. K8s Apt Repository 추가 (모든 노드)
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
6. Kubectl, Kubeadm, Kubelet 설치 (모든 노드)
apt update
apt install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
7. Kubeadm을 이용한 K8s 초기화 (마스터 노드)
클러스터 설치를 위한 이미지 풀링
kubeadm config images pull --cri-socket unix:///run/containerd/containerd.sock --kubernetes-version v1.30.3
kubeadm init --pod-network-cidr=10.244.0.0/16 --upload-certs --kubernetes-version=v1.30.3 --cri-socket unix:///run/containerd/containerd.sock --ignore-preflight-errors=all
join 명령 - 워커에도 아래 명령어 복붙해주기
kubeadm join 10.10.1.141:6443 --token gdj792.1sufh8g1o9web61b \
--discovery-token-ca-cert-hash sha256:cde54c97134bf8d9fffcaea33503c1faa0a92e312e76d1765f91cf8a0945c157
마스터 - vi token.txt 에 내용 입력해 주기
kubeadm join 10.10.1.141:6443 --token gdj792.1sufh8g1o9web61b --discovery-token-ca-cert-hash sha256:cde54c97134bf8d9fffcaea33503c1faa0a92e312e76d1765f91cf8a0945c157 --cri-socket unix:///run/containerd/containerd.sock
- kubectl 명령을 치려면 결국 kubectl 명령어 설치는 물론 config 파일도 구성을 해줘야 됨.
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

8. 추가 설정 (모든 노드)
잘 연결된 걸 확인했으니까 추가로 설정을 해주자
먼저 docker가 설치가 안돼 있으니까 설치해 주자
curl -fsSL https://get.docker.com -o get-docker.sh
chmod +x get-docker.sh
./get-docker.sh
자동 재시작 스크립트
- ec2에서 docker가 부팅 시 불안정하게 동작할 때
- CNI플러그인과 충돌 시 Docker 브릿지가 사라지는 이슈가 있을 때
- 한 번이라도 pod IP가 안 뜬 경험이 있거나 docker0브릿지가 사라지는 문제를 겪었다면 적용하는 게 좋음
tee /root/check_ip_and_restart_docker.sh<<EOF
#!/bin/bash
if ! ip add | grep -q 172.17; then
systemctl restart docker
fi
EOF
chmod 777 /root/check_ip_and_restart_docker.sh
crontab -e
# 스케쥴 관리. 2번 기본 vim 편집기
- 이건 위의 스크립트를 매 분마다 실행해서 체크하겠다는 의미임
- 무거운 작업 아니기 때문에 시스템 부담은 거의 없음
* * * * * /root/check_ip_and_restart_docker.sh
yaml 수정 도구
vi ~/.vimrc
" Enable file type detection
filetype on
" Enable syntax highlighting
syntax on
" Enable auto-indentation for YAML files
autocmd FileType yaml setlocal autoindent smartindent expandtab shiftwidth=2 tabstop=2
autocmd FileType yml setlocal autoindent smartindent expandtab shiftwidth=2 tabstop=2
728x90
'AWS Cloud School 8기 > 쿠버네티스' 카테고리의 다른 글
AWS CLI 구성/ eksctl/ kubectl 설치/ 클러스터 구축/ EKS/ 클러스터 생성 순서/ NLB 생성 (0) | 2025.05.01 |
---|---|
[쿠버네티스] Node Selector/ taints & tolerations/ Node Affinity (0) | 2025.04.25 |
[쿠버네티스] prometheus (0) | 2025.04.23 |
[쿠버네티스] 헬름(Helm) (0) | 2025.04.23 |
[쿠버네티스] 컨테이너의 헬스체크/ livenessProbe/ readinessProbe/ StatefulSet(리소스)/ DaemonSet(리소스) (4) | 2025.04.17 |