diff --git a/content/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md b/content/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md
new file mode 100644
index 0000000000..9e28b5b509
--- /dev/null
+++ b/content/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md
@@ -0,0 +1,321 @@
+---
+title: kubeadm 설치하기
+content_type: task
+weight: 10
+card:
+ name: setup
+ weight: 20
+ title: kubeadm 설정 도구 설치
+---
+
+
+
+
이 페이지에서는 `kubeadm` 툴박스를 설치하는 방법을 보여준다.
+이 설치 프로세스를 수행한 후 kubeadm으로 클러스터를 만드는 방법에 대한 자세한 내용은 [kubeadm을 사용하여 클러스터 생성하기](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/) 페이지를 참고한다.
+
+
+
+## {{% heading "prerequisites" %}}
+
+
+* 다음 중 하나를 실행하는 하나 이상의 머신이 필요하다.
+ - Ubuntu 16.04+
+ - Debian 9+
+ - CentOS 7+
+ - Red Hat Enterprise Linux (RHEL) 7+
+ - Fedora 25+
+ - HypriotOS v1.0.1+
+ - Flatcar Container Linux (2512.3.0으로 테스트됨)
+* 2 GB 이상의 램을 장착한 머신. (이 보다 작으면 사용자의 앱을 위한 공간이 거의 남지 않음)
+* 2 이상의 CPU.
+* 클러스터의 모든 머신에 걸친 전체 네트워크 연결. (공용 또는 사설 네트워크면 괜찮음)
+* 모든 노드에 대해 고유한 호스트 이름, MAC 주소 및 product_uuid. 자세한 내용은 [여기](#verify-mac-address)를 참고한다.
+* 컴퓨터의 특정 포트들 개방. 자세한 내용은 [여기](#check-required-ports)를 참고한다.
+* 스왑의 비활성화. kubelet이 제대로 작동하게 하려면 **반드시** 스왑을 사용하지 않도록 설정한다.
+
+
+
+
+
+## MAC 주소 및 product_uuid가 모든 노드에 대해 고유한지 확인 {#verify-mac-address}
+* 사용자는 `ip link` 또는 `ifconfig -a` 명령을 사용하여 네트워크 인터페이스의 MAC 주소를 확인할 수 있다.
+* product_uuid는 `sudo cat /sys/class/dmi/id/product_uuid` 명령을 사용하여 확인할 수 있다.
+
+일부 가상 머신은 동일한 값을 가질 수 있지만 하드웨어 장치는 고유한 주소를 가질
+가능성이 높다. 쿠버네티스는 이러한 값을 사용하여 클러스터의 노드를 고유하게 식별한다.
+이러한 값이 각 노드에 고유하지 않으면 설치 프로세스가
+[실패](https://github.com/kubernetes/kubeadm/issues/31)할 수 있다.
+
+## 네트워크 어댑터 확인
+
+네트워크 어댑터가 두 개 이상이고, 쿠버네티스 컴포넌트가 디폴트 라우트(default route)에서 도달할 수 없는
+경우, 쿠버네티스 클러스터 주소가 적절한 어댑터를 통해 이동하도록 IP 경로를 추가하는 것이 좋다.
+
+## iptables가 브리지된 트래픽을 보게 하기
+
+`br_netfilter` 모듈이 로드되었는지 확인한다. `lsmod | grep br_netfilter` 를 실행하면 된다. 명시적으로 로드하려면 `sudo modprobe br_netfilter` 를 실행한다.
+
+리눅스 노드의 iptables가 브리지된 트래픽을 올바르게 보기 위한 요구 사항으로, `sysctl` 구성에서 `net.bridge.bridge-nf-call-iptables` 가 1로 설정되어 있는지 확인해야 한다. 다음은 예시이다.
+
+```bash
+cat <}}을 사용한다.
+
+{{< tabs name="container_runtime" >}}
+{{% tab name="리눅스 노드" %}}
+
+기본적으로, 쿠버네티스는
+{{< glossary_tooltip term_id="cri" text="컨테이너 런타임 인터페이스">}}(CRI)를
+사용하여 사용자가 선택한 컨테이너 런타임과 인터페이스한다.
+
+런타임을 지정하지 않으면, kubeadm은 잘 알려진 유닉스 도메인 소켓 목록을 검색하여
+설치된 컨테이너 런타임을 자동으로 감지하려고 한다.
+다음 표에는 컨테이너 런타임 및 관련 소켓 경로가 나열되어 있다.
+
+{{< table caption = "컨테이너 런타임과 소켓 경로" >}}
+| 런타임 | 유닉스 도메인 소켓 경로 |
+|------------|-----------------------------------|
+| 도커 | `/var/run/docker.sock` |
+| containerd | `/run/containerd/containerd.sock` |
+| CRI-O | `/var/run/crio/crio.sock` |
+{{< /table >}}
+
+
+도커와 containerd가 모두 감지되면 도커가 우선시된다. 이것이 필요한 이유는 도커 18.09에서
+도커만 설치한 경우에도 containerd와 함께 제공되므로 둘 다 감지될 수 있기
+때문이다.
+다른 두 개 이상의 런타임이 감지되면, kubeadm은 오류와 함께 종료된다.
+
+kubelet은 빌트인 `dockershim` CRI 구현을 통해 도커와 통합된다.
+
+자세한 내용은 [컨테이너 런타임](/ko/docs/setup/production-environment/container-runtimes/)을
+참고한다.
+{{% /tab %}}
+{{% tab name="다른 운영 체제" %}}
+기본적으로, kubeadm은 컨테이너 런타임으로 {{< glossary_tooltip term_id="docker" >}}를 사용한다.
+kubelet은 빌트인 `dockershim` CRI 구현을 통해 도커와 통합된다.
+
+자세한 내용은 [컨테이너 런타임](/ko/docs/setup/production-environment/container-runtimes/)을
+참고한다.
+{{% /tab %}}
+{{< /tabs >}}
+
+
+## kubeadm, kubelet 및 kubectl 설치
+
+모든 머신에 다음 패키지들을 설치한다.
+
+* `kubeadm`: 클러스터를 부트스트랩하는 명령이다.
+
+* `kubelet`: 클러스터의 모든 머신에서 실행되는 파드와 컨테이너 시작과
+ 같은 작업을 수행하는 컴포넌트이다.
+
+* `kubectl`: 클러스터와 통신하기 위한 커맨드 라인 유틸리티이다.
+
+kubeadm은 `kubelet` 또는 `kubectl` 을 설치하거나 관리하지 **않으므로**, kubeadm이
+설치하려는 쿠버네티스 컨트롤 플레인의 버전과 일치하는지
+확인해야 한다. 그렇지 않으면, 예상치 못한 버그 동작으로 이어질 수 있는
+버전 차이(skew)가 발생할 위험이 있다. 그러나, kubelet과 컨트롤 플레인 사이에 _하나의_
+마이너 버전 차이가 지원되지만, kubelet 버전은 API 서버 버전 보다
+높을 수 없다. 예를 들어, 1.7.0 버전의 kubelet은 1.8.0 API 서버와 완전히 호환되어야 하지만,
+그 반대의 경우는 아니다.
+
+`kubectl` 설치에 대한 정보는 [kubectl 설치 및 설정](/ko/docs/tasks/tools/install-kubectl/)을 참고한다.
+
+{{< warning >}}
+이 지침은 모든 시스템 업그레이드에서 모든 쿠버네티스 패키지를 제외한다.
+이는 kubeadm 및 쿠버네티스를
+[업그레이드 하는 데 특별한 주의](/ko/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/)가 필요하기 때문이다.
+{{ warning >}}
+
+버전 차이에 대한 자세한 내용은 다음을 참고한다.
+
+* 쿠버네티스 [버전 및 버전-차이 정책](/docs/setup/release/version-skew-policy/)
+* Kubeadm 관련 [버전 차이 정책](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#version-skew-policy)
+
+{{< tabs name="k8s_install" >}}
+{{% tab name="Ubuntu, Debian 또는 HypriotOS" %}}
+```bash
+sudo apt-get update && sudo apt-get install -y apt-transport-https curl
+curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
+cat <}}
+`DOWNLOAD_DIR` 변수는 쓰기 가능한 디렉터리로 설정되어야 한다.
+Flatcar Container Linux를 실행 중인 경우, `DOWNLOAD_DIR=/opt/bin` 을 설정한다.
+{{< /note >}}
+
+```bash
+DOWNLOAD_DIR=/usr/local/bin
+sudo mkdir -p $DOWNLOAD_DIR
+```
+
+crictl 설치(kubeadm / Kubelet 컨테이너 런타임 인터페이스(CRI)에 필요)
+
+```bash
+CRICTL_VERSION="v1.17.0"
+curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-amd64.tar.gz" | sudo tar -C $DOWNLOAD_DIR -xz
+```
+
+`kubeadm`, `kubelet`, `kubectl` 설치 및 `kubelet` systemd 서비스 추가
+
+```bash
+RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)"
+cd $DOWNLOAD_DIR
+sudo curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/amd64/{kubeadm,kubelet,kubectl}
+sudo chmod +x {kubeadm,kubelet,kubectl}
+
+RELEASE_VERSION="v0.4.0"
+curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service
+sudo mkdir -p /etc/systemd/system/kubelet.service.d
+curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
+```
+
+`kubelet` 활성화 및 시작
+
+```bash
+systemctl enable --now kubelet
+```
+
+{{< note >}}
+Flatcar Container Linux 배포판은 `/usr` 디렉터리를 읽기 전용 파일시스템으로 마운트한다.
+클러스터를 부트스트랩하기 전에, 쓰기 가능한 디렉터리를 구성하기 위한 추가 단계를 수행해야 한다.
+쓰기 가능한 디렉터리를 설정하는 방법을 알아 보려면 [Kubeadm 문제 해결 가이드](/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/#usr-mounted-read-only/)를 참고한다.
+{{< /note >}}
+{{% /tab %}}
+{{< /tabs >}}
+
+
+kubelet은 이제 kubeadm이 수행할 작업을 알려 줄 때까지 크래시루프(crashloop) 상태로
+기다려야 하므로 몇 초마다 다시 시작된다.
+
+## 컨트롤 플레인 노드에서 kubelet이 사용하는 cgroup 드라이버 구성
+
+도커를 사용할 때, kubeadm은 kubelet 용 cgroup 드라이버를 자동으로 감지하여
+런타임 중에 `/var/lib/kubelet/config.yaml` 파일에 설정한다.
+
+다른 CRI를 사용하는 경우, 다음과 같이 `cgroupDriver` 값을 `kubeadm init` 에 전달해야 한다.
+
+```yaml
+apiVersion: kubelet.config.k8s.io/v1beta1
+kind: KubeletConfiguration
+cgroupDriver:
+```
+
+자세한 내용은 [구성 파일과 함께 kubeadm init 사용](/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file)을 참고한다.
+
+`cgroupfs` 가 이미 kubelet의 기본값이기 때문에, 사용자의
+CRI cgroup 드라이버가 `cgroupfs` 가 아닌 **경우에만** 위와 같이 설정해야 한다.
+
+{{< note >}}
+`--cgroup-driver` 플래그가 kubelet에 의해 사용 중단되었으므로, `/var/lib/kubelet/kubeadm-flags.env`
+또는 `/etc/default/kubelet`(RPM에 대해서는 `/etc/sysconfig/kubelet`)에 있는 경우, 그것을 제거하고 대신 KubeletConfiguration을
+사용한다(기본적으로 `/var/lib/kubelet/config.yaml` 에 저장됨).
+{{< /note >}}
+
+CRI-O 및 containerd와 같은 다른 컨테이너 런타임에 대한 cgroup 드라이버의
+자동 감지에 대한 작업이 진행 중이다.
+
+
+## 문제 해결
+
+kubeadm에 문제가 있는 경우, [문제 해결 문서](/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/)를 참고한다.
+
+## {{% heading "whatsnext" %}}
+
+
+* [kubeadm을 사용하여 클러스터 생성](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/)