<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>쿠버네티스 설치 Archives -</title>
	<atom:link href="https://blog.kwt.co.kr/tag/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%84%A4%EC%B9%98/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.kwt.co.kr/tag/쿠버네티스-설치/</link>
	<description>여러분의 돈과 시간을 낭비하지마세요.</description>
	<lastBuildDate>Sat, 05 Oct 2024 14:37:29 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>

<image>
	<url>https://blog.kwt.co.kr/wp-content/uploads/2022/07/cropped-logo_bg-32x32.jpg</url>
	<title>쿠버네티스 설치 Archives -</title>
	<link>https://blog.kwt.co.kr/tag/쿠버네티스-설치/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>쿠버네티스 설치 (무지성 복붙)</title>
		<link>https://blog.kwt.co.kr/%ec%bf%a0%eb%b2%84%eb%84%a4%ed%8b%b0%ec%8a%a4-%ec%84%a4%ec%b9%98-%eb%ac%b4%ec%a7%80%ec%84%b1-%eb%b3%b5%eb%b6%99/</link>
					<comments>https://blog.kwt.co.kr/%ec%bf%a0%eb%b2%84%eb%84%a4%ed%8b%b0%ec%8a%a4-%ec%84%a4%ec%b9%98-%eb%ac%b4%ec%a7%80%ec%84%b1-%eb%b3%b5%eb%b6%99/#respond</comments>
		
		<dc:creator><![CDATA[시간 조절자]]></dc:creator>
		<pubDate>Sat, 31 Aug 2024 07:52:22 +0000</pubDate>
				<category><![CDATA[기술]]></category>
		<category><![CDATA[쿠버네티스]]></category>
		<category><![CDATA[몇번째인지]]></category>
		<category><![CDATA[쿠버네티스 설치]]></category>
		<guid isPermaLink="false">https://kwt.co.kr/?p=775</guid>

					<description><![CDATA[<p>쿠버네티스 설치 복잡하다. 노드니 클러스터니 이론적인 것을 보는 것보다 설치부터 해보고 싶은 사람이 있을거라고 생각한다. (내가 그런 사람이라) 쿠버네티스 설치 전 참고 쿠버네티스는 단일 노드 클러스터로도 구축이 가능하다. 정리된 명령어를 준비된 환경에 갖다 붙여넣기만 하면 클러스터를 만드는 것까지는 크게 어렵지 않을 것이다. Ubuntu Server 24.04 LTS 를 설치하고 아무것도 설치되지 않은 환경을 가정한다. 각 코드 [&#8230;]</p>
<p>The post <a href="https://blog.kwt.co.kr/%ec%bf%a0%eb%b2%84%eb%84%a4%ed%8b%b0%ec%8a%a4-%ec%84%a4%ec%b9%98-%eb%ac%b4%ec%a7%80%ec%84%b1-%eb%b3%b5%eb%b6%99/">쿠버네티스 설치 (무지성 복붙)</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>쿠버네티스 설치 복잡하다. 노드니 클러스터니 이론적인 것을 보는 것보다 설치부터 해보고 싶은 사람이 있을거라고 생각한다. (내가 그런 사람이라)</p>





<h2 class="wp-block-heading">쿠버네티스 설치 전 참고</h2>



<p>쿠버네티스는 단일 노드 클러스터로도 구축이 가능하다. 정리된 명령어를 준비된 환경에 갖다 붙여넣기만 하면 클러스터를 만드는 것까지는 크게 어렵지 않을 것이다.</p>



<p><a href="https://ubuntu.com/download/server">Ubuntu Server 24.04 LTS</a> 를 설치하고 아무것도 설치되지 않은 환경을 가정한다.</p>



<p>각 코드 박스에 있는 # 주석은 참고 정도하고 무시하면 된다. (나중에 내 기억을 더듬기 위한 주석 정도로)<br>빠른 설치를 위한 쿡북 정도로 보면 되고 올바른 테크트리를 원하는 참 개발자는 <a href="https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/">공식 문서</a>를 참고하여 설치하길 바란다.</p>



<h2 class="wp-block-heading">쿠버네티스 설치</h2>



<h3 class="wp-block-heading">설치 전 준비</h3>



<pre class="wp-block-code"><code>sudo apt update
sudo apt upgrade -y

# 설치 전 환경설정
# 1. Swap 끄기 (kubernetes는 기본적으로 swap 기능을 끄는걸 권장이 아닌 강제함)
sudo swapoff -a &amp;&amp; sudo sed -i '/swap/s/^/#/' /etc/fstab

# 2. 방화벽 끄고 사용하지 않기 master, worker node간 통신 문제가 발생할 수 있음.
sudo systemctl stop firewalld
sudo systemctl disable firewalld

# 3. iptable bridge 설정
cat &lt;&lt;EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">containerd 설치</h3>



<pre class="wp-block-code"><code>### containerd 설치 ###
# 계속 오류가 났던건.. containerd 가 설치되어있지 않았기 떄문이었다.
sudo apt-get install -y containerd

# 모든 worker node 에서도 containerd config.toml 파일 설정
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml

# containerd 옵션 수정 SystemdCgroup = true
# 직접 들어가서 바꿔도 되고
sudo vi /etc/containerd/config.toml
# 아래 명령어로 SystemdCgroup 옵션을 true 로 바꿔줘도 됨.
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">Docker 설치 (옵션)</h3>



<pre class="wp-block-code"><code># Docker 설치 -- 옵션 : kubernetes runtime 에는 현재 Docker가 아닌
# Containerd 가 사용되고 있음. 
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb &#091;arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release &amp;&amp; echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null
sudo apt-get update

# Docker 최신 버전 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Docker 설치 확인
sudo docker run hello-world</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">필요 패키지 설치</h3>



<pre class="wp-block-code"><code>sudo apt install -y apt-transport-https gnupg-agent software-properties-common
curl -s https://packagsudo apt ines.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">쿠버네티스 설치</h3>



<pre class="wp-block-code"><code># kubernetes 저장소 도메인 변경됨.
echo "deb &#091;signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

# kubernetes 설치
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
# kubelet kubeadm kubectl 의 update 를 막음
sudo apt-mark hold kubelet kubeadm kubectl

# kubelet 재시작
sudo systemctl daemon-reload
sudo systemctl restart kubelet
sudo systemctl enable kubelet


# 클러스터 초기화 전 IP포워딩 활성화 필요 (안하면 init 과정에서 오류남. 마스터, 워커 모두 적용)
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">클러스터 초기화 (생성)</h3>



<p>이 부분만 간략하게 설명을 해야겠다. 처음으로 나온 커스텀이 필요한 영역이라.<br>아래 명령어에 &#8211;pod-network-cidr=172.16.0.0/16 는 pod 가 사용할 IP 대역을 설정하는 것이기 때문에 생략해도 생성이 된다. 생략할 경우 이후 네트워크 플러그인 (플러그인이라니깐 마치 옵션 같지만 필수로 설치해야한다)을 설치 할 때 지정하거나 플러그인의 기본 CIDR 를 사용하게 된다.</p>



<p>CIDR 를 뭘 쓸지 고민된다면 우리집 사설 네트워크 IP CIDR 와 명확히 구분될 수 있는 것으로 지정하는게 좋다.</p>



<p>예를들면 우리집 공유기 아래 단말의 사설 IP 대역이 192.168.0.0/16 이라면</p>



<p>10.0.0.0/8 이나 172.16.0.0/12 대역으로 사용해서 명확히 구분되도록 지정하면 좋겠다. (헷갈리지 않기 위해서)</p>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary>사설 IP주소에 대한 GPT 형님의 답변</summary>
<h3 class="wp-block-heading">1. <strong>10.0.0.0/8</strong></h3>



<ul class="wp-block-list">
<li><strong>IP 범위</strong>: 10.0.0.0 &#8211; 10.255.255.255</li>



<li><strong>서브넷 마스크</strong>: 255.0.0.0 (또는 /8)</li>



<li><strong>호스트 수</strong>: 약 1,670만 개</li>



<li><strong>설명</strong>: 이 대역은 대규모 네트워크에서 주로 사용됩니다. 하나의 대역에 대규모 네트워크를 설정할 수 있어, 주로 대기업이나 큰 네트워크 환경에서 사용됩니다. 예를 들어, 대규모 사무실이나 대기업의 내부 네트워크에서 여러 부서가 이 범위를 나누어 사용할 수 있습니다.</li>
</ul>



<h3 class="wp-block-heading">2. <strong>172.16.0.0/12</strong></h3>



<ul class="wp-block-list">
<li><strong>IP 범위</strong>: 172.16.0.0 &#8211; 172.31.255.255</li>



<li><strong>서브넷 마스크</strong>: 255.240.0.0 (또는 /12)</li>



<li><strong>호스트 수</strong>: 약 104만 개</li>



<li><strong>설명</strong>: 이 대역은 중규모 네트워크에서 자주 사용됩니다. 예를 들어, 중소기업의 네트워크에서 부서 간의 구분 없이 전체적으로 사용할 수 있습니다. 이 범위는 비교적 다양한 용도로 활용되며, 가정용 라우터보다는 주로 기업 환경에서 사용됩니다.</li>
</ul>



<h3 class="wp-block-heading">3. <strong>192.168.0.0/16</strong></h3>



<ul class="wp-block-list">
<li><strong>IP 범위</strong>: 192.168.0.0 &#8211; 192.168.255.255</li>



<li><strong>서브넷 마스크</strong>: 255.255.0.0 (또는 /16)</li>



<li><strong>호스트 수</strong>: 약 6만 5천 개</li>



<li><strong>설명</strong>: 이 대역은 가정용 네트워크와 소규모 네트워크에서 매우 일반적으로 사용됩니다. 가정용 라우터나 소규모 사무실의 기본 IP 대역으로 널리 사용되며, 기본적으로 많은 가정용 라우터가 192.168.0.1 또는 192.168.1.1을 게이트웨이 주소로 사용합니다.</li>
</ul>
</details>



<pre class="wp-block-code"><code># Kubernetes 클러스터 초기화 * 마스터 노드만 실행
# sudo kubeadm init --pod-network-cidr=10.244.0.0/16
sudo kubeadm init --pod-network-cidr=172.16.0.0/16</code></pre>



<p>와우. 클러스터 생성이 됐다.<br>여기까지 정상이라면 대략 아래와 같은 문구가 나올 것이다.</p>



<pre class="wp-block-code"><code>kubeadm join 192.168.100.101:6443 --token qjuyl0.8lu10et30xfj6dep \
	--discovery-token-ca-cert-hash sha256:a2193b2b0481f4dc0e1def5835bcfa110848f7f39bee844b2dcb18defb63d59b</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">쿠버네티스 접근 정보 저장</h3>



<p>마스터 노드, 이후 추가할 워커 노드에도 적용이 필요하다.<br>root계정, 사용자 계정 모두 실행 필요.</p>



<pre class="wp-block-code"><code>mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">네트워크 애드온 설치</h3>



<p>네트워크 애드온은 여러 종류가 있다. 이중 Calico 를 이용한 설치를 진행한다.</p>



<pre class="wp-block-code"><code># calico 네트워크 애드온 설치
sudo kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml</code></pre>



<h3 class="wp-block-heading">노드 상태 확인</h3>



<pre class="wp-block-code"><code>kubectl get nodes</code></pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="788" height="112" src="https://blog.kwt.co.kr/wp-content/uploads/2024/08/image.png" alt="" class="wp-image-778"/></figure>



<p>이렇게 나오면 작업이 완료된 것.</p>



<p>여기서 명령어만 더 나열할까 하다가 이젠 부족한 지식을 채워넣고 갈 때가 된 것 같아 이쯤에서 끊어주는게 좋을 것 같다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p></p>
		<div class="wpulike wpulike-robeen " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="Like Button"
					data-ulike-id="775"
					data-ulike-nonce="c384a6912c"
					data-ulike-type="post"
					data-ulike-template="wpulike-robeen"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_775"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	<p>The post <a href="https://blog.kwt.co.kr/%ec%bf%a0%eb%b2%84%eb%84%a4%ed%8b%b0%ec%8a%a4-%ec%84%a4%ec%b9%98-%eb%ac%b4%ec%a7%80%ec%84%b1-%eb%b3%b5%eb%b6%99/">쿠버네티스 설치 (무지성 복붙)</a> appeared first on <a href="https://blog.kwt.co.kr"></a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kwt.co.kr/%ec%bf%a0%eb%b2%84%eb%84%a4%ed%8b%b0%ec%8a%a4-%ec%84%a4%ec%b9%98-%eb%ac%b4%ec%a7%80%ec%84%b1-%eb%b3%b5%eb%b6%99/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
