본문으로 건너뛰기

Project CNCF

"Project CNCF"의 모든 글.

  • kubectl top으로 리소스 사용량을 보고, kubectl logs의 컨테이너 선택·이전 컨테이너·stdout/stderr와 노드의 로그 파일 위치를 확인하고, Service selector·targetPort·readiness·CoreDNS·NetworkPolicy를 하나씩 망가뜨려 증상을 비교했습니다.

  • kubelet과 containerd를 멈추고, kubelet 설정과 static Pod manifest를 일부러 망가뜨린 뒤 kubectl, systemctl, journalctl, crictl, /var/log/pods로 원인을 찾는 과정을 kubeadm 클러스터에서 기록했습니다.

  • GatewayClass, Gateway, HTTPRoute의 역할 분리, host·path·header 매칭과 가중치 분할, 다른 namespace의 Route와 backend를 허용하는 allowedRoutes와 ReferenceGrant, 그리고 Ingress와의 차이를 NGINX Gateway Fabric과 ingress-nginx를 설치한 kubeadm 클러스터에서 확인했습니다.

  • Kubernetes 네트워크 모델, 노드 사이 Pod 통신, kube-proxy가 Service를 iptables 규칙으로 바꾸는 모습, NodePort와 LoadBalancer, CoreDNS의 Corefile 수정과 Pod dnsPolicy를 kubeadm + Calico 클러스터에서 직접 확인했습니다.

  • metrics-server가 HPA에 CPU 사용량을 주는 흐름, kubectl autoscale과 autoscaling/v2 HPA, 부하를 걸었을 때 늘어나고 부하를 뺐을 때 5분 뒤 줄어드는 과정, VPA와의 차이를 kubeadm 클러스터에서 정리했습니다.

  • nodeName, nodeSelector, node affinity, taint와 toleration, Pod anti-affinity, topology spread constraint, PriorityClass와 preemption을 worker 2대짜리 kubeadm 클러스터에서 직접 배치해 보며 정리했습니다.

  • kubelet과 container runtime 사이의 CRI, Pod 네트워크를 붙이는 CNI, 스토리지를 붙이는 CSI가 노드의 어디에 설정되어 있는지 확인하고, Helm과 Kustomize로 클러스터 컴포넌트를 설치하고, Operator가 CRD로 컴포넌트를 관리하는 방식을 kubeadm 클러스터에서 정리했습니다.

  • Kubernetes에 User 객체가 없다는 것에서 시작해, CertificateSigningRequest로 사용자 인증서를 발급하고 kubeconfig에 넣는 과정, ClusterRole을 RoleBinding과 ClusterRoleBinding에 붙였을 때의 차이, aggregated ClusterRole과 기본 ClusterRole을 kubeadm 클러스터에서 확인했습니다.

  • version skew 규칙, kubeadm으로 1.34에서 1.35로 올리는 순서와 drain/uncordon, etcdctl·etcdutl로 하는 etcd 백업과 복원, kubeadm 인증서 확인과 갱신을 VM 클러스터에서 직접 실행하며 정리했습니다.

  • 노드 준비(swap, sysctl, containerd cgroup driver)부터 kubeadm init/join, CNI 설치, 그리고 kube-vip로 묶은 stacked etcd HA control plane까지 VM 3대에서 직접 실행하며 정리했습니다.