Rocky linux (or CentOS)에서 쿠버네티스를 설치하는 절차입니다.
# firewalld 서비스 중지
sudo systemctl stop firewalld
# firewalld 서비스 자동 실행 중지
sudo systemctl disable firewalld
# swap 끄기
sudo swapoff -a
# swap 자동 마운트 끄기
vi /etc/fstab
# /swap 라인 주석 처리
# 패키지 업데이트
sudo yum update -y
# 필수 패키지 설치
sudo yum install -y yum-utils iproute-tc
# docker 저장소 추가
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# containerd 설치
sudo yum install containerd.io.x86_64 -y
# containerd 자동 시작하도록 설정
sudo systemctl enable --now containerd
# containerd 설정 파일 생성
sudo bash -c "containerd config default > /etc/containerd/config.toml"
# Cgroup을 Systemd를 통해 관리하도록 설정
sudo sed -i 's/ SystemdCgroup = false/ SystemdCgroup = true/' /etc/containerd/config.toml
# kubernetes 저장소 설정
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 mode로 변경
# 즉시 변경 (재부팅시 적용 X)
sudo setenforce 0
# 설정 파일 수정 (재부팅 후 적용)
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# kubelet kubeadm kubectl 설치
sudo yum install kubelet kubeadm kubectl --disableexcludes=kubernetes
# kubelet 자동 시작하도록 설정
sudo systemctl enable --now kubelet
# net.ipv4.ip_forward=1 로 설정
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
# bridge 모듈 로드
sudo modprobe br_netfilter
# net.bridge.bridge-nf-call-iptables = 1 로 설정
echo "net.bridge.bridge-nf-call-iptables = 1" | sudo tee -a /etc/sysctl.conf
# 변경 사항 적용
sudo systemctl -p
# containerd 재시작
sudo systemctl restart containerd
kubeadm init --pod-network-cidr=10.10.0.0/16 --apiserver-advertise-address 192.168.100.130
[앞부분 생략]
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.100.130:6443 --token fx8wwi.h1sg517qd62hft7e \
--discovery-token-ca-cert-hash sha256:62133cfdf41b98d1f45d0a42a9f72af146b632c50c0bda7044461f7e41c1cc1c
# 인증 정보 복사 (위에서 제시한 가이드)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# calico 설치 (network cni 플러그인 중 하나)
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/master/manifests/tigera-operator.yaml
# custom-resources.yaml 파일은 수정이 필요해서 다운로드 먼저
curl -O https://raw.githubusercontent.com/projectcalico/calico/master/manifests/custom-resources.yaml
# custom-resoures.yaml 편집
vi custom-resources.yaml #cidr 정보를 변경 (-> 10.10.0.0/16)
# 설치
kubectl apply -f custom-resource.yaml
# 설치 확인하기
kubectl get pods -A
# token 재발행 (master node)
kubeadm token create
# token 해쉬값 확인하기
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
[token]
# /etc/resolve.conf 소프트 링크 (혹은 copy)
# 쿠버네티스 dns 질의 시 /run/systemd/resolve/resolv.conf 파일을 참조 함
sudo mkdir -p /run/systemd/resolve
sudo ln -s /etc/resolv.conf /run/systemd/resolve/resolv.conf
# kubeadm join (worker 노드 추가하기)
kubeadm join 192.168.100.130:6443 --token fx8wwi.h1sg517qd62hft7e \
--discovery-token-ca-cert-hash sha256:62133cfdf41b98d1f45d0a42a9f72af146b632c50c0bda7044461f7e41c1cc1c
# master 노드의 config 파일 복사
mkdir -p $HOME/.kube
scp sppolo@192.168.91.130:/home/sppolo/.kube/config /home/sppolo/.kube
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# /etc/hosts 추가
127.0.1.1 k8s-worker2
192.168.91.200 k8s-master
192.168.91.201 k8s-worker1
192.168.91.202 k8s-worker2