정보통신공학과 노선변경기
Kubernetes 1일차 kubeadm 이용 쿠버네티스 설치, 클러스터 생성하기 본문
*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/
각각의 구성머신에
도커설치 후
각각의 구성머신에
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 의 버전에 따라서 쿠버네티스의 버전이 결정된다