728x90
SMALL
[전제 조건]
- CentOS7 3대 이상 / KuberneteS 설치 완료
- (참고 링크: https://sungbin-park.tistory.com/49)
- 아래 내용 따라만 하면 반드시 된다
- /etc/hosts 설정
- master server - kubeadm init
- worker server - kubeadm join
- 각 서버에 /etc/hosts 추가
echo "192.168.98.159 master" >> /etc/hosts
echo "192.168.98.162 worker1" >> /etc/hosts
echo "192.168.98.161 worker2" >> /etc/hosts
master server
- kubeadm init
- kubeadm 을 통한 네트워크 설정을 잡는다.
- apiserver-advertise-address : 편하게 하려면 내부아이피(privateIP 사용할 것)
- cidr : 이것도 flannel 의 기본인 10.244.0.0/16 을 사용할 것
- 출력 log 저장
kubeadm init --apiserver-advertise-address=[masterIP] --pod-network-cidr=10.244.0.0/16 > kubeadm_join.log
ex)
kubeadm init --apiserver-advertise-address=192.168.98.159 --pod-network-cidr=10.244.0.0/16 > kubeadm_join.log
- log 확인
cat ./kubeadm_join.log
- 아래 명령어 실행
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
- Network 설정
# CNI 플러그인 실행 바이너리 제공 / 모든 노드 필수!
mkdir -p /opt/cni/bin
curl -L https://github.com/containernetworking/plugins/releases/download/v1.4.0/cni-plugins-linux-amd64-v1.4.0.tgz | tar -C /opt/cni/bin -xz
# CNI 네트워크 컨트롤러(Pod) 배포 / master 에서만
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
- 클러스터 연결 상태 확인
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready control-plane 5m33s v1.29.13
- 해당 log 파일 worker server 로 복사
scp kubeadm_join.log root@worker1:/root
scp kubeadm_join.log root@worker2:/root
Worker Server
- log file 가장 아래줄 확인
# cat kubeadm_join.log | tail -2
kubeadm join 192.168.98.159:6443 --token xnqph8.1ica9u1urgrs1fqm \
--discovery-token-ca-cert-hash sha256:3dbfe304218555ef90ef4d76c47f8edaa9a1daf27e364175983a06b4c01d0c52
- /etc/containerd/config.toml 수정
- disabled_plugins = ["cri"] 주석 처리
#주석 처리
sed -i '/^disabled_plugins = \["cri"\]/ s/^/# /' /etc/containerd/config.toml
- containerd 재실행
systemctl restart containerd
- kubeadm_join.log 파일에 있는 명령어 실행
kubeadm join 192.168.98.159:6443 --token xnqph8.1ica9u1urgrs1fqm \
> --discovery-token-ca-cert-hash sha256:3dbfe304218555ef90ef4d76c47f8edaa9a1daf27e364175983a06b4c01d0c52
- 아래 로그 출력
[preflight] Running pre-flight checks
[WARNING Hostname]: hostname "worker1" could not be reached
[WARNING Hostname]: hostname "worker1": lookup worker1 on 192.168.98.2:53: no such host
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
- cluster 확인
kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready control-plane 14m v1.29.13
worker1 Ready <none> 4m14s v1.29.13
- 기타
설정이 이상하게 된다면 아래 두 링크 중에 해결 방법이 작성되어 있을 확률이 높다
https://sungbin-park.tistory.com/86
https://sungbin-park.tistory.com/87
[Finished]
LIST
'🔹Kubernetes' 카테고리의 다른 글
Kubernetes 설정 파일 제거 (0) | 2025.02.01 |
---|---|
Service 정의 (0) | 2025.01.27 |
Pod 정의 (0) | 2025.01.27 |
kubectl 명령어 분석 (매개변수) (0) | 2024.07.31 |
[Kubernetes] Controller 소개 (0) | 2024.03.07 |