중요한건 꺾이지 않는 맥북
Kubernetes upgrade using kubespray is not changing version for nodes after upgrade 본문
Kubernetes upgrade using kubespray is not changing version for nodes after upgrade
개발허재 2024. 4. 8. 18:30
GitHub - kubernetes-sigs/kubespray: Deploy a Production Ready Kubernetes Cluster
Deploy a Production Ready Kubernetes Cluster. Contribute to kubernetes-sigs/kubespray development by creating an account on GitHub.
github.com
위 Kubespray를 통해 Kubernetes 클러스터 업그레이드를 진행하고 있었습니다.
$ ansible-playbook upgrade-cluster.yml --become -i inventory/test/inventory.ini
PLAY [localhost] *************************************************************************************************************************************
Monday 08 April 2024 17:43:11 +0900 (0:00:00.091) 0:00:00.091 **********
...
...
...
PLAY RECAP *******************************************************************************************************************************************
ds-trtis-001 : ok=635 changed=55 unreachable=0 failed=0 skipped=1233 rescued=1 ignored=1
localhost : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Monday 08 April 2024 17:52:23 +0900 (0:00:00.038) 0:09:12.333 **********
===============================================================================
kubernetes/control-plane : kubeadm | Upgrade first master ------------------------------------------------------------------------------------ 95.45s
kubernetes-apps/metrics_server : Metrics Server | Create manifests --------------------------------------------------------------------------- 12.71s
kubernetes-apps/ansible : Kubernetes Apps | Lay Down CoreDNS templates ----------------------------------------------------------------------- 11.75s
kubernetes-apps/metrics_server : Metrics Server | Create manifests --------------------------------------------------------------------------- 11.17s
kubernetes-apps/ansible : Kubernetes Apps | Lay Down CoreDNS templates ------------------------------------------------------------------------ 9.91s
kubernetes-apps/ansible : Kubernetes Apps | Start Resources ----------------------------------------------------------------------------------- 8.84s
kubernetes-apps/metrics_server : Metrics Server | Apply manifests ----------------------------------------------------------------------------- 7.85s
kubernetes-apps/ansible : Kubernetes Apps | Start Resources ----------------------------------------------------------------------------------- 7.34s
kubernetes-apps/metrics_server : Metrics Server | Apply manifests ----------------------------------------------------------------------------- 7.14s
kubernetes-apps/network_plugin/flannel : Flannel | Wait for flannel subnet.env file presence -------------------------------------------------- 5.58s
kubernetes/control-plane : Backup old certs and keys ------------------------------------------------------------------------------------------ 3.61s
download : download_container | Download image if required ------------------------------------------------------------------------------------ 3.56s
kubernetes/control-plane : Update server field in component kubeconfigs ----------------------------------------------------------------------- 3.53s
kubernetes/preinstall : Create kubernetes directories ----------------------------------------------------------------------------------------- 3.26s
etcd : Check certs | Register ca and etcd admin/member certs on etcd hosts -------------------------------------------------------------------- 2.90s
kubernetes/control-plane : Renew K8S control plane certificates monthly 1/2 ------------------------------------------------------------------- 2.86s
download : download_container | Download image if required ------------------------------------------------------------------------------------ 2.83s
kubernetes/preinstall : Create kubernetes directories ----------------------------------------------------------------------------------------- 2.82s
network_plugin/cni : CNI | Copy cni plugins --------------------------------------------------------------------------------------------------- 2.77s
etcd : Check certs | Register ca and etcd admin/member certs on etcd hosts -------------------------------------------------------------------- 2.77s
inventory 폴더 하위에 test 디렉토리를 따서 group_vars/k8s_cluster/k8s-cluster.yml 파일을 만들고 kube_version은 v1.23.0으로 세팅했었고 위 결과와 같이 정상적으로 업그레이드된 ansible playbook 결과를 얻었습니다.
kubectl, kubelet, kubeadm 이 정상적으로 바뀐것을 확인했고, kubectl 서버 버전 역시 바뀐것을 확인했습니다.
하지만!
노드는 여전히... 버전이 이전 버전을 바라보고 있는 것이었습니다......(이 후 뭔가 플레이북쪽에 문제가 있나,,, 계속 클러스터 업그레이드부분만 바꿔보고 적용하는 삽질기가 이뤄졌습니다..)
계속 클러스터 업그레이드 부분만 바꿔보고 적용하는 삽질기 끝에, which kubelet 명령어를 해봤고, kubespray는 apt 가 아닌 외부로부터 직접 /usr/local/bin 하위에 설치하는 것이 기억났습니다. 또한, 저는 이전 클러스터 구축을 apt install로 해왔고, 실행파일은 /usr/bin 경로에 저장되었던 것이었습니다.
이제부터 뭔가 문제 해결에 대한 직감을 할 수 있었습니다.
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf 파일에서, ExecStart 부분이 역시나 /usr/bin 을 바라보고 있었습니다. 따라서, 해당 경로를 /usr/local/bin으로 바꿔주고
systemctl daemon-reload && systemctl restart kubelet
시스템 데몬과 kubelet을 재시작 해줬더니 잠시후에 쿠버네티스 버전이 v1.23.0로 정상으로 바뀐 것을 확인할 수 있었습니다.
이 경험을 통해, 아무 생각 없이 정상 동작한 부분을 파헤치기 보다는, kubespray는 정상 적용됐으니 다음 부분을 단계적으로 트러블 슈팅할 수 있는 능력을 키우자라고 다짐했고, kubespray와 같은 직접 까보지 않으면 블랙박스처럼 느껴질 수 있는 오픈소스 프로젝트들을 정확히 이해하고 넘어가야한다고 느꼈습니다.
그리고 해당 이슈가 2023년에 github Issue로 등록이 됐었는데 아직 해결이 되지 않은 것 같아, 이슈에 기여를 하였습니다.
https://github.com/kubernetes-sigs/kubespray/issues/10293#issuecomment-2042238320
Kubernetes upgrade using kubespray is not changing version for nodes after upgrade · Issue #10293 · kubernetes-sigs/kubespray
I upgraded my kubernetes cluster using kubespray from v1.26.5 to v1.27.0 using the below command : ansible-playbook cluster.yml -i inventory/mycluster/hosts.yaml --become --become-user=root -u atom...
github.com
'MLOPS > kubernetes' 카테고리의 다른 글
Knative-serving 다루기 (0) | 2024.05.20 |
---|---|
AWS Load Balancer Controller 설치 (0) | 2024.04.18 |
파드를 위해 다른 DNS 설정이 필요한 경우 (2) | 2023.12.03 |
Weave net CNI error (2) | 2023.11.27 |
[Kubernetes] MIG 적용하여 A100 GPU 쪼개기 (0) | 2023.11.15 |