Worker node 추가
1. Vagrantfile VM 추가 (cpu:2, mem:2G)
2. Docker 설치
3. kubeadm, kubectl, kubelet 설치 (1.22.8 ver.)
4. kubeadm join xxx (worker에서 실행)
5. kubeadm get nodes (master에서 실행)
worker VM 생성
config.vm.define "worker" do |ubuntu|
ubuntu.vm.box = "ubuntu/focal64"
ubuntu.vm.hostname = "worker"
ubuntu.vm.network "private_network", ip: "192.168.100.101"
ubuntu.vm.provider "virtualbox" do |vb|
vb.name = "worker"
vb.cpus = 2
vb.memory = 2048
end
end
vagrant up worker
vagrant ssh worker
worker VM에 docker 설치
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
docker의 GPG key 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
저장소 추가
echo \
"deb [arch=$(dpkg --print-architecture) 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 docker-compose-plugin
docker 그룹에 추가
sudo usermod -aG docker vagrant
kubeadm, kubectl, kubelet 설치 (1.22.8 ver.)
sudo apt-get install -y apt-transport-https ca-certificates curl
GPG key 추가
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 kubeadm=1.22.8-00 kubelet=1.22.8-00 kubectl=1.22.8-00 -y
k8s cluster join
sudo kubeadm join --token <token> <control-plane-host>:<control-plane-port> \
--discovery-token-ca-cert-hash sha256:<hash>
* 참고 : Creating a cluster with kubeadm | Kubernetes
Creating a cluster with kubeadm
Using kubeadm, you can create a minimum viable Kubernetes cluster that conforms to best practices. In fact, you can use kubeadm to set up a cluster that will pass the Kubernetes Conformance tests. kubeadm also supports other cluster lifecycle functions, su
kubernetes.io
쿠버네티스 클러스터 업그레이드
* 참고 : 버전 차이(skew) 정책 | Kubernetes
버전 차이(skew) 정책
다양한 쿠버네티스 구성 요소 간에 지원되는 최대 버전 차이
kubernetes.io
각각의 component들은 각각 version을 갖고 있음
* version을 upgrade 한다 = image를 교체한다 (*kubelet을 제외한 components는 container로 구성되어있기 때문에)
= image만 교체하는 방법이 없기 때문에 기존 container를 지우고 새로운 version의 image를 가진 container를 생성해야 함 → downtime 발생
** kubelet은 kube-apiserver보다 최신일 수 x (=kubelet 보다 kube-apiserver를 먼저 upgrade 필요) & 2단계 낮은 version까지만 허용
upgrade 우선순위
1. kube-apiserver
2. kube-controller-manager, kube-cloud-controller-manage, kube-scheduler
3. kubelet (Control Plane → Worker Node)
4. kube-proxy (Control Plane → Worker Node)
Control Plane (api → cm, ccm, sched → let,proxy) → Work Node (let, proxy)
Ubuntu 패키지 저장소 변경 (더 빠른 네트워크 연결을 위해)
> sed -i 's/security.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
> sed -i 's/archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
> sudo apt update
kubeadm 업그레이드
1. Control Plane의 kubeadm 업그레이드
2. Control Plane의 kubeadm으로 api, cm, sched 업그레이드
3. Control Plane의 kubelet, kubectl 업그레이드
4. Work Node의 kubeadm 업그레이드
5. Work Node의 kubeadm으로 업그레이드
6. Work Node의 kubelet, kubectl 업그레이드
- Control Plane
kubeadm upgrade
sudo apt-mark unhold kubeadm
sudo apt update
sudo apt upgrade kubeadm=1.22.9-00 -y
kubeadm version
sudo apt-mark hold kubeadm
sudo kubeadm upgrade plan
sudo kubeadm upgrade apply v1.22.9
kubelet, kubectl upgrade
sudo apt-mark unhold kubelet kubectl
sudo apt upgrade kubectl=1.22.9-00 kubelet=1.22.9-00 -y
sudo apt-mark hold kubelet kubectl
kubelet --version
kubectl version
drain 작업 (원래는 진행하는데 지금은 필요없으니 생략)
sudo systemctl daemon-reload
sudo systemctl restart kubelet
uncordon (온라인 상태로 전환) 작업 (원래는 진행하는데 지금은 필요없으니 생략)
systemctl status kubelet
- Work Node
kubeadm upgrade
sudo apt-mark unhold kubeadm
sudo apt update
sudo apt upgrade kubeadm=1.22.9-00 -y
kubeadm version
sudo apt-mark hold kubeadm
sudo kubeadm upgrade node
drain 작업
kubelet, kubectl upgrade
sudo apt-mark unhold kubelet kubectl
sudo apt upgrade kubectl=1.22.9-00 kubelet=1.22.9-00 -y
sudo apt-mark hold kubelet kubectl
kubelet --version
kubectl version
sudo systemctl daemon-reload
sudo systemctl restart kubelet
uncordon 작업
* 참고 : kubeadm 클러스터 업그레이드 | Kubernetes
kubeadm 클러스터 업그레이드
이 페이지는 kubeadm으로 생성된 쿠버네티스 클러스터를 1.23.x 버전에서 1.24.x 버전으로, 1.24.x 버전에서 1.24.y(여기서 y > x) 버전으로 업그레이드하는 방법을 설명한다. 업그레이드가 지원되지 않는
kubernetes.io
'IT > Kubernetes' 카테고리의 다른 글
[Kubernetes] Namespace, Label & LabelSelector, Annotations (0) | 2022.05.17 |
---|---|
[Kubernetes] Workload - Pods (0) | 2022.05.17 |
[Kubernetes] Kubernetes Objects (0) | 2022.05.17 |
[Kubernetes] Kubespray로 쿠버네티스 설치하기 (0) | 2022.05.17 |
[Kubernetes] Kubernetes Architecture 및 설치 & Tips (0) | 2022.05.16 |