DevOps 36

CKA 예제 리마인더 - 19. Cluster Upgrade Process

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/controlplane 노드를 1.31.0 버전으로 업그레이드 하세요 Controlplane Node Upgraded to v1.31.0 Controlplane Kubelet Upgraded to v1.31.0 kubectl drain controlplane --ignore-daemonsets sudo apt update 에러 발생 W: GPG error: https://prod-cdn.packages.k8s.io/repositories/isv:/kubernetes:/core:/stable:/v1.30/deb InRelease: The following signature..

DevOps 2024.11.03

Kubernetes - upgrade 간략한 요약

upgrade 클러스터 업그레이드 kubectl을 제외한 kube-scheduler, controller-manager, kubelet, kube-proxy는 kube-apiserver보다 높은 버전을 가질 수 없다 kubeadm upgrade plan 으로 업그레이드 가능한 버전을 확인할 수 있다 kubeadm 업그레이드 apt-get upgrade -y kubeadm=1.12.0-00 kubeadm upgrade apply v1.12.0 kubelet 업그레이드 kubectl get nodes 의 VERSION에서 버전 확인 가능 apt-get upgrade -y kubelet=1.12.0-00 systemctl restart kubelet 노드 업그레이드 kubectl drain node01 apt..

DevOps 2024.11.03

Kubernetes - upgrade

쿠버네티스 클러스터 업그레이드는 쿠버네티스 버전을 최신 버전으로 올려 안정성, 보안, 성능 향상을 가져오는 과정입니다. 주로 kubeadm 도구를 사용하여 업그레이드하며, 마스터 노드와 워커 노드를 순서대로 업그레이드합니다. 아래는 일반적인 업그레이드 절차입니다.1. 사전 준비버전 확인: 업그레이드할 대상 쿠버네티스 버전을 확인합니다. 쿠버네티스 버전 정책상, 한 번에 1개의 마이너 버전만 업그레이드할 수 있습니다 (예: 1.24에서 1.25로).호환성 확인: 업그레이드할 쿠버네티스 버전과 함께 사용하는 플러그인이나 애드온이 호환되는지 확인합니다.백업: etcd 데이터베이스와 중요한 리소스를 백업해 둡니다.2. 업그레이드 가능한 버전 계획 확인 (kubeadm upgrade plan)bash코드 복사su..

DevOps 2024.11.03

Kubernetes - drain, cordon, uncordon

kubectl drain, cordon, uncordon은 쿠버네티스 노드의 상태를 조정하고 관리하기 위한 명령어입니다. 주로 노드에서 유지보수 작업이나 업그레이드가 필요할 때 사용되며, 파드가 안전하게 옮겨지거나 배치되지 않도록 도와줍니다.1. kubectl cordon기능: 노드를 스케줄링 불가 상태로 만듭니다. 이 상태에서는 새로운 파드가 해당 노드에 스케줄링되지 않습니다.용도: 유지보수가 필요하거나 더 이상 파드를 배포하지 않을 노드를 잠시 제외할 때 사용합니다.예시: 이 명령을 실행하면 해당 노드에 "SchedulingDisabled" 상태가 표시됩니다.kubectl cordon 2. kubectl uncordon기능: cordon 상태에서 해제하여 노드를 스케줄링 가능 상태로 만듭니다.용도: ..

DevOps 2024.11.03

CKA 예제 리마인더 - 18. OS Upgrades

node01 에서 모든 파드를 drain 하세요 kubectl drain node01 >> 에러 발생 error: unable to drain node "node01" due to error: cannot delete DaemonSet-managed Pods (use --ignore-daemonsets to ignore): kube-flannel/kube-flannel-ds-82srt, kube-system/kube-proxy-9ql66, continuing command... There are pending nodes to be drained:  node01 cannot delete DaemonSet-managed Pods (use --ignore-daemonsets to ignore): kube-fl..

DevOps 2024.11.03

CKA 예제 리마인더 - 17. Multi Container PODs

컨테이너 2개를 가진 멀티컨테이너파드를 만드세요 만약 파드가 crashloopbackoff 상태라면 sleep 1000 명령을 레몬 컨테이너에 추가하세요 Name: yellow Container 1 Name: lemon Container 1 Image: busybox Container 2 Name: gold Container 2 Image: redis kubectl run yellow --image=busybox --dry-run=client -o yaml > ./yellow.yaml 생성된 yaml apiVersion: v1kind: Podmetadata: creationTimestamp: null labels: run: yellow name: yellowspec: containers: ..

DevOps 2024.11.02

Kubernetes - Secret, ConfigMap

쿠버네티스에서 **시크릿(Secret)**은 암호, API 키, 인증 토큰 등 민감한 정보를 안전하게 저장하고 배포하는 리소스입니다. 시크릿을 사용하면 애플리케이션 코드를 수정하지 않고도 민감한 정보를 안전하게 파드에 전달할 수 있습니다.시크릿의 주요 개념기밀 데이터 보호: 시크릿은 비밀번호, API 키, 인증 토큰 같은 민감한 정보를 Base64 인코딩하여 저장합니다.파드와 시크릿 연결: 시크릿을 파드에 마운트하여 환경 변수로 주입하거나 파일 시스템 볼륨으로 마운트할 수 있습니다.시크릿 유형: 다양한 유형의 시크릿이 있으며, Opaque가 일반적으로 사용됩니다.시크릿 종류Opaque: 기본적으로 사용되는 유형으로, 커스텀 데이터를 담을 수 있습니다.kubernetes.io/service-account-..

DevOps 2024.11.02

CKA 예제 리마인더 - 13. Rolling Updates and Rollbacks

롤링업데이트를 하는 디플로이를 생성하세요 apiVersion: apps/v1kind: Deploymentmetadata: annotations: deployment.kubernetes.io/revision: "1" creationTimestamp: "2024-10-30T16:55:55Z" generation: 1 name: frontend namespace: default resourceVersion: "905" uid: 4e331b0d-b765-4487-ab01-a84a98340324spec: minReadySeconds: 20 progressDeadlineSeconds: 600 replicas: 4 revisionHistoryLimit: 10 selector: matc..

DevOps 2024.10.31