728x90
앞에서 kubespray를 이용하여 쿠버네티스 설치를 해보았으므로
이번에는 마스터 노드의 스냅샷을 1로 복원하고 kubeadm을 이용해 쿠버네티스 설치 진행
모든 VM에 docker-ce 설치
리포지토리를 이용한 설치
도커 리포지토리 설정
- HTTPS를 통해 리포지토리를 사용할 수 있도록 패키지 인덱스 업데이트 및 apt 패키지 설치
vagrant@kube-master1:~$ sudo apt-get update
vagrant@kube-master1:~$ sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
- Docker 공식 GPG 키 추가
vagrant@kube-master1:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 리포지토리 설정
vagrant@kube-master1:~$ echo \
> "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
> $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
도커 엔진 설치
- apt 패키지 업데이트 및 Docker Engine, containerd 설치
vagrant@kube-master1:~$ sudo apt-get update
vagrant@kube-master1:~$ sudo apt-get install docker-ce docker-ce-cli containerd.io
모든 VM에 kubeadm, kubelet, kubectl 설치
kubeadm 설치
kubeadm: 클러스터를 부트스트랩하는 명령
kubelet: 클러스터의 모든 머신에서 실행되는 파드와 컨테이너 시작과 같은 작업을 수행하는 컴포넌트
kubectl: 클러스터와 통신하기 위한 커맨드 라인 유틸리티
- 구글 클라우드의 공개 사이닝 키 다운로드
vagrant@kube-master1:~$ sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
- 쿠버네티스 apt 리포지토리 추가
vagrant@kube-master1:~$ echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
- apt 패키지 업데이트 및 kubelet, kubeadm, kubectl 설치
vagrant@kube-master1:~$ sudo apt-get update
vagrant@kube-master1:~$ sudo apt-get install -y kubelet=1.19.11-00 kubeadm=1.19.11-00 kubectl=1.19.11-00
vagrant@kube-master1:~$ sudo apt-mark hold kubelet kubeadm kubectl
Control-Plane 초기화
kubeadm으로 클러스터 생성
- control-plane 초기화
vagrant@kube-master1:~$ sudo kubeadm init --control-plane-endpoint 192.168.56.11 --pod-network-cidr 10.233.0.0/16 --apiserver-advertise-address 192.168.56.11
Your Kubernetes control-plane has initialized successfully!
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
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/
You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:
kubeadm join 192.168.56.11:6443 --token e1s1aa.vnseumbldt9vq4uu \
--discovery-token-ca-cert-hash sha256:28b7199719f1409880704e77657ec30a527562501ec03870d7738c0aff5188cc \
--control-plane
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.56.11:6443 --token e1s1aa.vnseumbldt9vq4uu \
--discovery-token-ca-cert-hash sha256:28b7199719f1409880704e77657ec30a527562501ec03870d7738c0aff5188cc
- worker 노드 추가를 위해 명령어 복사
# 실행 결과 마지막 부분
kubeadm join 192.168.56.11:6443 --token e1s1aa.vnseumbldt9vq4uu \
--discovery-token-ca-cert-hash sha256:28b7199719f1409880704e77657ec30a527562501ec03870d7738c0aff5188cc
- 루트 사용자가 아닌 일반 사용자 계정으로 실행
vagrant@kube-master1:~$ mkdir -p $HOME/.kube
vagrant@kube-master1:~$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
vagrant@kube-master1:~$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
vagrant@kube-master1:~$ kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
- 노드 상태 확인
vagrant@kube-master1:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
kube-master1 Ready master 12m v1.19.11
worker 노드 추가
각각의 노드에 접속하여 노드를 클러스터에 추가
- 위에서 복사해 놓은 kubeadm join 명령으로 추가
# kube-node1
vagrant@kube-master1:~$ ssh kube-node1
vagrant@kube-node1:~$ sudo kubeadm join 192.168.56.11:6443 --token e1s1aa.vnseumbldt9vq4uu \
> --discovery-token-ca-cert-hash sha256:28b7199719f1409880704e77657ec30a527562501ec03870d7738c0aff5188cc
# kube-node2
vagrant@kube-master1:~$ ssh kube-node2
vagrant@kube-node2:~$ sudo kubeadm join 192.168.56.11:6443 --token e1s1aa.vnseumbldt9vq4uu \
> --discovery-token-ca-cert-hash sha256:28b7199719f1409880704e77657ec30a527562501ec03870d7738c0aff5188cc
# kube-node3
vagrant@kube-master1:~$ ssh kube-node3
vagrant@kube-node3:~$ sudo kubeadm join 192.168.56.11:6443 --token e1s1aa.vnseumbldt9vq4uu \
> --discovery-token-ca-cert-hash sha256:28b7199719f1409880704e77657ec30a527562501ec03870d7738c0aff5188cc
- 노드 상태 확인
vagrant@kube-master1:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
kube-master1 Ready master 17m v1.19.11
kube-node1 Ready <none> 62s v1.19.11
kube-node2 Ready <none> 36s v1.19.11
kube-node3 NotReady <none> 12s v1.19.11
728x90
'쿠버네티스 교육 > 강의 내용 정리' 카테고리의 다른 글
220621_1_k8s_파드_개념, 기본 템플릿 사용 (0) | 2022.06.21 |
---|---|
220617_5_도커_Docker Compose 설치 (0) | 2022.06.20 |
220620_3_k8s_kubespray를 이용한 쿠버네티스 클러스터 구성 (0) | 2022.06.20 |
220620_1_k8s_쿠버네티스란 (0) | 2022.06.20 |
220620_2_k8s_vagrant를 이용한 vm 준비 (0) | 2022.06.20 |