728x90
반응형
Upgrade와 Node 추가
Overview
Kubernetes 업그레이드 시 진행한 절차 및 주의사항 등 기록
과거 설치한 Kubespray가 k8s 버전을 어디까지 지원하는지 확인
# 현재 git branch가 kubespray release 몇 버전을 바라보는지 확인 git branch * (HEAD v2.23.0 위치에서 분리됨) master # git tag 명령어로 몇 버전까지 가지고 있는지 확인 git tag
kubespary의 github으로 가서 release와 k8s 지원되는 버전 확인 (https://github.com/kubernetes-sigs/kubespray/tree/master)
과거 다운받은 repo에 대해서 업데이트
# 업데이트 명령 git remote update # 현재 branch 확인 git branch # 신규 버전의 브랜치로 checkout (전환) git checkout v2.23.0 # 현재 branch 확인 git branch # remote repo 확인 git remote -v # 다운받은 repo에 대해 소스 업데이트 git pull origin v2.23.0
파이썬 3.11로 전환
# 기존 python3.6 버전에 대해서 다른 곳에서 사용중이다. kube-deploy # sudo update-alternatives --config python 3 개의 프로그램이 'python'를 제공합니다. 선택 명령 ----------------------------------------------- * 1 /usr/libexec/no-python 2 /usr/bin/python3 + 3 /usr/local/Python311/bin/python3.11 # 업데이트 된 requirement 설치 python3.11 -m pip install -r ~/kubespary/requirements.txt
업그레이드 명령 수행 전 주의사항
ㅇ 추후 노드 추가 했을 경우(Sacle-out) 추가한 노드에 대해서도 업그레이드 전에 inventory.ini 업데이트 해주어야 함
ㅇ 처음에 설치 할 때 설정 했던 group_vars나 addon의 설정 값이 운영하면서 변경 됐을 경우 업그레이드 전에 미리 파일에 맞춰주어야 한다. (실제 운영중인 yaml 내용과 kubespary의 내용) 안 그러면 업그레이드 후에 group_vars 값으로 되돌아 감
ㅇ containerd의 경로를 실제 운영 중인 경로와 group_vars/containerd yaml 파일안에 경로를 일치 시켜야 함
ㅇ 업그레이드 전 백업 용도로 Snapshot 찍어야 한다.
업그레이드 명령 수행
# inventory에 마스터노드와 워커노드의 리스트들이 있을 것이다. # -e flag 로 원하는 버전에 대해 명시 su - kube-deploy cd kubespary ansible-playbook upgrade-cluster.yml -b -i inventory/inventory.ini -e kube_version=v1.26.8
노드 추가 시 진행 절차
# Inventory.ini 파일에 새로 추가된 노드 정보를 넣어준다. [all] master-dev1 ansible_host=1.2.3.4 master-dev2 ansible_host= master-dev3 ansible_host= node-dev1 ansible_host= node-dev2 ansible_host= node-dev3 ansible_host=
[kube_control_plane]
master-dev1
master-dev2
master-dev3
[etcd]
master-dev1
master-dev2
master-dev3
[kube_node]
node-dev1
node-dev2
node-dev3
all-node-dev1
all-node-dev2
all-node-dev3
all-node-dev4
all-node-dev5
all-node-dev6
all-node-dev7
all-node-dev8
all-node-dev9
[add_node]
all-node-dev1
all-node-dev2
all-node-dev3
all-node-dev4
all-node-dev5
all-node-dev6
all-node-dev7
all-node-dev8
all-node-dev9
[calico_rr]
[k8s_cluster:children]
kube_control_plane
kube_node
```
---
- 명령어 수행
# 추가할 노드가 많을 경우 -limit flag를 사용하여 새로 추가된 노드만 넘길 때 유용하다.
ansible-playbook scale.yml -b -i inventory/inventory.ini --limit add_node -e kube_version=v1.26.8
```
728x90
300x250
'IT > Kubernetes' 카테고리의 다른 글
Kubernetes API Server LB 세팅 (0) | 2023.11.10 |
---|---|
kubeconfig를 통해 다른서버 접근 (2) | 2023.11.09 |
Cluster Autoscaler의 개념과 구성 방법 및 검증 방법 (0) | 2023.07.26 |
AWS LoadBalancer Controller 개념과 설치 구성 방법 (0) | 2023.07.26 |
카오스 엔지니어링의 개념, Tool, 이점 (0) | 2023.07.21 |