Notice
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

정보통신공학과 노선변경기

Kubernetes 1일차 kubeadm 이용 쿠버네티스 설치, 클러스터 생성하기 본문

Sub7_Kubernetes

Kubernetes 1일차 kubeadm 이용 쿠버네티스 설치, 클러스터 생성하기

HEONPOLI 2021. 7. 19. 22:45

*Cluster

HP,HA 두종류의 클러스터

high performance, high availability(고 가용성)

일반적으로 클러스터는 HA 클러스터를 말한다

 

시스템 클러스터: 여러개의 시스템을 하나로 묶어주는 것

 

ex) 도커시스템을 하나의 논리적인 클러스터로 묶어주는 것 ==== 컨테이너

컨테이너 클러스터를 묶어 관리해주는 controller ==== 쿠버네티스, Container Orchestration

개별로 시스템을 관리하려면 힘들기 때문에 클러스터로 묶어서 처리..

 

 

*쿠버네티스

1)컨트롤 플레인

고가용성 때문에 3대이상 구축하는 것이 일반적

컨트롤 플레인도 노드의 기능을 갖고있다. 모든 시스템은 노드이다

*API서버 = 모든 요소들의 frontend 역할, kubectl이 요청을 보내는 서버

*etcd(etc daemon) = 데이터베이스이자 스토리지, 키-value 스토리지, 꼭 etcd를 사용하지 않아도 되지만 보편적으로 많이 사용한다.

*cm(controller manager) 

*ccm(cloud controller manage)

2)노드

노드마다 기본적으로 도커가 설치된다

*kubelet

*kube-proxy

*CRI(container runtime interface)



**쿠버네티스 설치

kubeadm 를 통해 설치

kubectl 은 client 이다

 

Vagrant.configure("2") do |config|

   config.vm.define "docker" do |ubuntu|

   ubuntu.vm.box = "ubuntu/focal64"

   ubuntu.vm.hostname = "docker"

   ubuntu.vm.network "private_network", ip: "192.168.200.30"

   ubuntu.vm.provider "virtualbox" do |vb|

   vb.name = "docker"

           vb.cpus = 2

           vb.memory = 4096

      end

  end

 end

 

VM4 대 구성 k-control, k-node1, k-node2, k-node3 

https://docs.docker.com/engine/install/ubuntu/

각각의 구성머신에 

도커설치 후

https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#kubeadm-kubelet-%EB%B0%8F-kubectl-%EC%84%A4%EC%B9%98

각각의 구성머신에 

kubeadm 설치 

 

kubeadm version

kubectl version

kubelet --version 으로 확인 




*클러스터 생성하기

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

 

[control-plane 가상머신에서

sudo kubeadm init --control-plane-endpoint 192.168.200.50 --pod-network-cidr 192.168.0.0/16 --apiserver-advertise-address 192.168.200.50

api서버의 주소를 입력하는 것임

 

calico 를 사용할건데 calico에서 사용하는 대역대가 192.168.0.0/16 이어서 위에 저렇게 해준거

 

root user가 아닌 유저에서도 kubectl 사용가능하게 해주는 명령ㅇㅓ

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config



Installing a Pod network add-on 항목을 위해 yaml 파일이 필요함, 강의에서는 calico network 를 사용함

https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises

참고

 

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

 

Joining your nodes 노드 조인하기 k-node1~3 에 join 명령어를 수행하여주면 된다. 클러스터에 조인시키는 것 kubectl init 의 결과로 나온 join 문장이 있는데 그것을 노드에 복사

 

sudo kubeadm join 192.168.200.50:6443 --token f1ldb6.rlkerwqf47t9irxm --discovery-token-ca-cert-hash sha256:d171092f31efd79121bd0d4fca5daf9564d3500a17fd9ceab0e9ba109f5157cf

 

token값은 어떻게 찾냐? ⇒ kubeadm token list 로 확인

hash 값은 어떻게 찾냐? ⇒ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \

   openssl dgst -sha256 -hex | sed 's/^.* //'



sudo apt-cache madison kubeadm #설치 가능한 버전 확인

 

kubeadm | 1.18.19-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages

버전으로 재설치하기..

 

sudo apt insatll kubeadm=1.18.19-00 kubectl=1.18.19-00 kubelet=1.18.19-00

kubeadm 의 버전에 따라서 쿠버네티스의 버전이 결정된다