참고:

우분투(Ubuntu) 환경에 Kubeadm으로 Kubernetes 클러스터(cluster) 설치하기

우분투(ubuntu) 환경에서 Kubeadm(kubeadm)을 사용하여 kubernetes cluster를 설치하는 방법을 소개합니다.

Kubeadm: kubeadm이란, kubernetes에서 제공하는 기본적인 도구이며, kubernetes 클러스터를 가장 빨리 구축하기 위한 다양한 기능을 제공한다.

docker 설치

### docker 설치

sudo apt-get update

sudo apt-get install docker.io

sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

### docker 그룹 권한 부여

sudo groupadd docker

sudo usermod -aG docker $USER

newgrp docker

package 로 kubeadm , kubelet, kubectl 설치

# apt update
# apt install -y apt-transport-https ca-certificates curl
# curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg <https://packages.cloud.google.com/apt/doc/apt-key.gpg>
# echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] <https://apt.kubernetes.io/> kubernetes-xenial main" | tee /etc/apt/sources.list.d/kubernetes.list
# apt update
# apt install -y kubelet kubeadm kubectl
# apt-mark hold kubelet kubeadm kubectl

kubeadm init 명령어로 master node 초기화

sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=$(hostname-i)

위 ‘–pod-network-cidr=10.244.0.0/16’ 옵션은 pod 통신을 위해 pod network add-on인 flannel CNI 설정입니다.

flannel은 레이어(layer) 3 네트워크(network) 패브릭(fabric)을 구성하는 kubernetes를 위한 오버레이(overlay) network입니다. 자세한 설명은 https://github.com/flannel-io/flannel 페이지를 참고하시기 바랍니다.

CNI((Container Network Interface, cni)는 linux container에서 network interface를 구성하기 위해 필요한 플러그인(plugin)에 대한 사양(specification) 및 라이브러리(library)로 구성된 CNCF(Cloud Native Computing Foundation)에서 관리하는 프로젝트이며, GO 언어로 개발되었습니다. 자세한 설명은 https://github.com/containernetworking/cni 페이지를 참고하시기 바랍니다

sudo kubeadm join 100.0.0.94:6443 --token gkht6m.xuwz56etrnuhkyk1 \\
--discovery-token-ca-cert-hash sha256:179e2a7ccc4c7cbd71975d77303e3beb6b2f84dd5c2253785156f9771cdf6910

위 내용 복사해둬야함

에러 발생시

sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

*# kubelet가 실행인지 확인*

sudo systemctl status kubelet

*# 실행중이 아닐 경우*

sudo systemctl start kubelet