반응형
쿠버네티스를 가상환경에 설치해보겠습니다.
1. Rocky8.9 환경
2. VirtualBox 7.0 이용
3. 2core 4G 자원으로 고정함
1. 리눅스 설치는 생략!
GUI를 제외한 서버로 설치했습니다.
네트워크는 브리지 네트워크
swap 메모리는 설치시부터 설정하지 않았습니다!
2. 최신 패키지 업뎃 후,
dnf update
master01 - worker01 설정 예정으로
3. hostname 을 각각 위와같이 지정해 줍니다.
hostnamectl set-hostname master01
hostnamectl set-hostname worker01
4. 혹시 모르니, 스왑을 모두 꺼줍니다.
sudo swapoff -a
sudo sed -i -e '/swap/d' /etc/fstab
5. /etc/hosts 파일에 정보를 추가합니다.
121.147.88.01 master01
121.147.88.02 worker01
6. 도커 설치
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
# 아래명령어 실행시 약간의 오류 발생
dnf update
# 충돌되는 패키지는 삭제하면서 설치
dnf install -y docker-ce docker-ce-cli containerd.io --allowerasing
docker --version
systemctl enable docker
systemctl start docker
systemctl status docker
# 도커 설정
mkdir -p /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
systemctl daemon-reload
systemctl restart docker
6. containerd 설치
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sysctl --system
7. 쿠버네티스 레포 등록 및 설치 ( 공식문서보고 리포 수정했음 )
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl
EOF
dnf -y install kubelet kubeadm kubectl --disableexcludes=kubernetes epel-release
systemctl enable --now kubelet
mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
옵션수정
vi /etc/containerd/config.toml
---------------------------
......
[plugins."io.containerd.grpc.v1.cri".containerd.default_runtime.options]
SystemdCgroup = true
......
---------------------------
containerd 실행
# containerd cri 활성화
sed -i 's/^disabled_plugins/#disabled_plugins/' /etc/containerd/config.toml
systemctl enable containerd
systemctl restart containerd
8. 방화벽 해제
## 마스터
firewall-cmd --add-port={80,443,6443,2379,2380,10250,10251,10252,30000-32767}/tcp --permanent
firewall-cmd --reload
## 워커
firewall-cmd --add-port={80,443,10250,30000-32767}/tcp --permanent
firewall-cmd --reload
9. 계정생성 ( master, worker )
useradd -d /home/username username
echo "password" | passwd username --stdin
chmod 700 /usr/bin/su
#visudo 로 sudo 권한 추가!!
9.1 kubeadm join 오류 방지를 위한 패키지 설치(tc)
dnf install -y iproute-tc
10. 마스터 노드 설치
sudo kubeadm init \
--control-plane-endpoint "master01:6443" \
--pod-network-cidr=192.168.0.0/16 \
--upload-certs
11. 향후 마스터 추가를 위한 calico 설치
## 주소바뀌어서 수정
## 아래 설정은 주석을 해제해 주면 됨
curl https://calico-v3-25.netlify.app/archive/v3.25/manifests/calico.yaml -O
vi calico.yaml
---------------------------
- name: CALICO_IPV4POOL_CIDR
value: "192.168.0.0/16
---------------------------
kubectl apply -f calico.yaml
kubectl get pods -o wide -A
# calico-kube-controllers 가 Pending 상태이면 아래명령을 수행하자.
sudo systemctl restart containerd
12. 마스터 노드 정상 확인
kubectl get nodes
설치시 나오는 커맨드로 worker node 를 조인 시킨다. (조인시 root 로 해야함)
13. 최종 확인!
향후 , 추가적은 노드는
sudo kubeadm token create --print-join-command
를 이용하여 추가한다!
설정이 먼가 잘못된거 같을때 초기화 하기
# Docker 초기화
docker rm -f `docker ps -aq`
docker volume rm `docker volume ls -q`
sudo umount /var/lib/docker/volumes
sudo rm -rf /var/lib/docker/
sudo systemctl restart docker
#kubernetes 초기화
sudo kubeadm reset
sudo systemctl restart kubelet
sudo reboot
반응형