728x90
반응형

Upgrade와 Node 추가

Overview

Kubernetes 업그레이드 시 진행한 절차 및 주의사항 등 기록

  1. 과거 설치한 Kubespray가 k8s 버전을 어디까지 지원하는지 확인

     # 현재 git branch가 kubespray release 몇 버전을 바라보는지 확인
     git branch
     * (HEAD v2.23.0 위치에서 분리됨)
       master
    
     # git tag 명령어로 몇 버전까지 가지고 있는지 확인
     git tag

  2. kubespary의 github으로 가서 release와 k8s 지원되는 버전 확인 (https://github.com/kubernetes-sigs/kubespray/tree/master)

  3. 과거 다운받은 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

  4. 파이썬 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

  5. 업그레이드 명령 수행 전 주의사항

    ㅇ 추후 노드 추가 했을 경우(Sacle-out) 추가한 노드에 대해서도 업그레이드 전에 inventory.ini 업데이트 해주어야 함

    ㅇ 처음에 설치 할 때 설정 했던 group_vars나 addon의 설정 값이 운영하면서 변경 됐을 경우 업그레이드 전에 미리 파일에 맞춰주어야 한다. (실제 운영중인 yaml 내용과 kubespary의 내용) 안 그러면 업그레이드 후에 group_vars 값으로 되돌아 감

    ㅇ containerd의 경로를 실제 운영 중인 경로와 group_vars/containerd yaml 파일안에 경로를 일치 시켜야 함

    ㅇ 업그레이드 전 백업 용도로 Snapshot 찍어야 한다.


  6. 업그레이드 명령 수행

     # inventory에 마스터노드와 워커노드의 리스트들이 있을 것이다.
     # -e flag 로 원하는 버전에 대해 명시
    
     su - kube-deploy
    
     cd kubespary
    
     ansible-playbook upgrade-cluster.yml -b -i inventory/inventory.ini -e kube_version=v1.26.8

  7. 노드 추가 시 진행 절차

     # 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
```

---
  1. 명령어 수행
    # 추가할 노드가 많을 경우 -limit flag를 사용하여 새로 추가된 노드만 넘길 때 유용하다.
    

ansible-playbook scale.yml -b -i inventory/inventory.ini --limit add_node -e kube_version=v1.26.8
```

728x90
300x250

+ Recent posts