이제 쿠버네티스 클러스터 구축을 해보자. server01을 마스터 노드로 server02, 03이 워커 노드가 된다.
**# 인증서 만료 확인(쿠버네티스 마스터 노드 설치후 재 확인 예정)
- 클러스터의 주요 구성 요소(API 서버, 컨트롤러 매니저, 스케줄러 등)는 서로 인증된 상태에서만 통신
sudo kubeadm certs check-expiration**

**# sudo 생략시 없다고 나오기도 함
sudo kubeadm config images list**

sudo -i
root@server01:~# kubeadm config images pull
**sudo kubeadm init --apiserver-advertise-address=10.0.2.4 --pod-network-cidr=192.168.0.0/16 --cri-socket /run/containerd/containerd.sock**

kubeadm join 10.0.2.4:6443 --token 5a05my.inquc8iu3jgiriwr \
--discovery-token-ca-cert-hash sha256:56ed8ec32afdba3572298b782df10e5c43a4b8fe3ab3e8a030e801a863cb38cb
sudo kubeadm certs check-expiration

**#root@server01:~# exit
logout
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config**
tree .kube/
**kubectl get nodes -o wide**

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/tigera-operator.yaml
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/custom-resources.yaml
이 파일에는 CIDR, IPPools, BGP 등 설정이 포함되어 있습니다.
만약 kubeadm init에서 --pod-network-cidr=192.168.0.0/16 을 사용했다면,
custom-resources.yaml을 직접 받아서 아래처럼 수정한 후 설치해야 한다.
curl -O https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/custom-resources.yaml
vi custom-resources.yaml
spec:
cidr: 192.168.0.0/16 # ← init할 때 사용한 CIDR로 수정
kubectl apply -f custom-resources.yaml
kubectl get pods -n calico-system
모든 Pod가 Running 상태여야 정상
kubectl get pods -n kube-system

**kubectl cluster-info**

**mkdir -p $HOME/.kube
scp -p ubuntu@server01:~/.kube/config ~/.kube/config
ubuntu@server02:~$ cd .kube/
ubuntu@server02:~/.kube$ ls
config**
sudo -i
kubeadm join 10.0.2.4:6443 --token 5a05my.inquc8iu3jgiriwr \
--discovery-token-ca-cert-hash sha256:56ed8ec32afdba3572298b782df10e5c43a4b8fe3ab3e8a030e801a863cb38cb


정상적으로 모두 연결되었음을 볼 수 있다.
kubectl run hello-world --image=hello-world --restart=Never
kubectl get pod
