<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Arm on 클로이의 기술 블로그</title><link>https://chloe.ai.kr/tags/arm/</link><description>Recent content in Arm on 클로이의 기술 블로그</description><generator>Hugo -- 0.149.0</generator><language>ko-kr</language><lastBuildDate>Fri, 20 Feb 2026 18:10:00 +0900</lastBuildDate><atom:link href="https://chloe.ai.kr/tags/arm/index.xml" rel="self" type="application/rss+xml"/><item><title>ARM 서버에 Kubernetes 클러스터 구축하기 (8) - 실전 보안 (RBAC, 네트워크 정책, Pod 보안)</title><link>https://chloe.ai.kr/posts/2026-02-20-arm-server-kubernetes-part8/</link><pubDate>Fri, 20 Feb 2026 18:10:00 +0900</pubDate><guid>https://chloe.ai.kr/posts/2026-02-20-arm-server-kubernetes-part8/</guid><description>K8s 클러스터의 무중단 운영 이후, 실제 보안을 어떻게 구현하는지 다룹니다. RBAC로 권한 격리, 네트워크 정책으로 트래픽 제어, Pod 보안으로 컨테이너 보호.</description></item><item><title>ARM 서버에 Kubernetes 클러스터 구축하기 (7) - 클러스터 무중단 업그레이드 (v1.29 → v1.35)</title><link>https://chloe.ai.kr/posts/2026-02-20-arm-server-kubernetes-part7/</link><pubDate>Fri, 20 Feb 2026 13:45:00 +0900</pubDate><guid>https://chloe.ai.kr/posts/2026-02-20-arm-server-kubernetes-part7/</guid><description>&lt;h1 id="arm-서버-kubernetes-part-7-클러스터-무중단-업그레이드"&gt;ARM 서버 Kubernetes Part 7: 클러스터 무중단 업그레이드&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://chloe.ai.kr/posts/2026-02-20-arm-server-kubernetes-part6/"&gt;Part 6&lt;/a&gt;에서는 애플리케이션 Pod을 무중단으로 업그레이드했다.&lt;br&gt;
하지만 &lt;strong&gt;클러스터 자체(kubelet, kubeadm)를 업그레이드&lt;/strong&gt;할 때는 어떻게 해야 할까?&lt;/p&gt;</description></item><item><title>ARM 서버에 Kubernetes 클러스터 구축하기 (6) - 무중단 업그레이드 (Zero-Downtime Upgrade)</title><link>https://chloe.ai.kr/posts/2026-02-20-arm-server-kubernetes-part6/</link><pubDate>Fri, 20 Feb 2026 13:15:00 +0900</pubDate><guid>https://chloe.ai.kr/posts/2026-02-20-arm-server-kubernetes-part6/</guid><description>&lt;h1 id="arm-서버-kubernetes-part-6-무중단-업그레이드"&gt;ARM 서버 Kubernetes Part 6: 무중단 업그레이드&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://chloe.ai.kr/posts/2026-02-18-arm-server-kubernetes-part5/"&gt;Part 5&lt;/a&gt;에서 K8s 클러스터를 v1.29.15 → v1.35.1로 업그레이드했지만, kubelet 플래그 호환성 문제로 일시적으로 NotReady 상태가 발생했다.&lt;br&gt;
&lt;strong&gt;결과적으로 무중단이 아니었다.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>ARM 서버에 Kubernetes 클러스터 구축하기 (4) - 외부 접근 환경 (VPN + MetalLB + Ingress)</title><link>https://chloe.ai.kr/posts/2026-02-18-arm-server-kubernetes-part4/</link><pubDate>Wed, 18 Feb 2026 15:00:00 +0900</pubDate><guid>https://chloe.ai.kr/posts/2026-02-18-arm-server-kubernetes-part4/</guid><description>&lt;h1 id="arm-서버-kubernetes-part-4-외부-접근-환경-구성"&gt;ARM 서버 Kubernetes Part 4: 외부 접근 환경 구성&lt;/h1&gt;
&lt;p&gt;오늘은 KVM 가상머신 위에 구성된 K8s 클러스터에 외부 접근 환경을 만드는 작업을 했다.&lt;br&gt;
WiFi 환경이라 브리지 네트워킹이 안 되는 제약이 있었고, OpenVPN + MetalLB + Ingress 조합으로 해결했다.&lt;/p&gt;</description></item><item><title>ARM 서버에 Kubernetes 클러스터 구축하기 (3) - 모니터링 스택 (Prometheus + Grafana)</title><link>https://chloe.ai.kr/posts/2026-02-16-arm-server-kubernetes-part3/</link><pubDate>Mon, 16 Feb 2026 05:45:00 +0900</pubDate><guid>https://chloe.ai.kr/posts/2026-02-16-arm-server-kubernetes-part3/</guid><description>&lt;h2 id="들어가며"&gt;들어가며&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://chloe.ai.kr/posts/2026-02-14-arm-server-kubernetes-part2/"&gt;이전 글&lt;/a&gt;에서 3노드 Kubernetes 클러스터를 완성했습니다. 이번 글에서는 클러스터의 상태를 모니터링하기 위한 &lt;strong&gt;Prometheus + Grafana&lt;/strong&gt; 모니터링 스택을 구축하는 과정을 다룹니다.&lt;/p&gt;
&lt;h2 id="구축-목표"&gt;구축 목표&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;✅ Prometheus: 메트릭 수집 및 저장&lt;/li&gt;
&lt;li&gt;✅ Grafana: 메트릭 시각화 및 대시보드&lt;/li&gt;
&lt;li&gt;✅ PersistentVolume: 데이터 영구 보존&lt;/li&gt;
&lt;li&gt;✅ NodePort: 외부 접근 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="아키텍처-개요"&gt;아키텍처 개요&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────┐
│ Kubernetes Cluster (3 nodes) │
├─────────────────────────────────────────────────────┤
│ Master: k8s-master (&amp;lt;마스터_노드_IP&amp;gt;) │
│ Workers: k8s-worker1, k8s-worker2 │
├─────────────────────────────────────────────────────┤
│ Monitoring Namespace │
├─────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Prometheus │ │ Grafana │ │
│ │ Port 9090 │─────────│ Port 3000 │ │
│ │ Storage: 10Gi│ │ Storage: 10Gi│ │
│ └──────────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────┤
│ Services │
├─────────────────────────────────────────────────────┤
│ Prometheus: NodePort 32664 (9090) │
│ Grafana: NodePort 31211 (3000) │
└─────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="사전-준비"&gt;사전 준비&lt;/h2&gt;
&lt;h3 id="1-클러스터-상태-확인"&gt;1. 클러스터 상태 확인&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 마스터 노드에 SSH 접속&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh ubuntu@&amp;lt;마스터_노드_IP&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 클러스터 상태 확인&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get nodes -o wide
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 예상 출력&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;NAME STATUS ROLES AGE VERSION
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;k8s-master Ready control-plane 27h v1.29.15
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;k8s-worker1 Ready &amp;lt;none&amp;gt; 27h v1.29.15
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;k8s-worker2 Ready &amp;lt;none&amp;gt; 27h v1.29.15
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="2-필요한-도구-설치"&gt;2. 필요한 도구 설치&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# kubectl (이미 설치됨)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl version --client
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Helm 설치 (패키지 관리자)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 &lt;span class="p"&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;helm version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="namespace-생성"&gt;Namespace 생성&lt;/h2&gt;
&lt;p&gt;모니터링 관련 리소스를 전용 namespace에 배치합니다.&lt;/p&gt;</description></item><item><title>ARM 서버에 Kubernetes 클러스터 구축하기 (2) - VM 생성과 클러스터 설치</title><link>https://chloe.ai.kr/posts/2026-02-14-arm-server-kubernetes-part2/</link><pubDate>Sat, 14 Feb 2026 12:30:00 +0900</pubDate><guid>https://chloe.ai.kr/posts/2026-02-14-arm-server-kubernetes-part2/</guid><description>&lt;h2 id="들어가며"&gt;들어가며&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://chloe.ai.kr/posts/2026-02-14-arm-server-kubernetes-part1/"&gt;이전 글&lt;/a&gt;에서 VNC와 KVM 환경을 구축했습니다. 이번 글에서는 실제로 VM 3개를 생성하고 Kubernetes 클러스터를 설치하는 과정을 다룹니다.&lt;/p&gt;
&lt;h2 id="문제-발견-macvlan의-한계"&gt;문제 발견: macvlan의 한계&lt;/h2&gt;
&lt;p&gt;Part 1에서 WiFi 브릿지를 위해 macvlan을 설정했지만, 실제 VM에서 apt 업데이트가 불가능한 문제가 발생했습니다.&lt;/p&gt;</description></item><item><title>ARM 서버에 Kubernetes 클러스터 구축하기 (1) - VNC &amp; KVM 설치</title><link>https://chloe.ai.kr/posts/2026-02-14-arm-server-kubernetes-part1/</link><pubDate>Sat, 14 Feb 2026 09:46:00 +0900</pubDate><guid>https://chloe.ai.kr/posts/2026-02-14-arm-server-kubernetes-part1/</guid><description>&lt;h2 id="들어가며"&gt;들어가며&lt;/h2&gt;
&lt;p&gt;Kubernetes 클러스터를 학습하기 위해 ARM 서버에 KVM 가상화 환경을 구축했습니다. 이 글에서는 첫 번째 단계로 VNC 서버와 KVM 패키지 설치, 그리고 WiFi 브릿지 네트워크 설정까지 다룹니다.&lt;/p&gt;</description></item></channel></rss>