7/6 Kubernetes 설치 및 Cluster 만들기 실습
- -
클러스터 : 여러개의 오브젝트를 하나로 묶은것
클러스터링 : 클러스터를 하는것
시스템 클러스터 : 시스템을 하나로 묶어주는것
*방식 2가지
hp(high performance): 여러개의 시스템을 묶어서 고성능의 성능을 내는것. 대용량의 작업을 여러개의 시스템이 하는것. 슈퍼컴퓨터가 그 예시
ha(high availiability): 고 가용성
웹서버와 웹어플리케이션서버 구분할 줄 알아야함
*Web Browser
- html, css, js, picture (client side)-> 얘네를 렌더링 하는것, 보기좋게 비쥬얼라이징 해줌
*Web Server 정적(static) 인 컨텐츠 -> 같은것만 보여줌
-apache
-nginx
-IIS
- html, css, js, pictures
*Web Application Server(WAS): 어플리케이션 서버는 앱을 실행시키는 역할, 동적인 컨텐츠
-tomcat(WAS의 기능에 부합하지 않음: web container)
-Web logic
-Web Sphere
...
-apache/nginx + module
(server side)
-JSP/Sevlet
-Python(Django, Flask)
-Ruby(Ruby on Rails)
-.net(ASP.net) - ASP
-node.js(javascript)
...
Developer Roadmaps
Community driven roadmaps, articles, guides, quizzes, tips and resources for developers to learn from, identify their career paths, know what they don't know, find out the knowledge gaps, learn and improve.
roadmap.sh
CNCF Cloud Native Interactive Landscape
This landscape is intended as a map through the previously uncharted terrain of cloud native technologies. There are many routes to deploying a cloud native application, with CNCF Projects representing a particularly well-traveled path.
landscape.cncf.io
노드는 컨테이너를 실행하는 컨테이너 시스템
https://kubernetes.io/docs/concepts/overview/components/
Kubernetes Components
A Kubernetes cluster consists of the components that represent the control plane and a set of machines called nodes.
kubernetes.io
https://github.com/kelseyhightower/kubernetes-the-hard-way
kelseyhightower/kubernetes-the-hard-way
Bootstrap Kubernetes the hard way on Google Cloud Platform. No scripts. - kelseyhightower/kubernetes-the-hard-way
github.com
https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
kubeadm 설치하기
이 페이지에서는 kubeadm 툴박스를 설치하는 방법을 보여준다. 이 설치 프로세스를 수행한 후 kubeadm으로 클러스터를 만드는 방법에 대한 자세한 내용은 kubeadm을 사용하여 클러스터 생성하기 페이
kubernetes.io
cd vagrant/
mkdir k8s
cd k8s
code Vagrantfile
vagrant up
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define "k-control" do |ubuntu|
ubuntu.vm.box = "ubuntu/focal64"
ubuntu.vm.hostname = "k-control"
ubuntu.vm.network "private_network", ip: "192.168.200.50"
ubuntu.vm.provider "virtualbox" do |vb|
vb.name = "k-control"
vb.cpus = 2
vb.memory = 3000
end
end
config.vm.define "k-node1" do |ubuntu|
ubuntu.vm.box = "ubuntu/focal64"
ubuntu.vm.hostname = "k-node1"
ubuntu.vm.network "private_network", ip: "192.168.200.51"
ubuntu.vm.provider "virtualbox" do |vb|
vb.name = "k-node1"
vb.cpus = 2
vb.memory = 3000
end
end
config.vm.define "k-node2" do |ubuntu|
ubuntu.vm.box = "ubuntu/focal64"
ubuntu.vm.hostname = "k-node2"
ubuntu.vm.network "private_network", ip: "192.168.200.52"
ubuntu.vm.provider "virtualbox" do |vb|
vb.name = "k-node2"
vb.cpus = 2
vb.memory = 3000
end
end
config.vm.define "k-node3" do |ubuntu|
ubuntu.vm.box = "ubuntu/focal64"
ubuntu.vm.hostname = "k-node3"
ubuntu.vm.network "private_network", ip: "192.168.200.53"
ubuntu.vm.provider "virtualbox" do |vb|
vb.name = "k-node3"
vb.cpus = 2
vb.memory = 3000
end
end
end
(설치 참고: https://docs.docker.com/engine/install/ubuntu/)
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
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
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
-----------------------------------------------------------------------------------
*kubeadm, kubelet 및 kubectl 설치(k-control, k-node1...각각 들어가서 설치)
(설치 참고: https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/)
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
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
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
* k-control
(https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/)
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
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
ls -l ~/.kube/config
-rw------- 1 vagrant vagrant 5594 Jul 6 06:44 /home/vagrant/.kube/config
(https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
kubectl get nodes -> ready 상태인지 확인
kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
bkoyxl.3aht0jk9ws0d4nfj 23h 2021-07-07T06:42:57Z authentication,signing The default bootstrap token generated by 'kubeadm init'. system:bootstrappers:kubeadm:default-node-token
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
> openssl dgst -sha256 -hex | sed 's/^.* //'
015ac96083dbcdeece03ff30344df57cf26c0785570975dbeece3c90f0eff824
*k-node123 가서 명령어 입력
(ubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash>)
sudo kubeadm join 192.168.200.50:6443 --token bkoyxl.3aht0jk9ws0d4nfj --discovery-token-ca-cert-hash sha256:015ac96083dbcdeece03ff30344df57cf26c0785570975dbeece3c90f0eff824
*다시 k-control 가서 노드 확인
kubectl get nodes
*cka (쿠버네티스 자격증)->설치 업그레이드 할줄알아야함 안그러면 빵점
sudo apt-cache madison kubeadm
sudo apt install kubeadm=1.18.19-00 kubectl=1.18.19-00 kubelet=1.18.19-00
*sudo kubeadm reset
*리셋말고 vagrant destroy -f 해서 다시 설치
sudo apt install kubeadm=1.18.19-00 kubectl=1.18.19-00 kubelet=1.18.19-00
*노드 확인시 계속 not ready 상태일 경우 k-control, k-node123 전부 이대로 pull 해주기
sudo docker login
sudo docker pull calico/node:v3.19.1
sudo docker pull calico/pod2daemon-flexvol:v3.19.1
sudo docker pull calico/cni:v3.19.1
sudo docker pull calico/kube-controllers:v3.19.1
kubectl get nodes -> k-control 에서 확인
'Kubernetes' 카테고리의 다른 글
7/13 Storage (0) | 2021.07.13 |
---|---|
kube 설치 및 노드 업그레이드 (0) | 2021.07.12 |
7/9 데몬셋, 잡 컨트롤러, metal lb 등 실습 (0) | 2021.07.09 |
7/8 레플리카셋, 수평 스케일링, 디플로이먼트 등 실습 (0) | 2021.07.08 |
7/7 kubeadm, kubelet, kubectl (0) | 2021.07.07 |
소중한 공감 감사합니다